Yang Anda perlukan
- flyctl CLI terinstal
- Akun Fly.io (tingkat gratis dapat digunakan)
- Autentikasi model: kunci API untuk penyedia model pilihan Anda
- Kredensial channel: token bot Discord, token Telegram, dll.
Jalur cepat pemula
- Kloning repo → sesuaikan
fly.toml - Buat aplikasi + volume → atur secrets
- Deploy dengan
fly deploy - Masuk melalui SSH untuk membuat konfigurasi atau gunakan Control UI
Buat aplikasi Fly
lhr (London), iad (Virginia), sjc (San Jose).Konfigurasikan 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 entrypoint-nya. 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; direkomendasikan 2GB |
OPENCLAW_STATE_DIR = "/data" | Mempertahankan state pada volume |
Atur secrets
- Bind non-loopback (
--bind lan) memerlukan jalur autentikasi gateway yang valid. Contoh Fly.io ini menggunakanOPENCLAW_GATEWAY_TOKEN, tetapigateway.auth.passwordatau deployment non-loopbacktrusted-proxyyang dikonfigurasi dengan benar juga memenuhi persyaratan tersebut. - Perlakukan token ini seperti kata sandi.
- Lebih pilih env vars daripada file konfigurasi untuk semua kunci API dan token. Ini menjaga secrets tetap di luar
openclaw.jsonsehingga tidak terekspos atau tercatat log secara tidak sengaja.
Deploy
Buat file konfigurasi
Masuk melalui SSH 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 menanamkan origin Control UI lokal dari nilai runtime --bind dan --port sehingga boot pertama dapat berjalan sebelum konfigurasi ada, tetapi akses browser melalui Fly tetap membutuhkan origin HTTPS persis yang tercantum di gateway.controlUi.allowedOrigins.Catatan: Token Discord dapat berasal dari salah satu berikut:- Variabel lingkungan:
DISCORD_BOT_TOKEN(direkomendasikan untuk secrets) - File konfigurasi:
channels.discord.token
DISCORD_BOT_TOKEN secara otomatis.Mulai ulang untuk menerapkan:Akses 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-tanda:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration, atau restart diam-diam.
Perbaikan: Tingkatkan memori di fly.toml:
Masalah lock Gateway
Gateway menolak mulai dengan error “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 guard startup. Itu tidak membuat atau memperbaiki /data/openclaw.json, jadi pastikan konfigurasi sebenarnya 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 channel/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 redeploy penuh:fly deploy, perintah mesin dapat direset ke yang ada di fly.toml. Jika Anda membuat perubahan manual, terapkan kembali setelah deploy.
Deployment privat (diperkuat)
Secara default, Fly mengalokasikan IP publik, membuat 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 eksposur publik, gunakan templat privat.
Kapan menggunakan deployment privat
- Anda hanya membuat panggilan/pesan keluar (tanpa webhook masuk)
- 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 ini: 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 baik untuk panggilan outbound tanpa webhook
webhookSecurity.allowedHosts ke hostname 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 di volume di
/data - Signal memerlukan Java + signal-cli; gunakan image kustom dan pertahankan memori pada 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 perpesanan: Kanal
- Konfigurasikan Gateway: Konfigurasi Gateway
- Jaga OpenClaw tetap terbaru: Memperbarui