Die Adresse, an die der Anmeldedienst zurueckschickt, wurde aus der Anfrage abgeleitet. Hinter einem Proxy ist das die INTERNE – http://10.0.0.5:8071/… –, denn uvicorn lief ohne --proxy-headers. Der Anmeldedienst haette die Rueckleitung abgewiesen, mit einer Meldung, die nicht sagt, woran es liegt. APP_PUBLIC_BASE_URL sagt es ihm jetzt ausdruecklich. Leer bleiben darf sie weiterhin: ohne Proxy und in der Entwicklung genuegt die Anfrage. Die Referenz-Unit bekommt zusaetzlich --proxy-headers. Das hilft neuen Installationen; bestehende ruehrt update.sh nicht an, deshalb ist die Einstellung der verlaessliche Weg. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
36 lines
1.5 KiB
Desktop File
36 lines
1.5 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.
|
||
# --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
|