From c295e7c67651b73bcc7f257891afab9cb85e1063 Mon Sep 17 00:00:00 2001 From: Markus Zimmerberger Date: Wed, 9 Sep 2026 17:34:10 +0200 Subject: [PATCH] first commit --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..477026a --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# PBT – Öffi-Erfahrungen (pbt.zisco.at) + +## Lokal auf der LXC einrichten + +```bash +cd /opt/pbt # oder wohin du die Dateien kopierst +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt + +export PBT_DATABASE_URL="postgresql://pbt_app:DEIN_PASSWORT@/pbt" +export PBT_SECRET_KEY="ein-langer-zufaelliger-string" + +python app.py # Testlauf auf Port 5000 +``` + +Beim ersten Start legt die App die Tabellen (`users`, `fahrten`) automatisch per +`db.create_all()` an – dafür braucht der User `pbt_app` `CREATE`-Rechte in der DB +(sollte durch `GRANT ALL PRIVILEGES ON DATABASE pbt TO pbt_app;` bereits gegeben sein). + +## Produktivbetrieb mit systemd + Gunicorn + +1. Projekt nach `/opt/pbt` kopieren, virtuelle Umgebung dort anlegen (s. oben). +2. `pbt.service` nach `/etc/systemd/system/pbt.service` kopieren, DB-URL und + Secret-Key darin anpassen. +3. Aktivieren: + ```bash + systemctl daemon-reload + systemctl enable --now pbt + systemctl status pbt + ``` + Die App lauscht dann intern auf `127.0.0.1:8000`. + +## Caddy-Eintrag + +In der Caddy-LXC in der Caddyfile ergänzen: + +``` +pbt.zisco.at { + reverse_proxy 10.10.10.24:8000 +} +``` + +(IP durch die tatsächliche Adresse der `pbt`-LXC ersetzen.) Danach: + +```bash +systemctl reload caddy +``` + +Caddy holt sich das TLS-Zertifikat für `pbt.zisco.at` automatisch über Let's Encrypt, +sofern die Domain öffentlich auf die Caddy-LXC zeigt.