Files
certain/deploy/certain-finance.service
T
GuidoandClaude Opus 4.8 2dd8f9cd35 fix: systemd ohne ProtectHome (venv unter /root sichtbar) + Phase-3-Backend
Deployment-Fixes (Dienst startete nicht -> 203/EXEC "uvicorn not found"):
- Unit ohne ProtectHome/ProtectSystem: Repo/venv dürfen unter /root oder /home
  liegen (ProtectHome=true blendete diese Pfade für den Dienst aus).
- install.sh: Python-3.11+-Prüfung mit klarer Meldung; prüft nach der Installation,
  dass uvicorn wirklich in der venv liegt.
- EZB-Kursabruf läuft beim Start jetzt im Hintergrund (blockiert den Start nie).

Phase-3-Backend (Dashboard):
- Modell + Migration 0004: dashboard_layouts (JSON-Layout je Nutzer).
- routers/dashboard: Layout speichern/laden/zurücksetzen + Kartendaten
  (Budget-Donut, Budget-Fortschritt, Einnahmen/Ausgaben, Kontostände,
  Vermögensverlauf, letzte Buchungen).
- Frontend-Infrastruktur: Chart-Komponenten (Donut/Line), palette, API-Methoden,
  react-grid-layout. (Dashboard-Seite folgt im nächsten Commit.)

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

33 lines
1.2 KiB
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. Bewusst KEIN ProtectHome/ProtectSystem: das Repo (inkl. venv) darf
# auch unter /root oder /home liegen; ProtectHome=true würde diese Pfade für den
# Dienst ausblenden und zu "Failed to locate executable .../uvicorn" führen.
NoNewPrivileges=true
PrivateTmp=true
ReadWritePaths=/var/lib/certain-finance
[Install]
WantedBy=multi-user.target