Hosting
Hetzner
Obiettivo
Eseguire un Gateway OpenClaw persistente su una VPS Hetzner usando Docker, con stato durevole, binari integrati e comportamento di riavvio sicuro.
Se vuoi "OpenClaw 24/7 per circa 5 $", questa è la configurazione affidabile più semplice. I prezzi di Hetzner cambiano; scegli la VPS Debian/Ubuntu più piccola e scala verso l'alto se incontri errori OOM.
Promemoria sul modello di sicurezza:
- Gli agenti condivisi in azienda vanno bene quando tutti rientrano nello stesso perimetro di fiducia e il runtime è solo aziendale.
- Mantieni una separazione rigorosa: VPS/runtime dedicati + account dedicati; nessun profilo personale Apple/Google/browser/password manager su quell'host.
- Se gli utenti sono avversari tra loro, separa per gateway/host/utente OS.
Vedi Sicurezza e Hosting VPS.
Cosa stiamo facendo (in parole semplici)?
- Affittare un piccolo server Linux (VPS Hetzner)
- Installare Docker (runtime dell'app isolato)
- Avviare il Gateway OpenClaw in Docker
- Rendere persistenti
~/.openclaw+~/.openclaw/workspacesull'host (sopravvivono a riavvii/ricostruzioni) - Accedere alla Control UI dal tuo laptop tramite un tunnel SSH
Quello stato montato di ~/.openclaw include openclaw.json, per agente
agents/<agentId>/agent/auth-profiles.json e .env.
È possibile accedere al Gateway tramite:
- Inoltro porta SSH dal tuo laptop
- Esposizione diretta della porta se gestisci autonomamente firewall e token
Questa guida presuppone Ubuntu o Debian su Hetzner.
Se usi un'altra VPS Linux, mappa i pacchetti di conseguenza.
Per il flusso Docker generico, vedi Docker.
Percorso rapido (operatori esperti)
- Effettua il provisioning della VPS Hetzner
- Installa Docker
- Clona il repository OpenClaw
- Crea directory host persistenti
- Configura
.envedocker-compose.yml - Integra i binari richiesti nell'immagine
docker compose up -d- Verifica persistenza e accesso al Gateway
Cosa ti serve
- VPS Hetzner con accesso root
- Accesso SSH dal tuo laptop
- Familiarità di base con SSH + copia/incolla
- Circa 20 minuti
- Docker e Docker Compose
- Credenziali di autenticazione del modello
- Credenziali provider opzionali
- QR WhatsApp
- Token bot Telegram
- OAuth Gmail
Effettua il provisioning della VPS
Crea una VPS Ubuntu o Debian in Hetzner.
Connettiti come root:
ssh root@YOUR_VPS_IP
Questa guida presuppone che la VPS sia stateful. Non trattarla come infrastruttura usa e getta.
Installa Docker (sulla VPS)
apt-get update
apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh
Verifica:
docker --version
docker compose version
Clona il repository OpenClaw
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Questa guida presuppone che tu crei un'immagine personalizzata per garantire la persistenza dei binari.
Crea directory host persistenti
I container Docker sono effimeri. Tutto lo stato a lungo termine deve risiedere sull'host.
mkdir -p /root/.openclaw/workspace
# Set ownership to the container user (uid 1000):
chown -R 1000:1000 /root/.openclaw
Configura le variabili d'ambiente
Crea .env nella radice del repository.
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
GOG_KEYRING_PASSWORD=
XDG_CONFIG_HOME=/home/node/.openclaw
Imposta OPENCLAW_GATEWAY_TOKEN quando vuoi gestire il token stabile del gateway
tramite .env; altrimenti configura gateway.auth.token prima di
fare affidamento sui client tra i riavvii. Se nessuna delle due fonti esiste, OpenClaw usa
un token solo runtime per quell'avvio. Genera una password per il keyring e incollala
in GOG_KEYRING_PASSWORD:
openssl rand -hex 32
Non committare questo file.
Questo file .env è per l'env del container/runtime, come OPENCLAW_GATEWAY_TOKEN.
L'autenticazione OAuth/API-key dei provider archiviata risiede nel file montato
~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
Configurazione Docker Compose
Crea o aggiorna docker-compose.yml.
services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE}
build: .
restart: unless-stopped
env_file:
- .env
environment:
- HOME=/home/node
- NODE_ENV=production
- TERM=xterm-256color
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
- OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
- XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
- PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
# Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
# To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
"--allow-unconfigured",
]
--allow-unconfigured serve solo per comodità di bootstrap, non sostituisce una configurazione corretta del gateway. Imposta comunque l'autenticazione (gateway.auth.token o password) e usa impostazioni di bind sicure per il tuo deployment.
Passaggi runtime condivisi della VM Docker
Usa la guida runtime condivisa per il flusso comune dell'host Docker:
Accesso specifico per Hetzner
Dopo i passaggi condivisi di build e avvio, completa la seguente configurazione per aprire il tunnel:
Prerequisito: assicurati che la configurazione sshd della VPS consenta l'inoltro TCP. Se hai
irrigidito la configurazione SSH, controlla /etc/ssh/sshd_config e imposta:
AllowTcpForwarding local
local consente inoltri locali ssh -L dal tuo laptop bloccando
gli inoltri remoti dal server. Impostarlo su no farà fallire il tunnel
con:
channel 3: open failed: administratively prohibited: open failed
Dopo aver confermato che l'inoltro TCP è abilitato, riavvia il servizio SSH
(systemctl restart ssh) ed esegui il tunnel dal tuo laptop:
ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
Apri:
http://127.0.0.1:18789/
Incolla il segreto condiviso configurato. Questa guida usa il token del gateway per impostazione predefinita; se sei passato all'autenticazione con password, usa invece quella password.
La mappa di persistenza condivisa si trova in Runtime VM Docker.
Infrastructure as Code (Terraform)
Per i team che preferiscono flussi infrastructure-as-code, una configurazione Terraform mantenuta dalla community fornisce:
- Configurazione Terraform modulare con gestione dello stato remoto
- Provisioning automatizzato tramite cloud-init
- Script di deployment (bootstrap, deploy, backup/ripristino)
- Rafforzamento della sicurezza (firewall, UFW, accesso solo SSH)
- Configurazione del tunnel SSH per l'accesso al gateway
Repository:
- Infrastruttura: openclaw-terraform-hetzner
- Configurazione Docker: openclaw-docker-config
Questo approccio integra la configurazione Docker sopra con deployment riproducibili, infrastruttura versionata e ripristino di emergenza automatizzato.
Passaggi successivi
- Configura i canali di messaggistica: Canali
- Configura il Gateway: Configurazione Gateway
- Mantieni OpenClaw aggiornato: Aggiornamento