Zum Inhalt springen

Fly.io Deployment: Dein OpenClaw Gateway in der Cloud

Ich weiß noch, wie ich früher versucht habe, meine Bots auf alten Laptops oder billigen VPS zu hosten. Ständige Verbindungsabbrüche, mühsame SSL-Zertifikate und wenn der Strom weg war, war auch der Bot offline. Fly.io löst diese Probleme ziemlich elegant. Du bekommst eine stabile Umgebung, ohne dich um die zugrunde liegende Infrastruktur kümmern zu müssen.

In diesem Guide zeige ich dir, wie du dein OpenClaw Gateway auf Fly.io installierst. Wir setzen auf persistenten Speicher, damit deine Daten Neustarts überleben, und kümmern uns um die richtige Konfiguration für Discord und Co.

  • flyctl CLI installiert
  • Einen Fly.io Account (der Free Tier reicht oft aus)
  • Model-Keys: Anthropic API Key (oder andere Provider)
  • Channel-Daten: Discord Bot Token, Telegram Token, etc.
  1. Repo klonen und fly.toml anpassen.
  2. App und Volume erstellen, danach Secrets setzen.
  3. Mit fly deploy ausrollen.
  4. Per SSH die Konfiguration erstellen oder das Control UI nutzen.

Zuerst holst du dir den Code und bereitest die Umgebung vor.

Terminal-Fenster
# Repo klonen
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# Neue Fly App erstellen (wähle einen eigenen Namen)
fly apps create mein-openclaw
# Ein Volume für Daten erstellen (1GB reicht meistens)
fly volumes create openclaw_data --size 1 --region iad

Tipp: Wähle eine Region in deiner Nähe. Gute Optionen sind ams (Amsterdam) oder fra (Frankfurt).

Bearbeite die fly.toml, damit sie zu deinem App-Namen passt. Standardmäßig ist die App öffentlich erreichbar. Wenn du das nicht willst, schau dir den Abschnitt zur privaten Deployment-Variante an.

app = "mein-openclaw"
primary_region = "fra"
[build]
dockerfile = "Dockerfile"
[env]
NODE_ENV = "production"
OPENCLAW_PREFER_PNPM = "1"
OPENCLAW_STATE_DIR = "/data"
NODE_OPTIONS = "--max-old-space-size=1536"
[processes]
app = "node dist/index.js gateway --allow-unconfigured --port 3000 --bind lan"
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = false
auto_start_machines = true
min_machines_running = 1
processes = ["app"]
[[vm]]
size = "shared-cpu-2x"
memory = "2048mb"
[mounts]
source = "openclaw_data"
destination = "/data"

Wichtige Einstellungen:

EinstellungGrund
--bind lanBindet an 0.0.0.0, damit der Fly-Proxy das Gateway erreicht.
--allow-unconfiguredStartet ohne fertige Config-Datei (die erstellen wir später).
internal_port = 3000Muss mit --port 3000 für die Health Checks übereinstimmen.
memory = "2048mb"512MB sind zu wenig; 2GB sorgen für einen stabilen Betrieb.

Sicherheit geht vor. Nutze Secrets für alle empfindlichen Daten, statt sie in Dateien zu schreiben.

Terminal-Fenster
# Gateway Token (wichtig für die Sicherheit)
fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32)
# API Keys für Models
fly secrets set ANTHROPIC_API_KEY=sk-ant-...
fly secrets set OPENAI_API_KEY=sk-...
# Channel Tokens
fly secrets set DISCORD_BOT_TOKEN=MTQ...

Nutze Umgebungsvariablen für alle API Keys. So verhinderst du, dass Secrets versehentlich in der openclaw.json landen oder in Logs auftauchen.

Jetzt bringst du alles live:

Terminal-Fenster
fly deploy

Der erste Build des Docker Images dauert etwa 2-3 Minuten. Danach geht es schneller. Prüfe den Status mit:

Terminal-Fenster
fly status
fly logs

Wenn du [gateway] listening on ws://0.0.0.0:3000 siehst, läuft alles.

Verbinde dich per SSH mit der Machine, um die openclaw.json anzulegen:

Terminal-Fenster
fly ssh console

Erstelle das Verzeichnis und die Datei:

Terminal-Fenster
mkdir -p /data
cat > /data/openclaw.json << 'EOF'
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-3-5-sonnet-latest",
"fallbacks": ["openai/gpt-4o"]
},
"maxConcurrent": 4
},
"list": [
{ "id": "main", "default": true }
]
},
"auth": {
"profiles": {
"anthropic:default": { "mode": "token", "provider": "anthropic" },
"openai:default": { "mode": "token", "provider": "openai" }
}
},
"channels": {
"discord": {
"enabled": true,
"groupPolicy": "allowlist",
"guilds": {
"DEINE_GUILD_ID": {
"channels": { "general": { "allow": true } },
"requireMention": false
}
}
}
},
"gateway": {
"mode": "local",
"bind": "auto"
}
}
EOF

Starte die Machine neu, um die Änderungen zu übernehmen:

Terminal-Fenster
exit
fly machine restart <machine-id>

Öffne die App im Browser: fly open oder besuche https://dein-app-name.fly.dev/. Nutze dein OPENCLAW_GATEWAY_TOKEN zum Einloggen.

  • fly logs: Live-Ansicht der Server-Logs.
  • fly ssh console: Direkter Zugriff auf das Dateisystem.

Wahrscheinlich bindet das Gateway an 127.0.0.1 statt 0.0.0.0. Prüfe, ob --bind lan in deiner fly.toml unter [processes] steht.

Stelle sicher, dass internal_port in der fly.toml exakt mit dem Port im Startbefehl (z.B. --port 3000) übereinstimmt.

Wenn die Machine ständig neu startet oder SIGABRT zeigt, reicht der RAM nicht. Erhöhe ihn mit: fly machine update <machine-id> --vm-memory 2048 -y.

Falls das Gateway meldet, dass es bereits läuft, lösche die Lock-Datei: fly ssh console --command "rm -f /data/gateway.*.lock".

Standardmäßig ist dein Gateway über das Internet erreichbar. Für maximale Sicherheit kannst du die öffentliche IP entfernen und nur über VPN oder Proxy zugreifen.

  1. Nutze eine fly.private.toml ohne [http_service].
  2. Entferne öffentliche IPs: fly ips release <ip>.
  3. Zugriff via Proxy: fly proxy 3000:3000.

Das schützt dich vor Scannern und direkten Angriffen aus dem Netz.


Hast du Fragen zum Setup oder hängst an einem Schritt fest? Der AI Setup Assistant hilft dir direkt weiter.

Was kommt als Nächstes?

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.