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>
33 lines
1020 B
Desktop File
33 lines
1020 B
Desktop File
# systemd-Unit für Certain Finance (Referenz).
|
|
# install.sh erzeugt die tatsächliche Unit unter /etc/systemd/system/certain-finance.service
|
|
# mit den konkreten Pfaden deines Klons. Diese Datei zeigt die Standardform
|
|
# (Repo unter /opt/certain-finance).
|
|
|
|
[Unit]
|
|
Description=Certain Finance
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=certain-finance
|
|
Group=certain-finance
|
|
WorkingDirectory=/opt/certain-finance/backend
|
|
EnvironmentFile=/etc/certain-finance/env
|
|
# Adresse/Port kommen aus der EnvironmentFile. APP_BIND_HOST=0.0.0.0 macht den
|
|
# Dienst direkt über http://<LXC-IP>:<APP_PORT> erreichbar; 127.0.0.1 beschränkt
|
|
# ihn auf einen Reverse-Proxy auf demselben Host.
|
|
ExecStart=/opt/certain-finance/backend/.venv/bin/uvicorn app.main:app --host ${APP_BIND_HOST} --port ${APP_PORT}
|
|
Restart=on-failure
|
|
RestartSec=3
|
|
|
|
# Härtung
|
|
NoNewPrivileges=true
|
|
ProtectSystem=full
|
|
ProtectHome=true
|
|
PrivateTmp=true
|
|
ReadWritePaths=/var/lib/certain-finance
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|