Tujuan: OpenClaw Gateway berjalan di mesin Fly.io dengan penyimpanan persisten, HTTPS otomatis, dan akses Discord/saluran.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Yang Anda perlukan
- flyctl CLI terpasang
- Akun Fly.io (tingkat gratis dapat digunakan)
- Autentikasi model: kunci API untuk penyedia model pilihan Anda
- Kredensial saluran: token bot Discord, token Telegram, dll.
Jalur cepat pemula
- Klon repo → sesuaikan
fly.toml - Buat aplikasi + volume → atur secret
- Deploy dengan
fly deploy - SSH masuk untuk membuat konfigurasi atau gunakan Control UI
Create the Fly app
lhr (London), iad (Virginia), sjc (San Jose).Configure fly.toml
Edit Image Docker OpenClaw menggunakan
fly.toml agar sesuai dengan nama aplikasi dan kebutuhan Anda.Catatan keamanan: Konfigurasi default mengekspos URL publik. Untuk deployment yang diperkuat tanpa IP publik, lihat Deployment privat atau gunakan deploy/fly.private.toml.tini sebagai titik masuknya. Perintah proses Fly menggantikan Docker CMD tanpa menggantikan ENTRYPOINT, sehingga proses tetap berjalan di bawah tini.Pengaturan utama:| Pengaturan | Alasan |
|---|---|
--bind lan | Mengikat ke 0.0.0.0 agar proxy Fly dapat menjangkau gateway |
--allow-unconfigured | Memulai tanpa file konfigurasi (Anda akan membuatnya setelah itu) |
internal_port = 3000 | Harus cocok dengan --port 3000 (atau OPENCLAW_GATEWAY_PORT) untuk pemeriksaan kesehatan Fly |
memory = "2048mb" | 512MB terlalu kecil; 2GB direkomendasikan |
OPENCLAW_STATE_DIR = "/data" | Menyimpan state secara persisten pada volume |
Set secrets
- Bind non-loopback (
--bind lan) memerlukan jalur autentikasi gateway yang valid. Contoh Fly.io ini menggunakanOPENCLAW_GATEWAY_TOKEN, tetapigateway.auth.passwordatau deploymenttrusted-proxynon-loopback yang dikonfigurasi dengan benar juga memenuhi persyaratan. - Perlakukan token ini seperti kata sandi.
- Lebih pilih env vars daripada file konfigurasi untuk semua kunci API dan token. Ini menjaga secret tetap di luar
openclaw.jsonagar tidak terekspos atau tercatat secara tidak sengaja.
Deploy
Create config file
SSH masuk ke mesin untuk membuat konfigurasi yang tepat:Buat direktori dan file konfigurasi:Catatan: Dengan
OPENCLAW_STATE_DIR=/data, path konfigurasi adalah /data/openclaw.json.Catatan: Ganti https://my-openclaw.fly.dev dengan origin aplikasi Fly Anda yang sebenarnya. Startup Gateway mengisi origin Control UI lokal dari nilai runtime --bind dan --port sehingga boot pertama dapat berjalan sebelum konfigurasi ada, tetapi akses browser melalui Fly tetap memerlukan origin HTTPS persis yang tercantum di gateway.controlUi.allowedOrigins.Catatan: Token Discord dapat berasal dari salah satu:- Variabel lingkungan:
DISCORD_BOT_TOKEN(direkomendasikan untuk secret) - File konfigurasi:
channels.discord.token
DISCORD_BOT_TOKEN secara otomatis.Mulai ulang untuk menerapkan:Access the Gateway
Pemecahan masalah
”App is not listening on expected address”
Gateway mengikat ke127.0.0.1 alih-alih 0.0.0.0.
Perbaikan: Tambahkan --bind lan ke perintah proses Anda di fly.toml.
Pemeriksaan kesehatan gagal / koneksi ditolak
Fly tidak dapat menjangkau gateway pada port yang dikonfigurasi. Perbaikan: Pastikaninternal_port cocok dengan port gateway (atur --port 3000 atau OPENCLAW_GATEWAY_PORT=3000).
OOM / Masalah Memori
Container terus dimulai ulang atau dihentikan. Tanda-tandanya:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration, atau restart diam-diam.
Perbaikan: Tingkatkan memori di fly.toml:
Masalah lock Gateway
Gateway menolak untuk memulai dengan kesalahan “already running”. Ini terjadi ketika container dimulai ulang tetapi file lock PID tetap ada pada volume. Perbaikan: Hapus file lock:/data/gateway.*.lock (bukan di subdirektori).
Konfigurasi tidak dibaca
--allow-unconfigured hanya melewati penjaga startup. Ini tidak membuat atau memperbaiki /data/openclaw.json, jadi pastikan konfigurasi nyata Anda ada dan menyertakan gateway.mode="local" ketika Anda menginginkan startup gateway lokal normal.
Verifikasi konfigurasi ada:
Menulis konfigurasi melalui SSH
Perintahfly ssh console -C tidak mendukung pengalihan shell. Untuk menulis file konfigurasi:
fly sftp mungkin gagal jika file sudah ada. Hapus terlebih dahulu:
State tidak persisten
Jika Anda kehilangan profil autentikasi, state saluran/penyedia, atau sesi setelah restart, direktori state sedang menulis ke sistem file container. Perbaikan: PastikanOPENCLAW_STATE_DIR=/data diatur di fly.toml dan deploy ulang.
Pembaruan
Memperbarui perintah mesin
Jika Anda perlu mengubah perintah startup tanpa deployment ulang penuh:fly deploy, perintah mesin mungkin direset ke yang ada di fly.toml. Jika Anda membuat perubahan manual, terapkan ulang setelah deploy.
Deployment privat (diperkuat)
Secara default, Fly mengalokasikan IP publik, sehingga gateway Anda dapat diakses dihttps://your-app.fly.dev. Ini praktis tetapi berarti deployment Anda dapat ditemukan oleh pemindai internet (Shodan, Censys, dll.).
Untuk deployment yang diperkuat dengan tanpa paparan publik, gunakan templat privat.
Kapan menggunakan deployment privat
- Anda hanya membuat panggilan/pesan outbound (tanpa webhook inbound)
- Anda menggunakan tunnel ngrok atau Tailscale untuk callback webhook apa pun
- Anda mengakses gateway melalui SSH, proxy, atau WireGuard alih-alih browser
- Anda ingin deployment tersembunyi dari pemindai internet
Penyiapan
Gunakandeploy/fly.private.toml alih-alih konfigurasi standar:
fly ips list seharusnya hanya menampilkan IP bertipe private:
Mengakses deployment privat
Karena tidak ada URL publik, gunakan salah satu metode berikut: Opsi 1: Proxy lokal (paling sederhana)Webhook dengan deployment privat
Jika Anda memerlukan callback Webhook (Twilio, Telnyx, dll.) tanpa eksposur publik:- tunnel ngrok - Jalankan ngrok di dalam container atau sebagai sidecar
- Tailscale Funnel - Ekspos path tertentu melalui Tailscale
- Hanya outbound - Beberapa penyedia (Twilio) berfungsi dengan baik untuk panggilan outbound tanpa Webhook
webhookSecurity.allowedHosts ke nama host tunnel publik agar header host yang diteruskan diterima.
Manfaat keamanan
| Aspek | Publik | Privat |
|---|---|---|
| Pemindai internet | Dapat ditemukan | Tersembunyi |
| Serangan langsung | Mungkin | Diblokir |
| Akses UI kontrol | Browser | Proxy/VPN |
| Pengiriman Webhook | Langsung | Melalui tunnel |
Catatan
- Fly.io menggunakan arsitektur x86 (bukan ARM)
- Dockerfile kompatibel dengan kedua arsitektur
- Untuk onboarding WhatsApp/Telegram, gunakan
fly ssh console - Data persisten berada pada volume di
/data - Signal memerlukan Java + signal-cli; gunakan image kustom dan pertahankan memori 2GB+.
Biaya
Dengan konfigurasi yang direkomendasikan (shared-cpu-2x, RAM 2GB):
- ~$10-15/bulan tergantung penggunaan
- Tingkat gratis mencakup sebagian kuota
Langkah berikutnya
- Siapkan kanal pesan: Kanal
- Konfigurasi Gateway: Konfigurasi Gateway
- Jaga OpenClaw tetap terbaru: Memperbarui