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
|
> **direkte Quell-IP** (= der Proxy). Würde uvicorn den Client aus
|
||||||
> `X-Forwarded-For` überschreiben, schlüge der Proxy-IP-Check fehl.
|
> `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
|
## 2. Drei Sicherheits-Pflichten
|
||||||
1. **Bind:** Gateway nur an die LAN-IP (Schritt 1).
|
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.:
|
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