Go to file
Henrik Jess Nielsen f098c65ca0
Some checks failed
Build and Deploy PunktFri / build-and-deploy (push) Has been cancelled
Add deployment pipeline, Dockerfile, Nomad spec and tests
- Dockerfile: python:3.12-slim + gunicorn, dynamic port, BUILD_VERSION args
- punktfri.nomad: Traefik routing for punktfri.i80.dk, host volume for SQLite
- .gitea/workflows/deploy.yml: build/push to Harbor, deploy to Nomad
- Makefile: install/run/test/build targets
- tests/test_app.py: 9 pytest tests covering all routes and validation
- requirements.txt: add gunicorn
- requirements-dev.txt: pytest
- app.py: health endpoint returns version/commit info
2026-04-26 18:32:32 +02:00
2026-04-26 18:20:54 +02:00
2026-04-26 18:20:54 +02:00
2026-04-26 18:20:54 +02:00
2026-04-26 18:20:54 +02:00

PunktFri.dk

Flask landing page for PunktFri — a Danish non-profit registrar initiative for self-hosters.

Setup

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py

Visit http://localhost:5000

Environment variables

Variable Default Description
PORT 5000 Port to listen on
DATABASE punktfri.db SQLite database path
LOG_FILE signups.log Signup log file path
ADMIN_USER admin Admin username
ADMIN_PASS punktfri2024 Admin password

Change ADMIN_USER and ADMIN_PASS before deploying publicly.

Routes

  • / — Landing page + signup form
  • /tak — Confirmation page after signup
  • /admin — Signup table (HTTP Basic Auth)
  • /health — Health check (returns {"status": "ok"})

Data

Signups are stored in two places:

  • SQLite (punktfri.db) — queryable, used by /admin
  • Log file (signups.log) — append-only plaintext log

Both are created automatically on first run.

Admin

Visit http://localhost:5000/admin and enter the credentials above.

Description
No description provided
Readme 141 KiB
Languages
HTML 46.1%
CSS 35.6%
Python 11.7%
HCL 4.6%
Dockerfile 1.2%
Other 0.8%