Fly.io-distribution
Mål: OpenClaw Gateway körs på en Fly.io-maskin med beständig lagring, automatisk HTTPS och Discord/kanalåtkomst.Vad du behöver
- flyctl CLI installerad
- Fly.io-konto (gratisnivån fungerar)
- Modellautentisering: Anthropic API-nyckel (eller andra leverantörsnycklar)
- Kanaluppgifter: Discord-bot-token, Telegram-token, osv.
Snabb väg för nybörjare
- Klona repot → anpassa
fly.toml - Skapa app + volym → sätt hemligheter
- Distribuera med
fly deploy - SSH:a in för att skapa konfig eller använd Control UI
1) Skapa Fly-appen
lhr (London), iad (Virginia), sjc (San Jose).
2. Konfigurera fly.toml
Redigerafly.toml så att den matchar ditt appnamn och dina krav.
Säkerhetsanteckning: Standardkonfigurationen exponerar en publik URL. För en härdad distribution utan offentlig IP-adress, se Privat distribution eller använd fly.private.toml.
| Inställning | Varför |
|---|---|
--bind lan | Binder till 0.0.0.0 så att Flys proxy kan nå gatewayen |
--allow-unconfigured | Startar utan en konfigfil (du skapar en senare) |
internal_port = 3000 | Måste matcha --port 3000 (eller OPENCLAW_GATEWAY_PORT) för Flys hälsokontroller |
memory = "2048mb" | 512MB är för lite; 2GB rekommenderas |
OPENCLAW_STATE_DIR = "/data" | Beständig lagring av tillstånd på volymen |
3. Sätt hemligheter
- Icke-loopback-bindningar (
--bind lan) kräverOPENCLAW_GATEWAY_TOKENav säkerhetsskäl. - Behandla dessa token som lösenord.
- Föredrar env vars över konfigurationsfil för alla API-nycklar och tokens. Detta håller hemligheter från
openclaw.jsondär de kan av misstag exponeras eller loggas.
4. Distribuera
5. Skapa konfigfil
SSH:a in i maskinen för att skapa en korrekt konfig:OPENCLAW_STATE_DIR=/data är konfigsökvägen /data/openclaw.json.
Obs: Discord-token kan komma från antingen:
- Miljövariabel:
DISCORD_BOT_TOKEN(rekommenderas för hemligheter) - Konfigfil:
channels.discord.token
DISCORD_BOT_TOKEN automatiskt.
Starta om för att tillämpa:
6. Åtkomst till Gateway
Kontrollgränssnitt
Öppna i webbläsare:https://my-openclaw.fly.dev/
Klistra in din gateway-token (den från OPENCLAW_GATEWAY_TOKEN) för att autentisera.
Loggar
SSH-konsol
Felsökning
”App is not listening on expected address”
Gatewayen binder till127.0.0.1 istället för 0.0.0.0.
Åtgärd: Lägg till --bind lan i ditt processkommando i fly.toml.
Hälsokontroller misslyckas / anslutning nekas
Fly kan inte nå gatewayen på den konfigurerade porten. Åtgärd: Säkerställ attinternal_port matchar gateway-porten (sätt --port 3000 eller OPENCLAW_GATEWAY_PORT=3000).
OOM / Minnesproblem
Behållare fortsätter att starta om eller bli dödad. Skyltar:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration, eller tyst omstart.
Åtgärd: Öka minnet i fly.toml:
Gateway-låsproblem
Gatewayen vägrar starta med ”already running”-fel. Detta händer när containern startar om men PID-låsfilen finns kvar på volymen. Åtgärd: Ta bort låsfilen:/data/gateway.*.lock (inte i en underkatalog).
Konfig läses inte
Om du använder--allow-unconfigured, skapar gateway en minimal konfiguration. Din anpassade konfiguration på /data/openclaw.json ska läsas vid omstart.
Verifiera att konfigen finns:
Skriva konfig via SSH
Kommandotfly ssh console -C stöder inte skalomdirigering. För att skriva en konfigurationsfil:
Tillstånd sparas inte
Om du tappar uppgifter eller sessioner efter en omstart skrivs tillståndskatalogen till containerns filsystem. Åtgärd: Säkerställ attOPENCLAW_STATE_DIR=/data är satt i fly.toml och distribuera om.
Uppdateringar
Uppdatera maskinkommando
Om du behöver ändra startkommandot utan full omdistribution:fly deploy, kan maskinkommandot återställas till vad som finns i fly.toml. Om du gjort manuella ändringar, åter tillämpa dem efter distribution.
Privat distribution (Härdad)
Som standard, Fly allokerar offentliga IP-adresser, vilket gör din gateway tillgänglig påhttps://your-app.fly.dev. Detta är bekvämt men innebär att din distribution är upptäckbar av internet-skannrar (Shodan, Censys, etc.).
För en härdad distribution med ingen offentlig exponering, använd den privata mallen.
När ska privat distribution användas
- Du gör endast utgående anrop/meddelanden (inga inkommande webhooks)
- Du använder ngrok eller Tailscale-tunnlar för webhook-callbacks
- Du når gatewayen via SSH, proxy eller WireGuard istället för webbläsare
- Du vill att distributionen ska vara dold för internetscanners
Konfigurering
Användfly.private.toml istället för standardkonfigen:
fly ips list endast visa en private-typ av IP:
Åtkomst till privat distribution
Eftersom det inte finns någon offentlig URL, använd en av dessa metoder: Alternativ 1: Lokal proxy (enklast)Webhooks med privat distribution
Om du behöver webhook callbacks (Twilio, Telnyx, etc.) utan offentlig exponering:- ngrok-tunnel – Kör ngrok i containern eller som sidecar
- Tailscale Funnel – Exponera specifika sökvägar via Tailscale
- Endast utgående – Vissa leverantörer (Twilio) fungerar bra för utgående samtal utan webhooks
webhookSecurity.allowedHosts till det publika tunnelns värdnamn så vidarekopplade värdhuvuden accepteras.
Säkerhetsfördelar
| Aspekt | Offentlig | Privat |
|---|---|---|
| Internetscanners | Upptäckbar | Dold |
| Direkta attacker | Möjliga | Blockerade |
| Control UI-åtkomst | Webbläsare | Proxy/VPN |
| Webhook-leverans | Direkt | Via tunnel |
Noteringar
- Fly.io använder x86-arkitektur (inte ARM)
- Dockerfile är kompatibel med båda arkitekturerna
- För WhatsApp/Telegram-introduktion, använd
fly ssh console - Beständig data finns på volymen vid
/data - Signal kräver Java + signal-cli; använd en anpassad image och håll minnet på 2GB+.
Kostnad
Med den rekommenderade konfigen (shared-cpu-2x, 2GB RAM):
- ~10–15 USD/månad beroende på användning
- Gratisnivån inkluderar viss tilldelning