Doel: OpenClaw Gateway draait op een Fly.io-machine met persistente opslag, automatische HTTPS en Discord-/kanaaltoegang.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Wat je nodig hebt
- flyctl CLI geïnstalleerd
- Fly.io-account (gratis laag werkt)
- Modelauthenticatie: API-sleutel voor je gekozen modelprovider
- Kanaalreferenties: Discord-bottoken, Telegram-token, enz.
Snelle route voor beginners
- Repo klonen →
fly.tomlaanpassen - App + volume maken → secrets instellen
- Deployen met
fly deploy - Via SSH inloggen om configuratie te maken of de Control UI gebruiken
Maak de Fly-app
lhr (Londen), iad (Virginia), sjc (San Jose).Configureer fly.toml
Bewerk De OpenClaw Docker-image gebruikt
fly.toml zodat deze overeenkomt met je appnaam en vereisten.Beveiligingsopmerking: De standaardconfiguratie stelt een openbare URL beschikbaar. Zie Privé-deployment of gebruik deploy/fly.private.toml voor een geharde deployment zonder openbaar IP-adres.tini als entrypoint. Fly-procescommando’s vervangen Docker CMD zonder ENTRYPOINT te vervangen, dus het proces draait nog steeds onder tini.Belangrijke instellingen:| Instelling | Waarom |
|---|---|
--bind lan | Bindt aan 0.0.0.0 zodat Fly’s proxy de Gateway kan bereiken |
--allow-unconfigured | Start zonder configuratiebestand (dat maak je daarna) |
internal_port = 3000 | Moet overeenkomen met --port 3000 (of OPENCLAW_GATEWAY_PORT) voor Fly-healthchecks |
memory = "2048mb" | 512 MB is te weinig; 2 GB aanbevolen |
OPENCLAW_STATE_DIR = "/data" | Bewaart status persistent op het volume |
Stel secrets in
- Niet-loopback-binds (
--bind lan) vereisen een geldig Gateway-authenticatiepad. Dit Fly.io-voorbeeld gebruiktOPENCLAW_GATEWAY_TOKEN, maargateway.auth.passwordof een correct geconfigureerde niet-loopback-trusted-proxy-deployment voldoet ook aan de vereiste. - Behandel deze tokens als wachtwoorden.
- Geef de voorkeur aan omgevingsvariabelen boven een configuratiebestand voor alle API-sleutels en tokens. Dit houdt secrets uit
openclaw.json, waar ze per ongeluk kunnen worden blootgesteld of gelogd.
Deploy
Maak het configuratiebestand
Log via SSH in op de machine om een juiste configuratie te maken:Maak de configuratiemap en het bestand:Opmerking: Met
OPENCLAW_STATE_DIR=/data is het configuratiepad /data/openclaw.json.Opmerking: Vervang https://my-openclaw.fly.dev door de echte origin van je Fly-app. Bij het starten seedt de Gateway lokale Control UI-origins op basis van de runtimewaarden --bind en --port, zodat de eerste start kan doorgaan voordat configuratie bestaat, maar browsertoegang via Fly vereist nog steeds dat de exacte HTTPS-origin in gateway.controlUi.allowedOrigins staat.Opmerking: Het Discord-token kan uit een van beide bronnen komen:- Omgevingsvariabele:
DISCORD_BOT_TOKEN(aanbevolen voor secrets) - Configuratiebestand:
channels.discord.token
DISCORD_BOT_TOKEN automatisch.Herstart om toe te passen:Probleemoplossing
”App is not listening on expected address”
De Gateway bindt aan127.0.0.1 in plaats van aan 0.0.0.0.
Oplossing: Voeg --bind lan toe aan je procescommando in fly.toml.
Healthchecks mislukken / verbinding geweigerd
Fly kan de Gateway niet bereiken op de geconfigureerde poort. Oplossing: Zorg datinternal_port overeenkomt met de Gateway-poort (stel --port 3000 of OPENCLAW_GATEWAY_PORT=3000 in).
OOM / geheugenproblemen
Container blijft herstarten of wordt beëindigd. Signalen:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration of stille herstarts.
Oplossing: Verhoog het geheugen in fly.toml:
Problemen met Gateway-lock
Gateway weigert te starten met fouten over “already running”. Dit gebeurt wanneer de container herstart, maar het PID-lockbestand op het volume blijft bestaan. Oplossing: Verwijder het lockbestand:/data/gateway.*.lock (niet in een submap).
Configuratie wordt niet gelezen
--allow-unconfigured omzeilt alleen de opstartbeveiliging. Het maakt of repareert /data/openclaw.json niet, dus zorg dat je echte configuratie bestaat en gateway.mode="local" bevat wanneer je een normale lokale Gateway-start wilt.
Controleer of de configuratie bestaat:
Configuratie schrijven via SSH
Het commandofly ssh console -C ondersteunt geen shell-omleiding. Een configuratiebestand schrijven:
fly sftp kan mislukken als het bestand al bestaat. Verwijder het eerst:
Status blijft niet behouden
Als je authenticatieprofielen, kanaal-/providerstatus of sessies kwijtraakt na een herstart, schrijft de statusmap naar het containerbestandssysteem. Oplossing: Zorg datOPENCLAW_STATE_DIR=/data is ingesteld in fly.toml en deploy opnieuw.
Updates
Machinecommando bijwerken
Als je het opstartcommando moet wijzigen zonder volledige redeployment:fly deploy kan het machinecommando worden teruggezet naar wat in fly.toml staat. Als je handmatige wijzigingen hebt aangebracht, pas ze dan na deployment opnieuw toe.
Privé-deployment (gehard)
Standaard wijst Fly openbare IP-adressen toe, waardoor je Gateway bereikbaar is ophttps://your-app.fly.dev. Dit is handig, maar betekent dat je deployment vindbaar is door internetscanners (Shodan, Censys, enz.).
Gebruik de privésilabloon voor een geharde deployment met geen openbare blootstelling.
Wanneer je privé-deployment gebruikt
- Je doet alleen uitgaande oproepen/berichten (geen inkomende webhooks)
- Je gebruikt ngrok- of Tailscale-tunnels voor webhook-callbacks
- Je benadert de Gateway via SSH, proxy of WireGuard in plaats van via de browser
- Je wilt dat de deployment verborgen blijft voor internetscanners
Installatie
Gebruikdeploy/fly.private.toml in plaats van de standaardconfiguratie:
fly ips list alleen een IP van type private moeten tonen:
Toegang tot een privé-deployment
Omdat er geen openbare URL is, gebruik je een van deze methoden: Optie 1: Lokale proxy (eenvoudigst)Webhooks met privé-implementatie
Als je Webhook-callbacks nodig hebt (Twilio, Telnyx, enz.) zonder openbare blootstelling:- ngrok-tunnel - Voer ngrok uit in de container of als sidecar
- Tailscale Funnel - Stel specifieke paden beschikbaar via Tailscale
- Alleen outbound - Sommige providers (Twilio) werken prima voor outbound-oproepen zonder Webhooks
webhookSecurity.allowedHosts in op de openbare tunnelhostnaam zodat doorgestuurde hostheaders worden geaccepteerd.
Beveiligingsvoordelen
| Aspect | Openbaar | Privé |
|---|---|---|
| Internetscanners | Vindbaar | Verborgen |
| Directe aanvallen | Mogelijk | Geblokkeerd |
| Toegang tot beheer-UI | Browser | Proxy/VPN |
| Webhook-bezorging | Direct | Via tunnel |
Opmerkingen
- Fly.io gebruikt x86-architectuur (niet ARM)
- De Dockerfile is compatibel met beide architecturen
- Gebruik
fly ssh consolevoor onboarding van WhatsApp/Telegram - Persistente gegevens staan op het volume bij
/data - Signal vereist Java + signal-cli; gebruik een aangepaste image en houd het geheugen op 2 GB+.
Kosten
Met de aanbevolen configuratie (shared-cpu-2x, 2 GB RAM):
- ~$10-15/maand, afhankelijk van gebruik
- De gratis laag bevat enige ruimte
Volgende stappen
- Stel berichtkanalen in: Kanalen
- Configureer de Gateway: Gateway-configuratie
- Houd OpenClaw up-to-date: Bijwerken