Fly.io Dağıtımı
Amaç: OpenClaw Gateway’in Fly.io makinesi üzerinde kalıcı depolama, otomatik HTTPS ve Discord/kanal erişimiyle çalışması.Gerekenler
- flyctl CLI kurulu olmalı
- Fly.io hesabı (ücretsiz katman çalışır)
- Model kimlik doğrulaması: seçtiğiniz model sağlayıcısı için API anahtarı
- Kanal kimlik bilgileri: Discord bot token’ı, Telegram token’ı vb.
Başlangıç için hızlı yol
- Depoyu klonlayın →
fly.tomldosyasını özelleştirin - Uygulama + volume oluşturun → secrets ayarlayın
fly deployile dağıtın- Yapılandırmayı oluşturmak için SSH ile bağlanın veya Kontrol UI’ı kullanın
Fly uygulamasını oluşturun
lhr (Londra), iad (Virginia), sjc (San Jose).fly.toml dosyasını yapılandırın
Uygulama adınıza ve gereksinimlerinize uyacak şekilde Temel ayarlar:
fly.toml dosyasını düzenleyin.Güvenlik notu: Varsayılan yapılandırma herkese açık bir URL açığa çıkarır. Genel IP olmadan güçlendirilmiş bir dağıtım için Private Deployment bölümüne bakın veya fly.private.toml kullanın.| Ayar | Neden |
|---|---|
--bind lan | Fly proxy’sinin gateway’e ulaşabilmesi için 0.0.0.0 üzerine bağlanır |
--allow-unconfigured | Yapılandırma dosyası olmadan başlatır (sonra oluşturacaksınız) |
internal_port = 3000 | Fly sağlık denetimleri için --port 3000 (veya OPENCLAW_GATEWAY_PORT) ile eşleşmelidir |
memory = "2048mb" | 512MB çok küçüktür; 2GB önerilir |
OPENCLAW_STATE_DIR = "/data" | Durumu volume üzerinde kalıcı hale getirir |
Secrets ayarlayın
- Loopback olmayan bağlamalar (
--bind lan) geçerli bir gateway kimlik doğrulama yolu gerektirir. Bu Fly.io örneğiOPENCLAW_GATEWAY_TOKENkullanır, ancakgateway.auth.passwordveya doğru yapılandırılmış loopback olmayan birtrusted-proxydağıtımı da bu gereksinimi karşılar. - Bu token’lara parola gibi davranın.
- Tüm API anahtarları ve token’lar için yapılandırma dosyası yerine ortam değişkenlerini tercih edin. Bu, secrets’ların yanlışlıkla açığa çıkabilecekleri veya günlüğe yazılabilecekleri
openclaw.jsondışında kalmasını sağlar.
Dağıtın
Yapılandırma dosyasını oluşturun
Uygun bir yapılandırma oluşturmak için makineye SSH ile bağlanın:Yapılandırma dizinini ve dosyasını oluşturun:Not:
OPENCLAW_STATE_DIR=/data ile yapılandırma yolu /data/openclaw.json olur.Not: Discord token’ı şu iki kaynaktan birinden gelebilir:- Ortam değişkeni:
DISCORD_BOT_TOKEN(secrets için önerilir) - Yapılandırma dosyası:
channels.discord.token
DISCORD_BOT_TOKEN değerini otomatik olarak okur.Uygulamak için yeniden başlatın:Gateway'e erişin
Kontrol UI
Tarayıcıda açın:https://my-openclaw.fly.dev/ adresini ziyaret edinYapılandırılmış paylaşılan gizli anahtarla kimlik doğrulaması yapın. Bu kılavuz OPENCLAW_GATEWAY_TOKEN içindeki gateway token’ını kullanır; parola kimlik doğrulamasına geçtiyseniz bunun yerine o parolayı kullanın.Günlükler
SSH Konsolu
Sorun giderme
”App is not listening on expected address”
Gateway0.0.0.0 yerine 127.0.0.1 üzerine bağlanıyor.
Düzeltme: fly.toml içindeki süreç komutunuza --bind lan ekleyin.
Sağlık denetimleri başarısız / bağlantı reddedildi
Fly yapılandırılmış portta gateway’e ulaşamıyor. Düzeltme:internal_port değerinin gateway portuyla eşleştiğinden emin olun (--port 3000 veya OPENCLAW_GATEWAY_PORT=3000 ayarlayın).
OOM / Bellek sorunları
Kapsayıcı sürekli yeniden başlıyor veya sonlandırılıyor. İşaretler:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration veya sessiz yeniden başlatmalar.
Düzeltme: fly.toml içinde belleği artırın:
Gateway kilit sorunları
Gateway “already running” hatalarıyla başlamayı reddediyor. Bu, kapsayıcı yeniden başlarken PID kilit dosyasının volume üzerinde kalması durumunda olur. Düzeltme: Kilit dosyasını silin:/data/gateway.*.lock konumundadır (bir alt dizinde değil).
Yapılandırma okunmuyor
--allow-unconfigured yalnızca başlangıç korumasını atlar. /data/openclaw.json oluşturmaz veya onarmaz, bu nedenle gerçek yapılandırmanızın mevcut olduğundan ve normal bir yerel gateway başlangıcı istediğinizde gateway.mode="local" içerdiğinden emin olun.
Yapılandırmanın var olduğunu doğrulayın:
Yapılandırmayı SSH ile yazma
fly ssh console -C komutu kabuk yönlendirmesini desteklemez. Bir yapılandırma dosyası yazmak için:
fly sftp başarısız olabilir. Önce silin:
Durum kalıcı olmuyor
Yeniden başlatmadan sonra kimlik doğrulama profillerini, kanal/sağlayıcı durumunu veya oturumları kaybediyorsanız, durum dizini kapsayıcı dosya sistemine yazıyor demektir. Düzeltme:fly.toml içinde OPENCLAW_STATE_DIR=/data ayarlı olduğundan emin olun ve yeniden dağıtın.
Güncellemeler
Makine komutunu güncelleme
Tam yeniden dağıtım olmadan başlangıç komutunu değiştirmeniz gerekirse:fly deploy sonrasında makine komutu fly.toml içindekine sıfırlanabilir. Elle değişiklik yaptıysanız bunları dağıtımdan sonra yeniden uygulayın.
Özel Dağıtım (Güçlendirilmiş)
Varsayılan olarak Fly herkese açık IP’ler ayırır; bu da gateway’inizihttps://your-app.fly.dev adresinde erişilebilir hale getirir. Bu kullanışlıdır ancak dağıtımınızın internet tarayıcıları (Shodan, Censys vb.) tarafından keşfedilebilir olduğu anlamına gelir.
Genel açığa çıkma olmadan güçlendirilmiş bir dağıtım için özel şablonu kullanın.
Özel dağıtım ne zaman kullanılmalı
- Yalnızca giden çağrılar/mesajlar yapıyorsunuz (gelen webhook yok)
- Herhangi bir webhook geri çağrısı için ngrok veya Tailscale tünelleri kullanıyorsunuz
- Gateway’e tarayıcı yerine SSH, proxy veya WireGuard ile erişiyorsunuz
- Dağıtımın internet tarayıcılarından gizli olmasını istiyorsunuz
Kurulum
Standart yapılandırma yerinefly.private.toml kullanın:
fly ips list yalnızca private türünde bir IP göstermelidir:
Özel bir dağıtıma erişme
Genel URL olmadığı için şu yöntemlerden birini kullanın: Seçenek 1: Yerel proxy (en basit)Özel dağıtımda webhook’lar
Genel açığa çıkma olmadan webhook geri çağrılarına (Twilio, Telnyx vb.) ihtiyacınız varsa:- ngrok tüneli - ngrok’u kapsayıcı içinde veya sidecar olarak çalıştırın
- Tailscale Funnel - belirli yolları Tailscale üzerinden açığa çıkarın
- Yalnızca giden - bazı sağlayıcılar (Twilio) webhook olmadan da giden çağrılar için sorunsuz çalışır
webhookSecurity.allowedHosts değerini genel tünel host adı olarak ayarlayın.
Güvenlik avantajları
| Yön | Genel | Özel |
|---|---|---|
| İnternet tarayıcıları | Keşfedilebilir | Gizli |
| Doğrudan saldırılar | Mümkün | Engelli |
| Kontrol UI erişimi | Tarayıcı | Proxy/VPN |
| Webhook teslimi | Doğrudan | Tünel üzerinden |
Notlar
- Fly.io x86 mimarisi kullanır (ARM değil)
- Dockerfile her iki mimariyle de uyumludur
- WhatsApp/Telegram başlangıç kurulumu için
fly ssh consolekullanın - Kalıcı veriler
/dataüzerindeki volume içinde bulunur - Signal, Java + signal-cli gerektirir; özel bir imaj kullanın ve belleği 2GB+ seviyesinde tutun.
Maliyet
Önerilen yapılandırmayla (shared-cpu-2x, 2GB RAM):
- Kullanıma bağlı olarak ayda ~$10-15
- Ücretsiz katman bir miktar kota içerir
Sonraki adımlar
- Mesajlaşma kanallarını ayarlayın: Channels
- Gateway’i yapılandırın: Gateway configuration
- OpenClaw’ı güncel tutun: Updating