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.
Snelpad voor beginners
- Clone repo → pas
fly.tomlaan - Maak app + volume → stel secrets in
- Implementeer met
fly deploy - SSH naar binnen om configuratie te maken of gebruik de Control UI
Create the Fly app
lhr (Londen), iad (Virginia), sjc (San Jose).Configure 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 bloot. Zie Privé-implementatie voor een geharde implementatie zonder openbaar IP, of gebruik deploy/fly.private.toml.tini als entrypoint. Fly-procesopdrachten 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 de proxy van Fly de Gateway kan bereiken |
--allow-unconfigured | Start zonder configuratiebestand (je maakt er daarna een) |
internal_port = 3000 | Moet overeenkomen met --port 3000 (of OPENCLAW_GATEWAY_PORT) voor Fly-gezondheidscontroles |
memory = "2048mb" | 512 MB is te klein; 2 GB wordt aanbevolen |
OPENCLAW_STATE_DIR = "/data" | Bewaart status persistent op het volume |
Set secrets
- Niet-loopback-bindings (
--bind lan) vereisen een geldig Gateway-authenticatiepad. Dit Fly.io-voorbeeld gebruiktOPENCLAW_GATEWAY_TOKEN, maargateway.auth.passwordof een correct geconfigureerde niet-loopback-implementatie mettrusted-proxyvoldoet 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
Create config file
SSH naar de machine om een goede 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 oorsprong van je Fly-app. Bij het opstarten van de Gateway worden lokale Control UI-oorsprongen gevuld op basis van de runtimewaarden --bind en --port, zodat de eerste start kan doorgaan voordat de configuratie bestaat, maar browsertoegang via Fly vereist nog steeds dat de exacte HTTPS-oorsprong is opgenomen in gateway.controlUi.allowedOrigins.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:Access the Gateway
Probleemoplossing
”App is not listening on expected address”
De Gateway bindt aan127.0.0.1 in plaats van 0.0.0.0.
Oplossing: Voeg --bind lan toe aan je procesopdracht in fly.toml.
Gezondheidscontroles 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-vergrendeling
Gateway weigert te starten met fouten over “already running”. Dit gebeurt wanneer de container herstart, maar het PID-vergrendelingsbestand op het volume blijft staan. Oplossing: Verwijder het vergrendelingsbestand:/data/gateway.*.lock (niet in een submap).
Configuratie wordt niet gelezen
--allow-unconfigured omzeilt alleen de opstartbewaking. 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
De opdrachtfly 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 verliest na een herstart, schrijft de statusmap naar het containerbestandssysteem. Oplossing: Zorg datOPENCLAW_STATE_DIR=/data is ingesteld in fly.toml en implementeer opnieuw.
Updates
Machineopdracht bijwerken
Als je de opstartopdracht moet wijzigen zonder volledige herimplementatie:fly deploy kan de machineopdracht worden teruggezet naar wat in fly.toml staat. Als je handmatige wijzigingen hebt aangebracht, pas ze dan opnieuw toe na de implementatie.
Privé-implementatie (gehard)
Standaard wijst Fly openbare IP’s toe, waardoor je Gateway toegankelijk is ophttps://your-app.fly.dev. Dit is handig, maar betekent dat je implementatie vindbaar is door internetscanners (Shodan, Censys, enz.).
Gebruik de privétemplate voor een geharde implementatie met geen openbare blootstelling.
Wanneer privé-implementatie gebruiken
- 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 implementatie verborgen blijft voor internetscanners
Installatie
Gebruikdeploy/fly.private.toml in plaats van de standaardconfiguratie:
fly ips list alleen een IP van het type private moeten tonen:
Toegang tot een privé-implementatie
Omdat er geen openbare URL is, gebruik je een van deze methoden: Optie 1: Lokale proxy (eenvoudigst)Webhooks met private deployment
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 uitgaand - Sommige providers (Twilio) werken prima voor uitgaande gesprekken zonder webhooks
webhookSecurity.allowedHosts in op de openbare hostnaam van de tunnel zodat doorgestuurde host-headers worden geaccepteerd.
Beveiligingsvoordelen
| Aspect | Openbaar | Privé |
|---|---|---|
| Internetscanners | Vindbaar | Verborgen |
| Directe aanvallen | Mogelijk | Geblokkeerd |
| Toegang tot Control 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 WhatsApp/Telegram-onboarding - 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 tegoeden
Volgende stappen
- Stel messagingkanalen in: Kanalen
- Configureer de Gateway: Gateway-configuratie
- Houd OpenClaw up-to-date: Updaten