Skip to main content
Hedef: Kalıcı depolama, otomatik HTTPS ve Discord/kanal erişimiyle bir Fly.io makinesinde çalışan OpenClaw Gateway.

Gereksinimler

  • flyctl CLI yüklü olmalıdır
  • Fly.io hesabı (ücretsiz katman kullanılabilir)
  • Model kimlik doğrulaması: seçtiğiniz model sağlayıcısının API anahtarı
  • Kanal kimlik bilgileri: Discord bot belirteci, Telegram belirteci vb.

Yeni başlayanlar için hızlı yol

  1. Depoyu klonlayın, fly.toml dosyasını özelleştirin
  2. Uygulamayı ve birimi oluşturun, gizli değerleri ayarlayın
  3. fly deploy ile dağıtın
  4. Yapılandırmayı oluşturmak için SSH ile bağlanın veya Control UI’ı kullanın
1

Fly uygulamasını oluşturun

Size yakın bir bölge seçin. Yaygın seçenekler: lhr (Londra), iad (Virginia), sjc (San Jose).
2

fly.toml dosyasını yapılandırın

fly.toml dosyasını uygulama adınıza ve gereksinimlerinize uyacak şekilde düzenleyin. Depoda izlenen fly.toml, aşağıda gösterilen herkese açık şablondur; deploy/fly.private.toml ise güçlendirilmiş, genel IP içermeyen varyanttır (bkz. Özel dağıtım).
OpenClaw Docker imajının giriş noktası tini olup varsayılan olarak node openclaw.mjs gateway çalıştırır. Fly [processes], ENTRYPOINT değerine dokunmadan Docker CMD değerinin yerini alır (burada aynı derlenmiş giriş noktası olan node dist/index.js gateway ... doğrudan çalıştırılır); böylece işlem tini altında çalışmaya devam eder.Temel ayarlar:
3

Gizli değerleri ayarlayın

Geri döngü dışı bağlamalar (--bind lan) geçerli bir gateway kimlik doğrulama yolu gerektirir. Bu örnek OPENCLAW_GATEWAY_TOKEN kullanır ancak gateway.auth.password veya doğru yapılandırılmış, geri döngü dışı bir güvenilir proxy dağıtımı da gereksinimi karşılar. SecretRef sözleşmesi için Gizli değer yönetimi bölümüne bakın.Bu belirteçleri parola gibi değerlendirin. Gizli değerlerin openclaw.json dışında kalması için API anahtarları ve belirteçlerde yapılandırma dosyası yerine ortam değişkenlerini/fly secrets tercih edin.
4

Dağıtın

İlk dağıtım Docker imajını oluşturur. Dağıtımdan sonra doğrulayın:
HTTP/WebSocket dinleyicisi çalışmaya başladığında Gateway başlangıç günlüklerine gateway ready kaydedilir. Fly’ın kendi sağlık kontrolü, fly.toml uyarınca internal_port = 3000 değerini izler; imajın Docker HEALTHCHECK yönergesi ayrıca varsayılan 18789 portunda /healthz değerini yoklar. Bu dağıtım gateway’i --port 3000 değerine geçersiz kıldığı için söz konusu port burada kullanılmaz.
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 kullanıldığında yapılandırma yolu /data/openclaw.json olur.https://my-openclaw.fly.dev değerini gerçek Fly uygulama kaynağınızla değiştirin. Gateway başlangıcı, yapılandırma mevcut olmadan ilk başlatmanın devam edebilmesi için yerel Control UI kaynaklarını çalışma zamanındaki --bind ve --port değerlerinden oluşturur; ancak Fly üzerinden tarayıcı erişimi için tam HTTPS kaynağının yine gateway.controlUi.allowedOrigins içinde listelenmesi gerekir.Discord belirteci şu iki kaynaktan birinden alınabilir:
  • Ortam değişkeni DISCORD_BOT_TOKEN (gizli değerler için önerilir); yapılandırmaya eklenmesi gerekmez, gateway bunu otomatik olarak okur
  • Yapılandırma dosyası channels.discord.token
Uygulamak için yeniden başlatın:
6

Gateway'e erişin

Control UI

Alternatif olarak https://my-openclaw.fly.dev/ adresini ziyaret edin.Yapılandırılmış paylaşılan gizli değerle kimlik doğrulayın: OPENCLAW_GATEWAY_TOKEN içindeki gateway belirteci veya parola kimlik doğrulamasına geçtiyseniz parolanız.

Günlükler

SSH konsolu

Sorun giderme

”Uygulama beklenen adresi dinlemiyor”

Gateway, 0.0.0.0 yerine 127.0.0.1 adresine bağlanıyor. Düzeltme: 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. Düzeltme: internal_port değerinin gateway portuyla (--port 3000 veya OPENCLAW_GATEWAY_PORT=3000) eşleştiğinden emin olun.

OOM / bellek sorunları

Kapsayıcı sürekli yeniden başlatılıyor veya sonlandırılıyor. Belirtiler: SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration veya sessiz yeniden başlatmalar. Düzeltme: fly.toml içindeki belleği artırın:
Alternatif olarak mevcut bir makineyi güncelleyin:
512 MB çok küçüktür. 1 GB çalışabilir ancak yük altında veya ayrıntılı günlük kaydı kullanılırken OOM oluşabilir. 2 GB önerilir.

Gateway kilidi sorunları

Gateway, kapsayıcı yeniden başlatıldıktan sonra “zaten çalışıyor” hatalarıyla başlamayı reddediyor. Çalışma zamanı kilit dosyaları kalıcı /data biriminde değil, <tmpdir>/openclaw-<uid>/gateway.<hash>.lock ve gateway.state.<hash>.lock konumlarında (Linux: /tmp/openclaw-<uid>/gateway.*.lock) bulunur; dolayısıyla kapsayıcının tamamen yeniden başlatılması normalde bu dosyaları kapsayıcı dosya sisteminin geri kalanıyla birlikte temizler. Bir kilit varlığını sürdürürse (örneğin kapsayıcı dosya sistemini koruyan bir fly machine restart) ve başlatmayı engellerse kilidi elle kaldırın:

Yapılandırma okunmuyor

--allow-unconfigured yalnızca başlangıç korumasını atlar. /data/openclaw.json dosyasını oluşturmaz veya onarmaz; bu nedenle gerçek yapılandırmanızın mevcut olduğundan ve normal bir yerel gateway başlangıcı için "gateway": { "mode": "local" } içerdiğinden emin olun. Yapılandırmanın mevcut olduğunu doğrulayın:

Yapılandırmayı SSH üzerinden yazma

fly ssh console -C kabuk yönlendirmesini desteklemez. Bir yapılandırma dosyası yazmak için:
Dosya zaten mevcutsa fly sftp başarısız olabilir; önce silin:

Durum kalıcı değil

Yeniden başlatmanın ardından kimlik doğrulama profillerini, kanal/sağlayıcı durumunu veya oturumları kaybediyorsanız durum dizini birim yerine kapsayıcı dosya sistemine yazılıyordur. Düzeltme: fly.toml içinde OPENCLAW_STATE_DIR=/data değerinin ayarlandığından emin olun ve yeniden dağıtın.

Güncelleme

Buradaki denetimli yol git pull + fly deploy birleşimidir: imajı Dockerfile’dan yeniden oluşturur; böylece CLI/gateway sürümü, temel işletim sistemi imajı ve tüm Dockerfile değişiklikleri birlikte güncellenir. Çalışan kapsayıcının içindeki openclaw update aynı işlem değildir; çünkü imaj, algılayabileceği bir .git çalışma kopyası veya npm tarafından yönetilen genel kurulum olmadan, Docker ile oluşturulmuş bir dist/ ağacı olarak sunulur. VM tarzı kurulumlardaki bu akış için Güncelleme bölümüne bakın.

Makine komutunu güncelleme

Başlangıç komutunu tam bir yeniden dağıtım yapmadan değiştirmek için:
Daha sonraki bir fly deploy, makine komutunu fly.toml içinde bulunan değere geri döndürür; yeniden dağıtımdan sonra elle yapılan değişiklikleri tekrar uygulayın.

Özel dağıtım (güçlendirilmiş)

Fly varsayılan olarak genel IP’ler tahsis eder; dolayısıyla gateway’inize https://your-app.fly.dev adresinden erişilebilir ve internet tarayıcıları (Shodan, Censys vb.) tarafından keşfedilebilir. Genel IP içermeyen güçlendirilmiş bir dağıtım için deploy/fly.private.toml kullanın: [http_service] değerini içermediğinden genel giriş tahsis edilmez.

Özel dağıtım ne zaman kullanılmalı?

  • Yalnızca giden çağrılar/mesajlar (gelen webhook yok)
  • Tüm webhook geri çağrılarını ngrok veya Tailscale tünelleri yönetir
  • Gateway erişimi tarayıcı yerine SSH, proxy veya WireGuard üzerinden sağlanır
  • Dağıtımın internet tarayıcılarından gizlenmesi gerekir

Kurulum

Alternatif olarak mevcut bir dağıtımı dönüştürün:
Bundan sonra, fly ips list yalnızca private türünde bir IP göstermelidir:

Özel bir dağıtıma erişme

Seçenek 1: yerel proxy (en basit)
Seçenek 2: WireGuard VPN
Seçenek 3: yalnızca SSH

Özel dağıtımla Webhook’lar

Genel erişime açmadan Webhook geri çağrıları (Twilio, Telnyx vb.) için:
  1. ngrok tüneli: ngrok’u konteynerin içinde veya bir yardımcı konteyner olarak çalıştırın
  2. Tailscale Funnel: belirli yolları Tailscale üzerinden erişime açın
  3. Yalnızca giden: bazı sağlayıcılar (Twilio), Webhook’lar olmadan giden çağrılar için çalışır
plugins.entries.voice-call.config altında ngrok kullanan örnek sesli arama yapılandırması:
ngrok tüneli konteynerin içinde çalışır ve Fly uygulamasının kendisini erişime açmadan genel bir Webhook URL’si sağlar. İletilen ana makine üstbilgilerinin kabul edilmesi için webhookSecurity.allowedHosts değerini tünelin ana makine adına ayarlayın.

Güvenlik ödünleşimleri

Notlar

  • Fly.io x86 mimarisini kullanır; Dockerfile hem x86 hem de ARM ile uyumludur.
  • WhatsApp/Telegram ilk kurulumu için fly ssh console kullanın.
  • Kalıcı veriler, /data konumundaki birimde bulunur.
  • Signal, imajda signal-cli (Java tabanlı bir CLI) gerektirir; özel bir imaj kullanın ve belleği 2GB+ olarak tutun.

Maliyet

Önerilen yapılandırmayla (shared-cpu-2x, 2GB RAM), kullanıma bağlı olarak ayda yaklaşık $10-15 tutarında maliyet bekleyin; ücretsiz katman temel kullanım kotasının bir kısmını karşılar. Güncel ücretler için Fly.io fiyatlandırmasına bakın.

Sonraki adımlar

İlgili