Files
2026-05-22 23:25:48 +02:00

5.3 KiB

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
SearchTool https://search.datenhimmel.work /opt/search-tool (docker compose)

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()

SearchTool (Eigene Web-Suche)

Selbst gehostete Such-API mit SearXNG (5 Engine: Google, Brave, DDG, Bing, Wikipedia) + Playwright-Fallback für JS-Seiten + Redis-Cache + Tor-Proxy (optional).

  • URL: https://search.datenhimmel.work
  • API Key: 375f7a6d3fa09c45a76df8d497ca14c9aafc60ee931fc17fdb7e602d5074589b
  • Pfad: /opt/search-tool (docker compose)
  • Repo: git@185.162.249.159:danielkrause/search-tool.git
  • Endpoints: POST /search (Web-Suche), POST /extract (Content-Extraction), GET /health
  • Hermes-Integration: Plugin in /home/hermes/hermes-agent/plugins/web/searchtool/ — web.search_backend: searchtool
# Suche
curl -X POST https://search.datenhimmel.work/search \
  -H "Authorization: Bearer 375f7a6d3fa09..." \
  -H "Content-Type: application/json" \
  -d '{"q": "Suchbegriff", "include_content": true}'

# Steuern
ssh root@185.162.249.159 'cd /opt/search-tool && docker compose up -d'

Docker

Alle Docker-Dienste in /opt// 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

# 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.

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

# 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)

Server-User

  • stephan, steffen (Passwort-Login)
  • git (Gitea system user)
  • ollama (Ollama system user)
  • hermes (Hermes Agent SSH sandbox, Workspace: /home/hermes/workspace)