Clone
1
Self hosting
Bjorn Blomberg edited this page 2026-06-28 18:17:34 +02:00

Hosta själv

Sätt upp hela agent-helm på din egen infrastruktur. Guiden är generisk — anpassa registry, reverse proxy och CI till din stack. (Den fullständiga referens-uppsättningen med Pi5 + Dockge + Nginx Proxy Manager finns i repots deploy/DEPLOY.md.)

Vill du bara koppla upp mot en server som redan finns? Se Anslut.

Du behöver

  • En Docker-host för servern.
  • En reverse proxy med TLS och WebSocket-stöd (Nginx Proxy Manager, Caddy, Traefik …) samt ett domännamn.
  • (Valfritt) en container-registry och Gitea Actions för automatiska byggen.

1. Token (gör först)

Generera en stark slumpad hemlighet. Den är enda åtkomstgrinden till sessionerna. Lägg den i serverns miljö och i varje klients config — aldrig i git.

2. Servern

Bygg image:n från repots Dockerfile (eller via CI, se steg 5) och kör den. Det finns en färdig compose i deploy/agent-helm.compose.yaml:

  • env: AGENT_HELM_TOKEN=<din token>, PORT=8787, DATA_DIR=/app/data
  • expose: 8787 (ingen host-port — reverse proxyn binder publikt)
  • volym: <host-katalog>:/app/data — skapa den före start och äg den som uid 1000 (containern kör som uid 1000), annars kan appen inte skriva. Hit hamnar framtida db/auth.

Servern serverar den inbyggda web-frontenden och WebSocket på samma port.

3. Reverse proxy

Peka din domän → agent-helm:8787. Slå på WebSocket-stöd (annars laddar UI:t men sessioner kopplar aldrig upp) och TLS (t.ex. Let's Encrypt). Klienterna ansluter sedan till wss://din-domän.

4. Klienterna

Bygg klient-binärerna (repots release-workflow, eller pkg lokalt) och installera dem med install.sh. Peka klientens SERVER_URL på din domän. Binären är självständig (Node + node-pty inbäddat) för linux x64/arm64.

5. CI (valfritt men rekommenderat)

Repot innehåller två Gitea Actions-workflows:

  • .gitea/workflows/build.yaml — på push till master: bygger server-image och pushar till din registry.
  • .gitea/workflows/release.yaml — på push till master: bygger klient-binärer (x64 + arm64 med pkg --no-bytecode, så de cross-byggs utan QEMU) och publicerar dem som en rullande latest-release. vX.Y.Z-taggar ger versionerade releaser.

Det kräver en Gitea Actions-runner i Docker (deploy/act-runner.{compose,config}.yaml). Runnern monterar värdens docker.sock och bygger nativt — kör den på en arm64-host om du vill ha arm64-images. Se deploy/DEPLOY.md för registrering och fallgropar.

Strukturerade godkännanden (hook)

Klienten kan ta emot verktygsgodkännanden via en BeforeTool-hook (agent-helm hook). Hooken pratar med daemonen över en endpoint som binder endast 127.0.0.1 — aldrig nåbar utifrån. Utan UI faller den tillbaka till AGENT_HELM_HOOK_DEFAULT (default allow).

Säkerhet

  • Token = enda åtkomstgrinden. Håll den hemlig, rotera vid läcka (byt på server + klienter). Lägg den aldrig i git — använd serverns/klientens lokala konfiguration.
  • Exponera bara via reverse proxyn (TLS). Ingen rå host-port behövs.
  • Hook-endpointen är loopback-only.
  • Om din registry saknar auth: håll den LAN-only.