Obiettivo: OpenClaw Gateway in esecuzione su una macchina Fly.io con archiviazione persistente, HTTPS automatico e accesso Discord/canale.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Cosa ti serve
- flyctl CLI installata
- Account Fly.io (il piano gratuito va bene)
- Autenticazione modello: chiave API per il provider di modelli scelto
- Credenziali dei canali: token del bot Discord, token Telegram, ecc.
Percorso rapido per principianti
- Clona il repo → personalizza
fly.toml - Crea app + volume → imposta i secret
- Distribuisci con
fly deploy - Accedi via SSH per creare la configurazione o usa la UI di controllo
Create the Fly app
lhr (Londra), iad (Virginia), sjc (San Jose).Configure fly.toml
Modifica L’immagine Docker di OpenClaw usa
fly.toml in base al nome e ai requisiti della tua app.Nota di sicurezza: La configurazione predefinita espone un URL pubblico. Per una distribuzione rafforzata senza IP pubblico, consulta Distribuzione privata o usa deploy/fly.private.toml.tini come entrypoint. I comandi di processo Fly sostituiscono il CMD Docker senza sostituire l’ENTRYPOINT, quindi il processo viene comunque eseguito sotto tini.Impostazioni chiave:| Impostazione | Perché |
|---|---|
--bind lan | Esegue il bind a 0.0.0.0 così il proxy di Fly può raggiungere il gateway |
--allow-unconfigured | Si avvia senza un file di configurazione (lo creerai dopo) |
internal_port = 3000 | Deve corrispondere a --port 3000 (o OPENCLAW_GATEWAY_PORT) per i controlli di integrità Fly |
memory = "2048mb" | 512 MB sono troppo pochi; sono consigliati 2 GB |
OPENCLAW_STATE_DIR = "/data" | Mantiene lo stato persistente sul volume |
Set secrets
- I bind non-loopback (
--bind lan) richiedono un percorso di autenticazione del Gateway valido. Questo esempio Fly.io usaOPENCLAW_GATEWAY_TOKEN, ma anchegateway.auth.passwordo una distribuzione non-loopbacktrusted-proxyconfigurata correttamente soddisfano il requisito. - Tratta questi token come password.
- Preferisci le variabili d’ambiente al file di configurazione per tutte le chiavi API e i token. Questo mantiene i secret fuori da
openclaw.json, dove potrebbero essere esposti o registrati accidentalmente nei log.
Deploy
Create config file
Accedi alla macchina via SSH per creare una configurazione corretta:Crea la directory e il file di configurazione:Nota: Con
OPENCLAW_STATE_DIR=/data, il percorso di configurazione è /data/openclaw.json.Nota: Sostituisci https://my-openclaw.fly.dev con l’origine reale della tua app Fly. L’avvio del Gateway inizializza le origini locali della UI di controllo dai valori runtime --bind e --port, così il primo avvio può procedere prima che esista la configurazione, ma l’accesso dal browser tramite Fly richiede comunque l’origine HTTPS esatta elencata in gateway.controlUi.allowedOrigins.Nota: Il token Discord può provenire da una di queste fonti:- Variabile d’ambiente:
DISCORD_BOT_TOKEN(consigliato per i secret) - File di configurazione:
channels.discord.token
DISCORD_BOT_TOKEN.Riavvia per applicare:Risoluzione dei problemi
”App is not listening on expected address”
Il Gateway sta eseguendo il bind a127.0.0.1 invece che a 0.0.0.0.
Correzione: Aggiungi --bind lan al comando di processo in fly.toml.
Controlli di integrità non riusciti / connessione rifiutata
Fly non riesce a raggiungere il Gateway sulla porta configurata. Correzione: Assicurati cheinternal_port corrisponda alla porta del Gateway (imposta --port 3000 o OPENCLAW_GATEWAY_PORT=3000).
OOM / problemi di memoria
Il container continua a riavviarsi o viene terminato. Segnali:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration o riavvii silenziosi.
Correzione: Aumenta la memoria in fly.toml:
Problemi di lock del Gateway
Il Gateway rifiuta di avviarsi con errori “already running”. Questo succede quando il container si riavvia ma il file di lock del PID rimane sul volume. Correzione: Elimina il file di lock:/data/gateway.*.lock (non in una sottodirectory).
Configurazione non letta
--allow-unconfigured aggira solo la guardia di avvio. Non crea né ripara /data/openclaw.json, quindi assicurati che la configurazione reale esista e includa gateway.mode="local" quando vuoi un normale avvio del Gateway locale.
Verifica che la configurazione esista:
Scrivere la configurazione via SSH
Il comandofly ssh console -C non supporta la redirezione della shell. Per scrivere un file di configurazione:
fly sftp può non riuscire se il file esiste già. Eliminalo prima:
Stato non persistente
Se perdi profili di autenticazione, stato di canali/provider o sessioni dopo un riavvio, la directory di stato sta scrivendo nel filesystem del container. Correzione: Assicurati cheOPENCLAW_STATE_DIR=/data sia impostato in fly.toml e ridistribuisci.
Aggiornamenti
Aggiornare il comando della macchina
Se devi modificare il comando di avvio senza una ridistribuzione completa:fly deploy, il comando della macchina potrebbe tornare a quello in fly.toml. Se hai apportato modifiche manuali, riapplicale dopo la distribuzione.
Distribuzione privata (rafforzata)
Per impostazione predefinita, Fly alloca IP pubblici, rendendo il tuo Gateway accessibile suhttps://your-app.fly.dev. È comodo, ma significa che la tua distribuzione è rilevabile dagli scanner Internet (Shodan, Censys, ecc.).
Per una distribuzione rafforzata con nessuna esposizione pubblica, usa il template privato.
Quando usare la distribuzione privata
- Effettui solo chiamate/messaggi in uscita (nessun Webhook in ingresso)
- Usi tunnel ngrok o Tailscale per eventuali callback Webhook
- Accedi al Gateway tramite SSH, proxy o WireGuard invece che dal browser
- Vuoi che la distribuzione sia nascosta agli scanner Internet
Configurazione
Usadeploy/fly.private.toml invece della configurazione standard:
fly ips list dovrebbe mostrare solo un IP di tipo private:
Accedere a una distribuzione privata
Poiché non c’è un URL pubblico, usa uno di questi metodi: Opzione 1: Proxy locale (il più semplice)Webhook con deployment privato
Se hai bisogno di callback Webhook (Twilio, Telnyx, ecc.) senza esposizione pubblica:- Tunnel ngrok - Esegui ngrok all’interno del container o come sidecar
- Tailscale Funnel - Esponi percorsi specifici tramite Tailscale
- Solo in uscita - Alcuni provider (Twilio) funzionano correttamente per le chiamate in uscita senza Webhook
webhookSecurity.allowedHosts sul nome host pubblico del tunnel in modo che le intestazioni host inoltrate vengano accettate.
Vantaggi di sicurezza
| Aspetto | Pubblico | Privato |
|---|---|---|
| Scanner Internet | Individuabile | Nascosto |
| Attacchi diretti | Possibili | Bloccati |
| Accesso alla UI di controllo | Browser | Proxy/VPN |
| Consegna Webhook | Diretta | Tramite tunnel |
Note
- Fly.io usa architettura x86 (non ARM)
- Il Dockerfile è compatibile con entrambe le architetture
- Per l’onboarding di WhatsApp/Telegram, usa
fly ssh console - I dati persistenti risiedono sul volume in
/data - Signal richiede Java + signal-cli; usa un’immagine personalizzata e mantieni la memoria a 2 GB o più.
Costo
Con la configurazione consigliata (shared-cpu-2x, 2 GB di RAM):
- Circa 10-15 $/mese a seconda dell’utilizzo
- Il piano gratuito include una certa quota
Passaggi successivi
- Configura i canali di messaggistica: Canali
- Configura il Gateway: Configurazione del Gateway
- Mantieni OpenClaw aggiornato: Aggiornamento