Hermes-agent: Inställning av headless server och fjärrskrivbord
Headless Hermes-server med fjärrskrivbordsåtkomst
Att köra Hermes Agent på en headless-server samtidigt som du ansluter från en skrivbordsklient på en annan maskin kräver två serverprocesser och en enda klientanslutning.
Arkitekturen separerar Hermes backend i två serverprocesser och en klientbaserad yta. hermes serve-backenden hanterar API- och dashboard-anslutningar, medan hermes gateway run-processen hanterar meddelandekanaler oberoende. Skrivbordsklienten ansluter till serve-backenden, inte till gateway.
--host 0.0.0.0
:9119"] gateway["hermes gateway run
Telegram, Discord, Slack"] end subgraph Client["DESKTOP PC"] desktop["hermes desktop
(WebSocket-anslutning)"] end desktop <--->|WebSocket| serve gateway -.->|Delar ~/.hermes/| serve
Två processer på servern, en app på klienten. Båda serverprocesserna delar samma ~/.hermes/-konfiguration, färdigheter, minne och sessioner. Cron-jobb körs på servern där gateway körs.

För installation, leverantörsinställningar och initial konfiguration, börja med Hermes AI Assistant — Install, Setup, Workflow, and Troubleshooting.
Ställ in headless-servern
1. Konfigurera autentisering
Basic auth tillger tillräckligt skydd för ett betrodd LAN. Lägg till inloggningsuppgifter i miljöfilen:
cat >> ~/.hermes/.env << 'EOF'
HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=välj-ett-starkt-lösenord
HERMES_DASHBOARD_BASIC_AUTH_SECRET=$(openssl rand -base64 32)
EOF
chmod 600 ~/.hermes/.env
.env-filen finns bredvid config.yaml under ~/.hermes/. Hermes löser konfiguration med CLI-överkryddningar först, sedan config.yaml, sedan .env, och slutligen inbyggda standardvärden. Hemligheter ska finnas i .env.
2. Starta backenden
Kör serve-backenden på alla gränssnitt:
hermes serve --host 0.0.0.0 --port 9119
Backenden lyssnar på port 9119 och accepterar WebSocket-anslutningar från skrivbordsklienten. Verifiera att den körs med en snabb statuskontroll:
curl -s http://localhost:9119/api/status | jq '.auth_required, .auth_providers'
# Förväntat: true "basic"
3. Kör som en systemd-tjänst
För en persistent server som överlever omstart, installera en användarnivå systemd-tjänst. Skapa enhetsfilen på /etc/systemd/user/hermes-serve.service:
[Unit]
Description=Hermes Agent Serve Backend
[Service]
EnvironmentFile=%h/.hermes/.env
ExecStart=/home/rg/.hermes/hermes-agent/venv/bin/python -m hermes_cli.main serve --host 0.0.0.0 --port 9119
Restart=on-failure
[Install]
WantedBy=default.target
Ladda om daemon, aktivera tjänsten och starta den:
systemctl --user daemon-reload
systemctl --user enable hermes-serve
systemctl --user start hermes-serve
Kontrollera tjänstens status:
systemctl --user status hermes-serve
4. Starta gateway
Gateway är en separat process som hanterar meddelandekanaler — Telegram, Discord, Slack och andra. Starta den oberoende:
hermes gateway run
Gateway och serve-backenden är två separata processer. Gateway hanterar sessioner, kör cron-jobb och routar meddelanden. Serve-backenden tillhandahåller API-ytan för skrivbords- och webdashboard-anslutningar. De delar samma hemkatalog men körs oberoende.
För den fullständiga listan över gateway-kommandon och subkommandon, se Hermes Agent CLI cheat sheet. Om ditt primära gränssnitt är mobilmeddelanden, kombinera denna installation med Hermes Voice Control from Your Phone för röstfirst-workflows ovanpå samma gateway-process.
5. Verifiera backenden
Bekräfta att backenden svarar och att autentisering är aktiv:
curl -s http://localhost:9119/api/status | jq '.auth_required, .auth_providers'
Förväntad utdata:
true
"basic"
Om autentisering inte är aktiverad kommer svaret att visa false för auth_required. Kontrollera att .env-filen innehåller korrekta variabler och att tjänsten har startats om efter konfigurationsändringar.
Anslut från skrivbordsklienten
Alternativ A: Hermes Desktop-app
Installera Hermes Desktop från officiella webbplatsen. Starta appen, navigera till Inställningar → Gateway → Remote gateway, och ange serveradressen:
http://<server-ip>:9119
Logga in med användarnamnet och lösenordet du konfigurerat på servern.
Alternativt, ställ in den fjrra URL:n via miljövariabel:
HERMES_DESKTOP_REMOTE_URL=http://<server-ip>:9119 hermes desktop
Alternativ B: Webdashboard
Öppna http://<server-ip>:9119 i en webbläsare och logga in med basic auth-uppgifterna. Webdashboardet tillhandahåller ett webbläsarbaserat gränssnitt till Hermes backenden utan att kräva en skrivbordsinstallation.
Alternativ C: CLI
Från skrivbordsdatorns terminal, konfigurera den fjrra URL:n via skrivbordsappens inställningar eller HERMES_DESKTOP_REMOTE_URL-miljövariabeln. CLI-ytan ansluter genom samma WebSocket-kanal som skrivbordsappen.
Nätverks- och säkerhetsaspekter
| Scenario | Rekommendation |
|---|---|
| Betrodd LAN | --host 0.0.0.0 + basic auth |
| Exponerad mot internet | Använd Tailscale (--host <tailscale-ip>) eller OAuth-leverantör |
| Firewall | Öppna port 9119 TCP på servern |
För ett betrodd lokalt nätverk är basic auth på 0.0.0.0 tillräckligt. Om servern är exponerad mot internet, använd Tailscale för att binda till Tailscale-IP istället för 0.0.0.0, eller konfigurera en OAuth-leverantör för starkare autentisering. Öppna alltid port 9119 TCP i serverns firewall när backenden behöver acceptera externa anslutningar.
Viktiga processdistinktioner
Att förstå separationen mellan de två serverprocesserna förhindrar vanliga konfigurationsfel:
hermes serve— Backenden som skrivbordsappen och webdashboardet ansluter till. Hanterar API-ytan och WebSocket-anslutningar.hermes gateway run— Processen som hanterar Telegram, Discord, Slack och andra meddelandekanaler. Hanterar sessioner, kör cron-jobb och routar meddelanden.- Dessa är två separata processer på servern. De delar
~/.hermes/-konfiguration, färdigheter, minne och sessioner, men körs oberoende. - Cron-jobb körs på servern där gateway körs.
- Profiler, färdigheter och minne konfigureras på serversidan. Klienten ansluter till den redan konfigurerade backenden.
För profilfirst-konfiguration och färdigheter avpassade för olika produktionsroller, se Hermes AI Assistant Skills for Real Production Setups.
Felsökning
Skrivbordet kan inte ansluta till servern
- Verifiera att backenden körs:
systemctl --user status hermes-serve - Kontrollera att porten är öppen:
ss -tlnp | grep 9119 - Testa från servern:
curl -s http://localhost:9119/api/status - Testa från klientmaskinen:
curl -s http://<server-ip>:9119/api/status - Om klienttestet misslyckas, kontrollera firewall-regler:
sudo ufw statusellersudo iptables -L
Autentisering misslyckas
- Bekräfta att
.env-filen har korrekta behörigheter:ls -la ~/.hermes/.env(ska vara600) - Verifiera att hemligheten genererades:
grep HERMES_DASHBOARD_BASIC_AUTH_SECRET ~/.hermes/.env - Starta om tjänsten efter konfigurationsändringar:
systemctl --user restart hermes-serve
Gateway svarar inte på meddelanden
Gateway är en separat process från backenden. Om skrivbordet ansluter men plattformar för meddelanden inte fungerar:
- Kontrollera gateway-status:
hermes gateway status - Starta gateway om den är stoppad:
hermes gateway start - Granska loggar:
hermes logs gateway -f
Referenser
- Hermes Agent Desktop App Documentation
- Hermes Agent Configuration Guide
- Hermes Agent Messaging Gateway
- Hermes AI Assistant — Install, Setup, Workflow, and Troubleshooting
- Hermes Agent CLI cheat sheet — commands, flags, and slash shortcuts
- Hermes AI Assistant Skills for Real Production Setups
Denna artikel är en del av AI Systems-klustret, som täcker self-hosted assistants, retrieval-arkitektur, lokal LLM-infrastruktur och observability.