Fly.io Dağıtımı
Amaç: Kalıcı depolama, otomatik HTTPS ve Discord/kanal erişimi ile bir Fly.io makinesinde çalışan OpenClaw Gateway.İhtiyacınız olanlar
- Yüklü flyctl CLI
- Fly.io hesabı (ücretsiz katman yeterlidir)
- Model kimlik doğrulaması: Anthropic API anahtarı (veya diğer sağlayıcı anahtarları)
- Kanal kimlik bilgileri: Discord bot belirteci, Telegram belirteci vb.
Yeni başlayanlar için hızlı yol
- Depoyu klonlayın →
fly.tomlözelleştirin - Uygulama + birim oluşturun → gizli anahtarları ayarlayın
fly deployile dağıtın- Yapılandırma oluşturmak için SSH ile bağlanın veya Control UI’yi kullanın
1) Fly uygulamasını oluşturun
lhr (Londra), iad (Virginia), sjc (San Jose).
2. fly.toml yapılandırması
Uygulama adınız ve gereksinimlerinizle eşleşecek şekildefly.toml dosyasını düzenleyin.
Güvenlik notu: Varsayılan yapılandırma herkese açık bir URL açığa çıkarır. Genel IP’si olmayan, güçlendirilmiş bir dağıtım için Özel Dağıtım bölümüne bakın veya fly.private.toml kullanın.
| Ayar | Neden |
|---|---|
--bind lan | Fly proxy’sinin gateway’e erişebilmesi için 0.0.0.0’e bağlanır |
--allow-unconfigured | Bir yapılandırma dosyası olmadan başlar (sonrasında oluşturacaksınız) |
internal_port = 3000 | Fly sağlık kontrolleri 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" | Tüm API anahtarları ve token’lar için yapılandırma dosyası yerine ortam değişkenlerini tercih edin. |
3. Gizli anahtarları ayarlayın
- Loopback olmayan bağlamalar (
--bind lan) güvenlik içinOPENCLAW_GATEWAY_TOKENgerektirir. - Bu belirteçleri parola gibi ele alın.
- Tüm API anahtarları ve token’lar için yapılandırma dosyası yerine ortam değişkenlerini tercih edin. Bu, sırların kazara açığa çıkabileceği veya günlüklere yazılabileceği
openclaw.jsondosyasından uzak tutulmasını sağlar. Günlükler
4. Dağıtım
5. Yapılandırma dosyasını oluşturun
Uygun bir yapılandırma oluşturmak için makineye SSH ile bağlanın:OPENCLAW_STATE_DIR=/data ile yapılandırma yolu /data/openclaw.json’dır.
Not: Discord belirteci aşağıdakilerden biriyle sağlanabilir:
- Ortam değişkeni:
DISCORD_BOT_TOKEN(sırlar için önerilir) - Yapılandırma dosyası:
channels.discord.token
DISCORD_BOT_TOKEN’u otomatik olarak okur.
Uygulamak için yeniden başlatın:
6. Gateway’e erişim
Kontrol Arayüzü
Tarayıcıda açın:https://my-openclaw.fly.dev/ adresini ziyaret edin.
Kimlik doğrulamak için gateway belirtecinizi (OPENCLAW_GATEWAY_TOKEN’ten alınan) yapıştırın.
Durum Kalıcı Değil
SSH Konsolu
Sorun Giderme
“App is not listening on expected address”
Gateway,0.0.0.0 yerine 127.0.0.1’ye bağlanıyor.
Çözüm: fly.toml içindeki işlem komutunuza --bind lan ekleyin.
Sağlık kontrolleri başarısız / bağlantı reddedildi
Fly, yapılandırılan port üzerinden gateway’e erişemiyor. Çözüm:internal_port’nın gateway portuyla eşleştiğinden emin olun (--port 3000 veya OPENCLAW_GATEWAY_PORT=3000 ayarlayın).
OOM / Bellek Sorunları
Konteyner sürekli yeniden başlıyor veya öldürülüyor. İşaretler:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration veya sessiz yeniden başlatmalar.
Çözüm: fly.toml içinde belleği artırın:
Gateway Kilit Sorunları
Gateway “zaten çalışıyor” hatalarıyla başlamayı reddeder. Bu, konteyner yeniden başlatıldığında PID kilit dosyasının birimde kalıcı olması durumunda olur. Çözüm: Kilit dosyasını silin:/data/gateway.*.lock konumundadır (alt dizinde değildir).
Yapılandırma Okunmuyor
--allow-unconfigured kullanılıyorsa, gateway minimal bir yapılandırma oluşturur. /data/openclaw.json konumundaki özel yapılandırmanız yeniden başlatmada okunmalıdır.
Yapılandırmanın var olduğunu doğrulayın:
SSH ile Yapılandırma 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:
herkese açık maruz kalma olmadan:
Yeniden başlatmadan sonra kimlik bilgilerini veya oturumları kaybediyorsanız, durum dizini konteyner dosya sistemine yazıyordur. Çözüm:OPENCLAW_STATE_DIR=/data’nin fly.toml içinde ayarlı olduğundan emin olun ve yeniden dağıtın.
Güncellemeler
Makine Komutunu Güncelleme
Tam bir yeniden dağıtım yapmadan başlangıç komutunu değiştirmeniz gerekiyorsa:fly deploy sonrasında makine komutu fly.toml’teki değere sıfırlanabilir. Manuel değişiklik yaptıysanız, dağıtımdan sonra yeniden uygulayın.
Özel Dağıtım (Güçlendirilmiş)
Varsayılan olarak Fly, herkese açık IP’ler atar; bu da gateway’inizinhttps://your-app.fly.dev üzerinden erişilebilir olmasını sağlar. 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 erişimi olmayan güçlendirilmiş bir dağıtım için özel şablonu kullanın.
Özel dağıtımı ne zaman kullanmalı
- Yalnızca giden çağrılar/mesajlar yapıyorsanız (gelen webhook yok)
- Herhangi bir webhook geri çağrısı için ngrok veya Tailscale tünelleri kullanıyorsanız
- Gateway’e tarayıcı yerine SSH, proxy veya WireGuard üzerinden erişiyorsanız
- Dağıtımın internet tarayıcılarından gizli olmasını istiyorsanız
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şim
Genel bir URL olmadığından, şu yöntemlerden birini kullanın: Seçenek 1: Yerel proxy (en basit)Özel dağıtımda webhooks
Genel erişim olmadan webhook geri çağrıları (Twilio, Telnyx vb.) herkese açık maruz kalma olmadan:- ngrok tüneli – ngrok’u konteyner içinde veya yan bileşen 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 giden çağrılar için sorunsuz çalışır
webhookSecurity.allowedHosts’i genel tünel ana makine adına ayarlayın.
Güvenlik avantajları
| Aspect | Genel | Özel |
|---|---|---|
| Internet scanners | Keşfedilebilir | Gizli |
| Doğrudan saldırılar | Mümkün | Blocked |
| Control UI access | Browser | Proxy/VPN |
| Webhook delivery | Direct | Via tunnel |
Notlar
- Fly.io x86 mimarisi kullanır (ARM değil)
- Dockerfile her iki mimariyle de uyumludur
- WhatsApp/Telegram başlangıcı için
fly ssh consolekullanın - gerekiyorsa: Kalıcı veriler
/datakonumundaki hacimde bulunur - Signal, Java + signal-cli gerektirir; özel bir imaj kullanın ve belleği 2GB+ tutun.
Maliyet
Önerilen yapılandırma ile (shared-cpu-2x, 2GB RAM):
- Kullanıma bağlı olarak ~$10–15/ay
- Ücretsiz katman belirli bir kullanım hakkı içerir