deploy: Gateway als systemd-User-Dienst (Vorlage + Anleitung)
Vorlage deploy/voice-assistant.user.service + Anleitung (loginctl enable-linger, systemctl --user). Laeuft ohne root und ueberlebt Logout/Reboot; .env wird aus dem WorkingDirectory gelesen. va_llm-Container kommt via Docker restart-policy hoch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6073ba1133
commit
77026bff1b
2 changed files with 40 additions and 0 deletions
|
|
@ -21,6 +21,19 @@ Topologie: `https://va.linix.de` → nginx@YunoHost (TLS, SSO) → über LAN →
|
|||
> **direkte Quell-IP** (= der Proxy). Würde uvicorn den Client aus
|
||||
> `X-Forwarded-For` überschreiben, schlüge der Proxy-IP-Check fehl.
|
||||
|
||||
**Dauerhaft laufen lassen (systemd-User-Dienst, ohne root):** Vorlage
|
||||
`deploy/voice-assistant.user.service`. Die App liest `.env` aus dem WorkingDirectory.
|
||||
```bash
|
||||
cp deploy/voice-assistant.user.service ~/.config/systemd/user/voice-assistant.service
|
||||
loginctl enable-linger "$USER" # sudo -> ueberlebt Logout/Reboot
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now voice-assistant
|
||||
systemctl --user status voice-assistant
|
||||
journalctl --user -u voice-assistant -f # Logs
|
||||
```
|
||||
> Der llama.cpp-Container `va_llm` läuft separat via Docker (`restart unless-stopped`)
|
||||
> und kommt nach einem Reboot von selbst hoch.
|
||||
|
||||
## 2. Drei Sicherheits-Pflichten
|
||||
1. **Bind:** Gateway nur an die LAN-IP (Schritt 1).
|
||||
2. **Firewall:** Port 8003 der GPU-Box **nur** von der linix.de-IP erlauben, z. B.:
|
||||
|
|
|
|||
27
deploy/voice-assistant.user.service
Normal file
27
deploy/voice-assistant.user.service
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# systemd-User-Service (laeuft ohne root, ueberlebt Logout/Reboot mit linger).
|
||||
#
|
||||
# Installation:
|
||||
# cp deploy/voice-assistant.user.service ~/.config/systemd/user/voice-assistant.service
|
||||
# # Pfade unten ggf. anpassen
|
||||
# loginctl enable-linger "$USER" # sudo noetig -> ueberlebt Logout/Reboot
|
||||
# systemctl --user daemon-reload
|
||||
# systemctl --user enable --now voice-assistant
|
||||
# systemctl --user status voice-assistant
|
||||
#
|
||||
# Die App liest .env aus dem WorkingDirectory selbst (pydantic-settings) -> kein
|
||||
# EnvironmentFile noetig. Der llama.cpp-Container (va_llm) laeuft separat via Docker
|
||||
# (restart unless-stopped); lokale Modelle werden beim Start vorgeladen (Warm-up).
|
||||
|
||||
[Unit]
|
||||
Description=Voice Assistant Gateway (user service)
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/home/dschlueter/my_voice_assistant_v2/voice-assistant-scaffold
|
||||
ExecStart=/home/dschlueter/my_voice_assistant_v2/voice-assistant-scaffold/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8003
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
Loading…
Add table
Add a link
Reference in a new issue