Fly.io’da joylashtirish
Maqsad: OpenClaw Gateway’ni Fly.io serverida doimiy xotira, avtomatik HTTPS va Discord/kanalga kirish imkoniyati bilan ishga tushirish.Sizga kerak bo‘ladi
- flyctl CLI o‘rnatilgan
- Fly.io akkaunti (bepul tarif ham ishlaydi)
- Model autentifikatsiyasi: Anthropic API kaliti (yoki boshqa provayder kalitlari)
- Kanal ma’lumotlari: Discord bot tokeni, Telegram tokeni va boshqalar.
Yangi boshlovchilar uchun tezkor yo‘l
- Clone repo → customize
fly.toml - Create app + volume → set secrets
- Deploy with
fly deploy - SSH in to create config or use Control UI
1) Create the Fly app
lhr (London), iad (Virginia), sjc (San Jose).
2. Configure fly.toml
Editfly.toml to match your app name and requirements.
Security note: The default config exposes a public URL. For a hardened deployment with no public IP, see Private Deployment or use fly.private.toml.
| Setting | Why |
|---|---|
--bind lan | Binds to 0.0.0.0 so Fly’s proxy can reach the gateway |
--allow-unconfigured | Starts without a config file (you’ll create one after) |
internal_port = 3000 | Must match --port 3000 (or OPENCLAW_GATEWAY_PORT) for Fly health checks |
memory = "2048mb" | 512MB is too small; 2GB recommended |
OPENCLAW_STATE_DIR = "/data" | Persists state on the volume |
3. Set secrets
- Non-loopback binds (
--bind lan) requireOPENCLAW_GATEWAY_TOKENfor security. - Treat these tokens like passwords.
- Prefer env vars over config file for all API keys and tokens. This keeps secrets out of
openclaw.jsonwhere they could be accidentally exposed or logged.
4. Deploy
5. Konfiguratsiya faylini yarating
To‘g‘ri konfiguratsiya yaratish uchun mashinaga SSH orqali kiring:OPENCLAW_STATE_DIR=/data bo‘lsa, konfiguratsiya yo‘li /data/openclaw.json bo‘ladi.
Eslatma: Discord tokeni quyidagilardan biridan olinishi mumkin:
- Muhit o‘zgaruvchisi:
DISCORD_BOT_TOKEN(maxfiy ma’lumotlar uchun tavsiya etiladi) - Konfiguratsiya fayli:
channels.discord.token
DISCORD_BOT_TOKEN ni avtomatik o‘qiydi.
Qo‘llash uchun qayta ishga tushiring:
6. Gateway’ga kirish
Boshqaruv UI
Brauzerda oching:https://my-openclaw.fly.dev/ ga tashrif buyuring
Autentifikatsiya uchun gateway tokeningizni (OPENCLAW_GATEWAY_TOKEN dan olinganini) kiriting.
Loglar
SSH konsol
Nosozliklarni bartaraf etish
”Ilova kutilgan manzilda tinglamayapti”
Gateway0.0.0.0 o‘rniga 127.0.0.1 ga bog‘lanmoqda.
Yechim: fly.toml dagi jarayon buyruqingizga --bind lan qo‘shing.
Health check’lar muvaffaqiyatsiz / ulanish rad etildi
Fly sozlangan port orqali gateway’ga yetib bora olmayapti. Yechim:internal_port gateway portiga mos kelishiga ishonch hosil qiling (--port 3000 yoki OPENCLAW_GATEWAY_PORT=3000 ni sozlang).
OOM / Xotira muammolari
Konteyner doimiy ravishda qayta ishga tushmoqda yoki o‘chirib yuborilmoqda. Belgilar:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration yoki jim qayta ishga tushishlar.
Yechim: fly.toml da xotirani oshiring:
Gateway Lock muammolari
Gateway “already running” xatolari bilan ishga tushishni rad etadi. Bu konteyner qayta ishga tushganda, lekin PID lock fayli volumeda qolib ketganda sodir bo‘ladi. Yechim: Lock faylini o‘chiring:- Lock fayl
/data/gateway.*.lockda joylashgan (pastki katalogda emas).
2. Konfiguratsiya o‘qilmayapti
-
Agar
--allow-unconfiguredishlatilsa, gateway minimal konfiguratsiyani yaratadi. 4./data/openclaw.jsondagi maxsus konfiguratsiyangiz qayta ishga tushirilganda o‘qilishi kerak. - Konfiguratsiya mavjudligini tekshiring:
7. SSH orqali konfiguratsiya yozish
fly ssh console -Cbuyrug‘i shell redirection’ni qo‘llab-quvvatlamaydi. 9. Konfiguratsiya faylini yozish uchun:
- Eslatma: agar fayl allaqachon mavjud bo‘lsa,
fly sftpishlamay qolishi mumkin. 12. Avval o‘chiring:
14. Holat saqlanmayapti
- Agar qayta ishga tushirgandan keyin credential yoki sessiyalar yo‘qolsa, state katalogi konteyner fayl tizimiga yozilmoqda.
-
Tuzatish:
fly.tomldaOPENCLAW_STATE_DIR=/datao‘rnatilganiga ishonch hosil qiling va qayta deploy qiling.
17. Yangilanishlar
19. Machine buyrug‘ini yangilash
- To‘liq redeploy qilmasdan ishga tushirish buyrug‘ini o‘zgartirish kerak bo‘lsa:
- Eslatma:
fly deploydan keyin machine buyrug‘ifly.tomldagi holatiga qaytishi mumkin. 23. Agar qo‘lda o‘zgarishlar qilgan bo‘lsangiz, deploy’dan keyin ularni qayta qo‘llang.
24. Xususiy deploy (mustahkamlangan)
-
Odatiy holatda Fly umumiy IP manzillar ajratadi, bu gateway’ni
https://your-app.fly.devorqali ochiq qiladi. 26. Bu qulay, ammo deploy internet skanerlari (Shodan, Censys va boshqalar) uchun ko‘rinadigan bo‘lib qoladi. - Ommaviy ochiqliksiz mustahkamlangan deploy uchun private template’dan foydalaning.
28. Qachon private deploy’dan foydalanish kerak
-
- Siz faqat chiqish chaqiruvlari/xabarlarini yuborasiz (kiruvchi webhook’lar yo‘q)
-
- Har qanday webhook callback’lar uchun ngrok yoki Tailscale tunnellaridan foydalanasiz
-
- Gateway’ga brauzer orqali emas, SSH, proxy yoki WireGuard orqali kirasiz
-
- Deploy’ni internet skanerlaridan yashirishni xohlaysiz
33. O‘rnatish
- Standart konfiguratsiya o‘rniga
fly.private.tomldan foydalaning:
- Yoki mavjud deploy’ni o‘zgartiring:
- Shundan so‘ng,
fly ips listfaqatprivateturdagi IP’ni ko‘rsatishi kerak:
40. Private deploy’ga kirish
- Ommaviy URL bo‘lmagani uchun, quyidagi usullardan birini ishlating:
- Variant 1: Lokal proxy (eng sodda)
- Variant 2: WireGuard VPN
- Variant 3: Faqat SSH
48. Private deploy’da webhook’lar
- Agar webhook callback’lari (Twilio, Telnyx va boshqalar) kerak bo‘lsa 50. ommaviy ochiqliksiz:
- ngrok tunnel - Run ngrok inside the container or as a sidecar
- Tailscale Funnel - Expose specific paths via Tailscale
- Outbound-only - Some providers (Twilio) work fine for outbound calls without webhooks
webhookSecurity.allowedHosts to the public tunnel hostname so forwarded host headers are accepted.
Security benefits
| Aspect | Public | Private |
|---|---|---|
| Internet scanners | Discoverable | Hidden |
| Direct attacks | Possible | Blocked |
| Control UI access | Browser | Proxy/VPN |
| Webhook delivery | Direct | Via tunnel |
Notes
- Fly.io uses x86 architecture (not ARM)
- The Dockerfile is compatible with both architectures
- For WhatsApp/Telegram onboarding, use
fly ssh console - Persistent data lives on the volume at
/data - Signal requires Java + signal-cli; use a custom image and keep memory at 2GB+.
Cost
With the recommended config (shared-cpu-2x, 2GB RAM):
- ~$10-15/month depending on usage
- Free tier includes some allowance