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.
Triển khai Fly.io
Mục tiêu: OpenClaw Gateway chạy trên máy Fly.io với lưu trữ bền vững, HTTPS tự động và quyền truy cập Discord/kênh.Những gì bạn cần
- Đã cài đặt flyctl CLI
- Tài khoản Fly.io (gói miễn phí dùng được)
- Xác thực mô hình: khóa API cho nhà cung cấp mô hình bạn chọn
- Thông tin xác thực kênh: token bot Discord, token Telegram, v.v.
Lộ trình nhanh cho người mới bắt đầu
- Clone repo → tùy chỉnh
fly.toml - Tạo app + volume → đặt secrets
- Triển khai bằng
fly deploy - SSH vào để tạo cấu hình hoặc dùng Control UI
Create the Fly app
lhr (London), iad (Virginia), sjc (San Jose).Configure fly.toml
Chỉnh sửa Thiết lập chính:
fly.toml để khớp với tên app và yêu cầu của bạn.Lưu ý bảo mật: Cấu hình mặc định để lộ URL công khai. Để triển khai được gia cố mà không có IP công khai, xem Triển khai riêng tư hoặc dùng fly.private.toml.| Thiết lập | Lý do |
|---|---|
--bind lan | Bind tới 0.0.0.0 để proxy của Fly có thể truy cập Gateway |
--allow-unconfigured | Khởi động không cần tệp cấu hình (bạn sẽ tạo sau) |
internal_port = 3000 | Phải khớp với --port 3000 (hoặc OPENCLAW_GATEWAY_PORT) cho health check của Fly |
memory = "2048mb" | 512MB quá nhỏ; khuyến nghị 2GB |
OPENCLAW_STATE_DIR = "/data" | Duy trì trạng thái trên volume |
Set secrets
- Các bind không phải loopback (
--bind lan) yêu cầu một đường dẫn xác thực Gateway hợp lệ. Ví dụ Fly.io này dùngOPENCLAW_GATEWAY_TOKEN, nhưnggateway.auth.passwordhoặc một triển khaitrusted-proxykhông phải loopback được cấu hình đúng cũng đáp ứng yêu cầu. - Hãy xử lý các token này như mật khẩu.
- Ưu tiên biến môi trường hơn tệp cấu hình cho mọi khóa API và token. Việc này giữ secrets ngoài
openclaw.json, nơi chúng có thể vô tình bị lộ hoặc ghi log.
Deploy
Create config file
SSH vào máy để tạo cấu hình phù hợp:Tạo thư mục và tệp cấu hình:Ghi chú: Với
OPENCLAW_STATE_DIR=/data, đường dẫn cấu hình là /data/openclaw.json.Ghi chú: Thay https://my-openclaw.fly.dev bằng origin thật của app Fly của bạn. Khi khởi động, Gateway gieo sẵn các origin Control UI cục bộ từ các giá trị runtime --bind và --port để lần boot đầu tiên có thể tiếp tục trước khi cấu hình tồn tại, nhưng truy cập trình duyệt qua Fly vẫn cần origin HTTPS chính xác được liệt kê trong gateway.controlUi.allowedOrigins.Ghi chú: Token Discord có thể đến từ một trong hai nơi:- Biến môi trường:
DISCORD_BOT_TOKEN(khuyến nghị cho secrets) - Tệp cấu hình:
channels.discord.token
DISCORD_BOT_TOKEN.Khởi động lại để áp dụng:Khắc phục sự cố
”App is not listening on expected address”
Gateway đang bind tới127.0.0.1 thay vì 0.0.0.0.
Cách sửa: Thêm --bind lan vào lệnh process trong fly.toml.
Health check thất bại / kết nối bị từ chối
Fly không thể truy cập Gateway trên cổng đã cấu hình. Cách sửa: Đảm bảointernal_port khớp với cổng Gateway (đặt --port 3000 hoặc OPENCLAW_GATEWAY_PORT=3000).
OOM / Vấn đề bộ nhớ
Container liên tục khởi động lại hoặc bị kill. Dấu hiệu:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration, hoặc khởi động lại im lặng.
Cách sửa: Tăng bộ nhớ trong fly.toml:
Vấn đề khóa Gateway
Gateway từ chối khởi động với lỗi “already running”. Điều này xảy ra khi container khởi động lại nhưng tệp khóa PID vẫn còn trên volume. Cách sửa: Xóa tệp khóa:/data/gateway.*.lock (không nằm trong thư mục con).
Cấu hình không được đọc
--allow-unconfigured chỉ bỏ qua guard khởi động. Nó không tạo hoặc sửa /data/openclaw.json, vì vậy hãy đảm bảo cấu hình thật của bạn tồn tại và bao gồm gateway.mode="local" khi bạn muốn khởi động Gateway cục bộ bình thường.
Xác minh cấu hình tồn tại:
Ghi cấu hình qua SSH
Lệnhfly ssh console -C không hỗ trợ chuyển hướng shell. Để ghi tệp cấu hình:
fly sftp có thể thất bại nếu tệp đã tồn tại. Hãy xóa trước:
Trạng thái không được duy trì
Nếu bạn mất profile xác thực, trạng thái kênh/nhà cung cấp, hoặc phiên sau khi khởi động lại, thư mục trạng thái đang ghi vào hệ thống tệp của container. Cách sửa: Đảm bảoOPENCLAW_STATE_DIR=/data được đặt trong fly.toml và triển khai lại.
Cập nhật
Cập nhật lệnh máy
Nếu bạn cần thay đổi lệnh khởi động mà không triển khai lại toàn bộ:fly deploy, lệnh máy có thể đặt lại về nội dung trong fly.toml. Nếu bạn đã thay đổi thủ công, hãy áp dụng lại sau khi triển khai.
Triển khai riêng tư (được gia cố)
Theo mặc định, Fly cấp phát IP công khai, khiến Gateway của bạn có thể truy cập tạihttps://your-app.fly.dev. Điều này tiện lợi nhưng có nghĩa là triển khai của bạn có thể bị các trình quét internet phát hiện (Shodan, Censys, v.v.).
Để triển khai được gia cố với không có phơi bày công khai, hãy dùng mẫu riêng tư.
Khi nào nên dùng triển khai riêng tư
- Bạn chỉ thực hiện lệnh gọi/tin nhắn ra ngoài (không có Webhook đi vào)
- Bạn dùng đường hầm ngrok hoặc Tailscale cho mọi callback Webhook
- Bạn truy cập Gateway qua SSH, proxy, hoặc WireGuard thay vì trình duyệt
- Bạn muốn triển khai ẩn khỏi các trình quét internet
Thiết lập
Dùngfly.private.toml thay vì cấu hình tiêu chuẩn:
fly ips list chỉ nên hiển thị IP loại private:
Truy cập triển khai riêng tư
Vì không có URL công khai, hãy dùng một trong các phương thức sau: Tùy chọn 1: Proxy cục bộ (đơn giản nhất)Webhook với triển khai riêng tư
Nếu bạn cần callback Webhook (Twilio, Telnyx, v.v.) mà không cần mở công khai:- Đường hầm ngrok - Chạy ngrok bên trong container hoặc dưới dạng sidecar
- Tailscale Funnel - Mở các đường dẫn cụ thể qua Tailscale
- Chỉ gửi ra ngoài - Một số nhà cung cấp (Twilio) hoạt động tốt cho cuộc gọi gửi ra mà không cần Webhook
webhookSecurity.allowedHosts thành tên máy chủ đường hầm công khai để các header máy chủ được chuyển tiếp được chấp nhận.
Lợi ích bảo mật
| Khía cạnh | Công khai | Riêng tư |
|---|---|---|
| Trình quét Internet | Có thể phát hiện | Bị ẩn |
| Tấn công trực tiếp | Có thể xảy ra | Bị chặn |
| Truy cập UI điều khiển | Trình duyệt | Proxy/VPN |
| Gửi Webhook | Trực tiếp | Qua đường hầm |
Ghi chú
- Fly.io sử dụng kiến trúc x86 (không phải ARM)
- Dockerfile tương thích với cả hai kiến trúc
- Với quy trình onboarding WhatsApp/Telegram, hãy dùng
fly ssh console - Dữ liệu bền vững nằm trên volume tại
/data - Signal yêu cầu Java + signal-cli; hãy dùng image tùy chỉnh và giữ bộ nhớ ở mức 2GB+.
Chi phí
Với cấu hình được khuyến nghị (shared-cpu-2x, RAM 2GB):
- ~$10-15/tháng tùy theo mức sử dụng
- Gói miễn phí bao gồm một phần hạn mức
Bước tiếp theo
- Thiết lập các kênh nhắn tin: Kênh
- Cấu hình Gateway: Cấu hình Gateway
- Luôn cập nhật OpenClaw: Cập nhật