Files
certain/deploy/README.md
T
GuidoandClaude Opus 4.8 8ed4bf5254 feat: Phase 2 – Budget-Engine + Direktzugriff (http://IP:Port)
Budget:
- Modelle + Migration 0003: budget_template_lines, planned_income_lines,
  budget_periods, budget_period_lines.
- services/budget: Perioden-Grenzen (einstellbarer Starttag, Label nach Endmonat),
  Standard-Vorlage vs. Monats-Override (Snapshot-on-Customize), Soll/Ist inkl.
  budgetierter Sparen-Transfers, geplante Einnahmen (Soll/Ist).
- routers/budgets: Vorlage, geplante Einnahmen (CRUD), Monats-Soll/Ist,
  Monats-Override, Zurücksetzen. pytest: Perioden, Soll/Ist, Override/Reset, Einnahmen.
- Frontend: Budget-Seite (Monat + Standard-Budget), Fortschrittsbalken grün/rot,
  Monats-Navigation, editierbare Soll-Beträge; Sparen-Option im Transfer-Formular.

Deployment-Fix (Nutzer-Anforderung: http://IP:Port muss funktionieren):
- Dienst bindet an APP_BIND_HOST=0.0.0.0 (direkt im LAN erreichbar).
- APP_COOKIE_SECURE=false als Standard (sonst kein Login über reines HTTP);
  für reinen HTTPS-Betrieb umstellbar. Doku + install.sh entsprechend angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 19:16:27 +02:00

2.3 KiB
Raw Blame History

Deployment (Proxmox-LXC + Nginx Proxy Manager)

Installation

Im LXC (Debian/Ubuntu) das Repo klonen und als root installieren:

git clone <repo-url> /opt/certain-finance
cd /opt/certain-finance
sudo ./deploy/install.sh

Das Skript installiert Python/Node, richtet eine venv ein, baut das Frontend, erzeugt /etc/certain-finance/env (mit Zufallsgeheimnissen), legt den systemd- Dienst certain-finance an und startet ihn. Node wird nur zum Bauen gebraucht; der laufende Dienst ist reines Python.

Direktzugriff (http://IP:Port)

Standardmäßig lauscht der Dienst auf 0.0.0.0:<APP_PORT> (Standard-Port 8071) und ist damit direkt im LAN erreichbar: http://<LXC-IP>:8071. Dafür ist APP_COOKIE_SECURE=false gesetzt (sonst speichert der Browser die Sitzung über reines HTTP nicht). Möchtest du den Zugriff auf einen Reverse-Proxy auf demselben Host beschränken, setze APP_BIND_HOST=127.0.0.1 in /etc/certain-finance/env.

Optional: HTTPS über Nginx Proxy Manager

Wenn du von außen per HTTPS zugreifen willst, einen Proxy Host anlegen:

  • Domain Names: deine (Sub-)Domain
  • Scheme: http
  • Forward Hostname / IP: IP dieses LXC
  • Forward Port: Wert von APP_PORT (Standard 8071)
  • Block Common Exploits: an
  • Websockets Support: nicht nötig
  • SSL: Let's Encrypt-Zertifikat anfordern, „Force SSL" an

Für spätere CSV-/PDF-Uploads in den Advanced-Einstellungen des Hosts client_max_body_size 20m; setzen.

Bei ausschließlichem HTTPS-Zugriff kannst du APP_COOKIE_SECURE=true in /etc/certain-finance/env setzen (danach systemctl restart certain-finance) – dann werden die Sitzungs-Cookies nur über HTTPS gesendet. Für gemischten Zugriff (HTTP im LAN und HTTPS von außen) belasse es bei false.

Betrieb

systemctl status certain-finance      # Status
journalctl -u certain-finance -f      # Logs
systemctl restart certain-finance     # Neustart
sudo ./deploy/update.sh               # Update (git pull + build + Migration + Neustart)

Backup

Die Datenbank liegt unter /var/lib/certain-finance/app.db. update.sh legt vor jeder Migration automatisch eine Kopie unter /var/lib/certain-finance/backups/ an. Zusätzlich empfiehlt sich ein Proxmox-vzdump-Snapshot des Containers.