Cel: OpenClaw Gateway działający na maszynie Fly.io z trwałym magazynem danych, automatycznym HTTPS oraz dostępem do Discord/kanału.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.
Czego potrzebujesz
- Zainstalowany flyctl CLI
- Konto Fly.io (wystarczy darmowa warstwa)
- Uwierzytelnianie modelu: klucz API dla wybranego dostawcy modelu
- Poświadczenia kanałów: token bota Discord, token Telegram itd.
Szybka ścieżka dla początkujących
- Sklonuj repozytorium → dostosuj
fly.toml - Utwórz aplikację i wolumin → ustaw sekrety
- Wdróż za pomocą
fly deploy - Połącz się przez SSH, aby utworzyć konfigurację, albo użyj interfejsu Control UI
Utwórz aplikację Fly
lhr (Londyn), iad (Wirginia), sjc (San Jose).Skonfiguruj fly.toml
Edytuj Obraz Docker OpenClaw używa
fly.toml, aby odpowiadał nazwie i wymaganiom Twojej aplikacji.Uwaga dotycząca bezpieczeństwa: Domyślna konfiguracja wystawia publiczny URL. Aby uzyskać wzmocnione wdrożenie bez publicznego IP, zobacz Wdrożenie prywatne albo użyj deploy/fly.private.toml.tini jako punktu wejścia. Polecenia procesów Fly zastępują Docker CMD bez zastępowania ENTRYPOINT, więc proces nadal działa pod tini.Kluczowe ustawienia:| Ustawienie | Dlaczego |
|---|---|
--bind lan | Wiąże z 0.0.0.0, aby proxy Fly mogło dotrzeć do Gateway |
--allow-unconfigured | Uruchamia bez pliku konfiguracji (utworzysz go później) |
internal_port = 3000 | Musi pasować do --port 3000 (lub OPENCLAW_GATEWAY_PORT) dla kontroli zdrowia Fly |
memory = "2048mb" | 512 MB to za mało; zalecane są 2 GB |
OPENCLAW_STATE_DIR = "/data" | Utrwala stan na woluminie |
Ustaw sekrety
- Powiązania inne niż local loopback (
--bind lan) wymagają prawidłowej ścieżki uwierzytelniania Gateway. Ten przykład Fly.io używaOPENCLAW_GATEWAY_TOKEN, alegateway.auth.passwordalbo poprawnie skonfigurowane wdrożenietrusted-proxyinne niż local loopback również spełniają to wymaganie. - Traktuj te tokeny jak hasła.
- Preferuj zmienne środowiskowe zamiast pliku konfiguracji dla wszystkich kluczy API i tokenów. Dzięki temu sekrety pozostają poza
openclaw.json, gdzie mogłyby zostać przypadkowo ujawnione lub zapisane w logach.
Wdróż
Utwórz plik konfiguracji
Połącz się z maszyną przez SSH, aby utworzyć właściwą konfigurację:Utwórz katalog i plik konfiguracji:Uwaga: Przy
OPENCLAW_STATE_DIR=/data ścieżka konfiguracji to /data/openclaw.json.Uwaga: Zastąp https://my-openclaw.fly.dev rzeczywistym originem swojej aplikacji Fly. Podczas uruchamiania Gateway zasila lokalne originy Control UI wartościami runtime --bind i --port, aby pierwszy rozruch mógł się odbyć przed utworzeniem konfiguracji, ale dostęp przez przeglądarkę przez Fly nadal wymaga dokładnego originu HTTPS wymienionego w gateway.controlUi.allowedOrigins.Uwaga: Token Discord może pochodzić z jednego z dwóch miejsc:- Zmienna środowiskowa:
DISCORD_BOT_TOKEN(zalecane dla sekretów) - Plik konfiguracji:
channels.discord.token
DISCORD_BOT_TOKEN.Uruchom ponownie, aby zastosować:Uzyskaj dostęp do Gateway
Rozwiązywanie problemów
„Aplikacja nie nasłuchuje na oczekiwanym adresie”
Gateway wiąże się z127.0.0.1 zamiast 0.0.0.0.
Rozwiązanie: Dodaj --bind lan do polecenia procesu w fly.toml.
Niepowodzenia kontroli kondycji / odmowa połączenia
Fly nie może połączyć się z Gateway na skonfigurowanym porcie. Rozwiązanie: Upewnij się, żeinternal_port odpowiada portowi Gateway (ustaw --port 3000 albo OPENCLAW_GATEWAY_PORT=3000).
OOM / problemy z pamięcią
Kontener ciągle uruchamia się ponownie albo jest zabijany. Oznaki:SIGABRT, v8::internal::Runtime_AllocateInYoungGeneration albo ciche restarty.
Rozwiązanie: Zwiększ ilość pamięci w fly.toml:
Problemy z blokadą Gateway
Gateway odmawia uruchomienia z błędami „already running”. Dzieje się tak, gdy kontener uruchamia się ponownie, ale plik blokady PID pozostaje na woluminie. Rozwiązanie: Usuń plik blokady:/data/gateway.*.lock (nie w podkatalogu).
Konfiguracja nie jest odczytywana
--allow-unconfigured tylko omija zabezpieczenie startowe. Nie tworzy ani nie naprawia /data/openclaw.json, więc upewnij się, że rzeczywista konfiguracja istnieje i zawiera gateway.mode="local", gdy chcesz normalnie uruchomić lokalny Gateway.
Sprawdź, czy konfiguracja istnieje:
Zapisywanie konfiguracji przez SSH
Poleceniefly ssh console -C nie obsługuje przekierowania powłoki. Aby zapisać plik konfiguracji:
fly sftp może się nie powieść, jeśli plik już istnieje. Najpierw go usuń:
Stan nie jest zachowywany
Jeśli po restarcie tracisz profile uwierzytelniania, stan kanału/dostawcy albo sesje, katalog stanu jest zapisywany w systemie plików kontenera. Rozwiązanie: Upewnij się, żeOPENCLAW_STATE_DIR=/data jest ustawione w fly.toml, i wdróż ponownie.
Aktualizacje
Aktualizowanie polecenia maszyny
Jeśli musisz zmienić polecenie startowe bez pełnego ponownego wdrożenia:fly deploy polecenie maszyny może zostać zresetowane do tego, co znajduje się w fly.toml. Jeśli wprowadzono ręczne zmiany, zastosuj je ponownie po wdrożeniu.
Prywatne wdrożenie (utwardzone)
Domyślnie Fly przydziela publiczne adresy IP, dzięki czemu Twój Gateway jest dostępny pod adresemhttps://your-app.fly.dev. To wygodne, ale oznacza, że wdrożenie może zostać wykryte przez skanery internetowe (Shodan, Censys itd.).
Aby uzyskać utwardzone wdrożenie bez publicznej ekspozycji, użyj prywatnego szablonu.
Kiedy używać prywatnego wdrożenia
- Wykonujesz tylko wywołania/wiadomości wychodzące (bez przychodzących webhooków)
- Używasz tuneli ngrok lub Tailscale dla wszelkich wywołań zwrotnych Webhook
- Uzyskujesz dostęp do Gateway przez SSH, proxy lub WireGuard, a nie przez przeglądarkę
- Chcesz, aby wdrożenie było ukryte przed skanerami internetowymi
Konfiguracja
Użyjdeploy/fly.private.toml zamiast standardowej konfiguracji:
fly ips list powinno pokazywać tylko adres IP typu private:
Dostęp do prywatnego wdrożenia
Ponieważ nie ma publicznego adresu URL, użyj jednej z tych metod: Opcja 1: Lokalne proxy (najprostsze)Webhooki w prywatnym wdrożeniu
Jeśli potrzebujesz wywołań zwrotnych webhooków (Twilio, Telnyx itd.) bez ekspozycji publicznej:- Tunel ngrok - Uruchom ngrok wewnątrz kontenera albo jako sidecar
- Tailscale Funnel - Udostępnij określone ścieżki przez Tailscale
- Tylko ruch wychodzący - Niektórzy dostawcy (Twilio) działają poprawnie dla połączeń wychodzących bez webhooków
webhookSecurity.allowedHosts na publiczną nazwę hosta tunelu, aby przekazywane nagłówki hosta były akceptowane.
Korzyści bezpieczeństwa
| Aspekt | Publiczne | Prywatne |
|---|---|---|
| Skanery internetowe | Wykrywalne | Ukryte |
| Bezpośrednie ataki | Możliwe | Blokowane |
| Dostęp do UI kontroli | Przeglądarka | Proxy/VPN |
| Dostarczanie webhooków | Bezpośrednie | Przez tunel |
Uwagi
- Fly.io używa architektury x86 (nie ARM)
- Dockerfile jest zgodny z obiema architekturami
- Do onboardingu WhatsApp/Telegram użyj
fly ssh console - Dane trwałe znajdują się na woluminie w
/data - Signal wymaga Java + signal-cli; użyj obrazu niestandardowego i utrzymuj pamięć na poziomie co najmniej 2 GB.
Koszt
Przy zalecanej konfiguracji (shared-cpu-2x, 2 GB RAM):
- ~10-15 USD miesięcznie, zależnie od użycia
- Darmowy plan obejmuje pewien przydział
Następne kroki
- Skonfiguruj kanały wiadomości: Kanały
- Skonfiguruj Gateway: Konfiguracja Gateway
- Utrzymuj OpenClaw w aktualnej wersji: Aktualizowanie