85 lines
3.0 KiB
Markdown
85 lines
3.0 KiB
Markdown
# Server
|
|
|
|
Netcup-Server erreichbar per SSH-Key:
|
|
- IP: 185.162.249.159
|
|
- Hostname: v2202605360184461552.supersrv.de
|
|
- User: root
|
|
- Befehl: `ssh root@185.162.249.159`
|
|
- Key: ~/.ssh/id_ed25519
|
|
|
|
## Laufende Dienste
|
|
|
|
| Dienst | URL | Installationspfad |
|
|
|--------|-----|--------------------|
|
|
| Gitea | http://185.162.249.159:3000/ | /opt/gitea (binary, systemd user: git) |
|
|
| Chatwoot | http://185.162.249.159:3001/ | /opt/chatwoot (docker compose) |
|
|
| Open WebUI | http://185.162.249.159:3002/ | /opt/openwebui (docker compose) |
|
|
| Ollama | localhost:11434 | systemd service, user: ollama |
|
|
|
|
## OpenCode API-Zugang
|
|
|
|
- **Base URL**: `http://185.162.249.159:3002/ollama/v1` (OpenWebUI Ollama-Proxy)
|
|
- **API Key**: sk-ce343adf68855a8df4c991dde4d4e2b27c61d883915fb6db
|
|
- Direkter Ollama-Zugriff (Port 11434) per iptables nur für localhost + Docker
|
|
|
|
## OpenWebUI-Fix (v0.9.5)
|
|
|
|
Bug: externe API-Calls crashen mit `'NoneType' object has no attribute 'startswith'`.
|
|
Gepatchte Dateien (in docker-compose.yml als Volume gemountet):
|
|
- `/opt/openwebui/middleware.py` — None-Checks vor `metadata['chat_id'].startswith()`
|
|
- `/opt/openwebui/socket_main.py` — `(request_info.get('chat_id') or '').startswith()`
|
|
|
|
## Docker
|
|
|
|
Alle Docker-Dienste in /opt/<name>/ mit docker compose steuern:
|
|
- `docker compose pull && docker compose up -d` zum Updaten
|
|
- Volumes bleiben bei Updates erhalten
|
|
|
|
## Hermes Agent (Server)
|
|
|
|
Läuft als systemd-Service auf dem `hermes` User. Vollständig isoliert, kein sudo.
|
|
|
|
- **Pfad:** /home/hermes/hermes-agent (git clone)
|
|
- **Config:** /home/hermes/.hermes/config.yaml + .env
|
|
- **Service:** `systemctl start/stop/restart hermes-gateway`
|
|
- **Gateway-Log:** journalctl -u hermes-gateway -f
|
|
- **Agent-Log:** /home/hermes/.hermes/logs/agent.log
|
|
|
|
### Hermes warten
|
|
|
|
```bash
|
|
# Service steuern
|
|
ssh root@185.162.249.159 systemctl stop hermes-gateway # Stoppen
|
|
ssh root@185.162.249.159 systemctl start hermes-gateway # Starten
|
|
ssh root@185.162.249.159 systemctl status hermes-gateway # Status
|
|
|
|
# Update via pip
|
|
ssh root@185.162.249.159 'su - hermes -c "/home/hermes/venv/bin/pip install --upgrade -e /home/hermes/hermes-agent"'
|
|
|
|
# Config editieren
|
|
ssh hermes@185.162.249.159 'nano /home/hermes/.hermes/.env'
|
|
ssh hermes@185.162.249.159 '/home/hermes/venv/bin/hermes config edit'
|
|
```
|
|
|
|
### Sicherheitskonzept
|
|
|
|
- Hermes hat nur einen SSH-Key (dein Laptop-Key)
|
|
- Kein sudo-Zugriff (via sudoers blockiert)
|
|
- Keine outbound-Ports zu anderen Diensten (systemd hardening)
|
|
- PrivateTemp, ProtectSystem=strict, keine Capabilities
|
|
- Keine Messaging-Plattformen (Telegram/Discord/Slack deaktiviert)
|
|
- API-Key geschützt in .env (chmod 600)
|
|
- Ollama Cloud Auth via SSH-Key (~hermes/.ollama/id_ed25519, Kopie von ollama user)
|
|
|
|
## Ollama Cloud-Modelle
|
|
|
|
Authentifiziert via SSH-Key (~ollama/.ollama/id_ed25519).
|
|
Modelle werden per `ollama pull <name>:cloud` bezogen.
|
|
|
|
## Server-User
|
|
|
|
- stephan, steffen (Passwort-Login)
|
|
- git (Gitea system user)
|
|
- ollama (Ollama system user)
|
|
- hermes (Hermes Agent SSH sandbox, Workspace: /home/hermes/workspace)
|