Grundgerüst für Certain Finance: - Backend: FastAPI + SQLAlchemy + SQLite, Alembic-Migrationen (Batch-Mode), argon2-Passwort-Hashing, server-seitige Sitzungen im Cookie, Erst-Admin, Benutzerverwaltung mit Temporär-Passwort, Einstellungen je Benutzer. - Ein Prozess, ein Port: uvicorn liefert API (/api) und gebautes SPA aus, inkl. SPA-Deeplink-Fallback. - Frontend: React 18 + Vite + JSX, Design-Tokens (Light/Dark), i18n DE/EN, Inline-SVG-Icons (keine Emojis), Login, Passwort-ändern, Dashboard-Platzhalter, Benutzer- und Einstellungsseiten. - Deploy: nativer LXC-Installer + Update-Skript (systemd), env-Vorlage, Doku. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
970 B
Desktop File
32 lines
970 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
|
||
# Der Port kommt aus der EnvironmentFile (APP_PORT). Nur an 127.0.0.1 gebunden –
|
||
# von außen ist der Dienst ausschließlich über den Nginx Proxy Manager erreichbar.
|
||
ExecStart=/opt/certain-finance/backend/.venv/bin/uvicorn app.main:app --host 127.0.0.1 --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
|