# 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://: erreichbar; 127.0.0.1 beschränkt # ihn auf einen Reverse-Proxy auf demselben Host. # --proxy-headers: Hinter einem Reverse Proxy sieht der Dienst sonst nur dessen # interne Adresse. Fuer die Rueckleitung der SSO-Anmeldung zaehlt aber die # oeffentliche – setz zusaetzlich APP_PUBLIC_BASE_URL, dann ist sie eindeutig. ExecStart=/opt/certain-finance/backend/.venv/bin/uvicorn app.main:app --host ${APP_BIND_HOST} --port ${APP_PORT} --proxy-headers --forwarded-allow-ips=* 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