Henrik Jess Nielsen 347bbb748b
All checks were successful
Build and Deploy PunktFri / build-and-deploy (push) Successful in 1m20s
Update copy to post-July-2026 reality and notify on signups
- Rewrite copy from "this will happen" to "this has happened": direct
  registration closed 1 July 2026, transition ends 30 June 2028
- Fix timeline (30 June 2028, not 1 July), update FAQ + JSON-LD, add FAQ
  on registering new domains now
- Send signup notification mail to henrik@i80.dk via smtp.i80.dk, with
  credentials from Consul KV
- Fix CI health check URL (punktfri.dk)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-19 06:52:45 +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
NOTIFY_EMAIL henrik@i80.dk Receives a mail on every signup
SMTP_HOST (empty) SMTP server; notifications are skipped when unset
SMTP_PORT 587 SMTP port (STARTTLS)
SMTP_USER / SMTP_PASS (empty) SMTP login (Consul KV punktfri/smtp_user, punktfri/smtp_pass in Nomad)
SMTP_FROM SMTP_USER Sender address (Consul KV punktfri/smtp_from)

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 161 KiB
Languages
HTML 45.4%
CSS 32.8%
Python 15.1%
HCL 4.9%
Dockerfile 1.1%
Other 0.7%