Konfiguracja

Codex CLI na VPS-ie

Codex dobrze działa na małym serwerze z Linuksem. Najwięcej tarcia jest przy logowaniu i z sandboxem na Linuksie. Ten poradnik opisuje instalację, logowanie bez przeglądarki, podtrzymywanie sesji i dostęp do serwera z telefonu.

Codex CLI na VPS-ie

Krótka odpowiedź

Zainstaluj przez curl -fsSL https://chatgpt.com/codex/install.sh | sh (lub npm install -g @openai/codex). Następnie włącz logowanie kodem urządzenia w ustawieniach bezpieczeństwa ChatGPT i uruchom codex login --device-auth na serwerze. Uruchamiaj Codexa w tmux lub w demonie, żeby przetrwał Twoje połączenie SSH. Remote w aplikacji ChatGPT oficjalnie obsługuje tylko hosty z macOS i Windows. Do VPS-a z Linuksem dotrzesz wyłącznie przez taki host: aplikacja desktopowa ChatGPT na Macu lub PC, który nie zasypia, otwiera go jako projekt SSH. Aby łączyć się z VPS-em bezpośrednio z telefonu, użyj aplikacji SSH albo klienta, który rozmawia z serwerem, takiego jak Maude.

Serwer to dobre miejsce dla Codex CLI od OpenAI. Pracuje, gdy laptop jest zamknięty, przetrwa zerwane połączenie, a jeśli coś pójdzie nie tak, możesz postawić maszynę od nowa. Na świeżym VPS-ie z Linuksem ludzie potykają się o dwie rzeczy. Po pierwsze, zwykłe codex login czeka na przekierowanie z przeglądarki, które nigdy nie dotrze do serwera. Po drugie, sandbox wymaga pakietu, którego większość minimalnych obrazów nie zawiera. Ten poradnik rozwiązuje oba problemy, a potem opisuje podtrzymywanie sesji i sposoby dostępu do nich z telefonu.

Wymagania

  • Serwer z Linuksem, x86-64 lub arm64. OpenAI publikuje pliki binarne dla obu, działa też macOS. Debian lub Ubuntu to najprostsza droga.
  • Konto. Plan ChatGPT albo klucz API OpenAI. Według cennika Codexa od OpenAI Codex wchodzi w skład ChatGPT Free, Go, Plus, Pro, Business, Edu i Enterprise. Limity różnią się w zależności od planu, a lokalne użycie CLI dzieli pulę z czatami w chmurze. Użycie z kluczem API jest zamiast tego rozliczane według stawek API.
  • Pamięć. CLI to skompilowany plik binarny i sam potrzebuje niewiele pamięci. RAM zużywają buildy i testy Twojego projektu. 2 GB wystarczą do lekkiej pracy, 4 GB to komfort. Dobór rozmiaru i aktualne ceny znajdziesz w poradniku zakupowym VPS.
  • Użytkownik inny niż root. Utwórz go przed instalacją czegokolwiek (adduser dev, potem skopiuj klucz SSH). Nasz poradnik Claude Code na VPS opisuje to i utwardzanie SSH; kroki są takie same dla Codexa.

Instalacja Codexa

Samodzielny instalator nie wymaga Node.js:

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version

Jeśli już zarządzasz narzędziami przez npm, to polecenie instaluje to samo CLI:

npm install -g @openai/codex

Uważaj na zakres: pakiet to @openai/codex. Pakiet codex bez zakresu w npm nie ma z tym nic wspólnego. Instaluj jako zwykły użytkownik, nie przez sudo. Obie metody są opisane w README openai/codex.

Wymaganie sandboxa na Linuksie

Na Linuksie Codex uruchamia generowane polecenia powłoki w sandboxie zbudowanym na bwrap (bubblewrap) i seccomp. Dokumentacja sandboxa od OpenAI każe najpierw zainstalować bubblewrap:

sudo apt install bubblewrap      # Debian / Ubuntu
sudo dnf install bubblewrap      # Fedora

Bez bwrap Codex korzysta z dołączonego programu pomocniczego, a ten wymaga nieuprzywilejowanych przestrzeni nazw użytkownika. Ubuntu 24.04 ogranicza je przez AppArmor. Udokumentowane rozwiązanie ładuje dodatkowy profil:

sudo apt install apparmor-profiles apparmor-utils
sudo install -m 0644 /usr/share/apparmor/extra-profiles/bwrap-userns-restrict /etc/apparmor.d/bwrap-userns-restrict
sudo apparmor_parser -r /etc/apparmor.d/bwrap-userns-restrict

Dokumentacja podaje też bardziej toporną alternatywę, sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, która wyłącza to ograniczenie dla całej maszyny. Wybierz profil. Jeśli każde polecenie w sandboxie kończy się błędem przestrzeni nazw, przyczyna jest właśnie tutaj.

Logowanie kodem urządzenia

Uruchom zwykłe codex login na serwerze, a wygląda, jakby się zawiesiło. Dlaczego: uruchamia lokalny serwer callbacku na porcie 1455 i czeka, aż Twoja przeglądarka zostanie przekierowana na localhost. To localhost serwera, do którego Twój telefon ani laptop nie mają dostępu. Zamiast tego użyj logowania kodem urządzenia. Ma jedno wymaganie, o które potyka się niemal każdy:

  1. Włącz logowanie kodem urządzenia. Na koncie prywatnym zrób to w ustawieniach bezpieczeństwa ChatGPT. W workspace Business, Edu lub Enterprise włącza je administrator w uprawnieniach workspace'u. Dopóki nie jest włączone, logowanie urządzenia nie zadziała na Twoim koncie.
  2. Rozpocznij proces na serwerze:
    codex login --device-auth
  3. Dokończ go na dowolnym urządzeniu. Codex wypisuje link i jednorazowy kod. Otwórz link na telefonie lub laptopie, zaloguj się do ChatGPT i wpisz kod.
  4. Sprawdź, czy zadziałało:
    codex login status
    Wypisuje aktywny tryb uwierzytelniania i kończy się kodem 0, gdy logowanie jest aktywne, co przydaje się w skryptach.

To z dokumentacji uwierzytelniania OpenAI. Podaje ona dwa rozwiązania zapasowe na wypadek, gdy kod urządzenia nie jest dostępny:

  • Przekieruj port callbacku. Połącz się przez ssh -L 1455:localhost:1455 user@your-server, uruchom codex login na serwerze i otwórz wypisany adres w lokalnej przeglądarce. Przekierowanie wraca wtedy przez tunel.
  • Skopiuj dane logowania. Zaloguj się na maszynie z przeglądarką, a potem scp ~/.codex/auth.json user@your-server:~/.codex/auth.json.

Klucz API zamiast planu

printenv OPENAI_API_KEY | codex login --with-api-key

Przekazanie klucza przez stdin trzyma go z dala od historii powłoki. Płacisz za tokeny według cen API zamiast korzystać z planu ChatGPT. To dobre rozwiązanie dla współdzielonej maszyny lub CI, gdzie chcesz twardej granicy rozliczeń.

Traktuj auth.json jak hasło

Domyślnie Codex przechowuje dane logowania w ~/.codex/auth.json. Ustawienie cli_auth_credentials_store może przenieść je do pęku kluczy systemu (file, keyring, auto lub ephemeral). Każdy z powłoką jako Twój użytkownik może korzystać z Twojego planu ChatGPT. Nie dawaj innym dostępu do powłoki na maszynie z agentem.

Utrzymanie w działaniu

Interaktywna sesja codex żyje i umiera razem z terminalem, który ją uruchomił. Zamknij połączenie SSH, a sesja się skończy. Są trzy sposoby, żeby to obejść.

tmux, klasyka:

sudo apt install tmux
tmux new -A -s codex     # create or re-attach
cd ~/src/my-app && codex
# detach: Ctrl-b then d; later: tmux attach -t codex

Jeśli sesja jednak się skończy, codex resume --last podejmuje ostatnią rozmowę w tym katalogu, a codex resume otwiera listę do wyboru. Nasz poradnik o tmux, mosh i Tailscale zawiera konfigurację tmux przyjazną dla telefonu.

Uruchomienia nieinteraktywne. codex exec "…" wykonuje jedno zadanie bez TUI, a codex exec resume --last je kontynuuje. To pasuje do zadań cron i CI, ale nie ma tam nikogo, kto odpowie na prośby o zatwierdzenie, więc poniższe ustawienia sandboxa mają większe znaczenie.

Demon, który jest właścicielem sesji i przetrwa restarty. To właśnie porównuje poradnik o pracy 24/7: jednostki systemd, serwery Remote Control i aplikacje takie jak Maude, które uruchamiają na maszynie własny proces.

Zatwierdzanie i sandbox

Codex ma dwie osobne kontrolki: czego mogą dotykać polecenia (sandbox) i kiedy zatrzymuje się, by Cię zapytać (polityka zatwierdzania). Poniższe wartości pochodzą z dokumentacji zatwierdzania i bezpieczeństwa OpenAI oraz dokumentacji CLI:

UstawienieWartościCo oznacza na serwerze
--sandbox / -sread-only, workspace-write, danger-full-accessworkspace-write to wartość domyślna w repozytorium git. Edycje zostają w projekcie, a dostęp do sieci jest wyłączony, dopóki go nie włączysz.
--ask-for-approval / -aon-request, neveron-request pyta, gdy akcja wymaga więcej, niż pozwala sandbox. never w ogóle nie pyta. W config.toml approval_policy przyjmuje też granular; dawna wartość untrusted została wycofana.
--yolo(alias --dangerously-bypass-approvals-and-sandbox)Bez sandboxa i bez pytań. OpenAI przeznacza go dla środowisk już zabezpieczonych z zewnątrz.

--full-auto wciąż pojawia się w starszych poradnikach. To teraz przestarzała flaga zgodności, a dokumentacja każe zamiast niej używać --sandbox workspace-write. Żeby polecenia w sandboxie miały dostęp do sieci, na przykład żeby działało npm install, dodaj to do ~/.codex/config.toml:

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[sandbox_workspace_write]
network_access = true

Uwaga o kontenerach: jeśli Twój „VPS” to w rzeczywistości kontener Docker lub LXC, który blokuje operacje na przestrzeniach nazw, dokumentacja sugeruje --sandbox danger-full-access. Rób to tylko wtedy, gdy sam kontener jest Twoim sandboxem. Kompromisy są takie same jak przy trybie bypass w Claude, opisanym w tekście bezpieczne uruchamianie agentów z pełnymi uprawnieniami.

Opcje dostępu z telefonu

OpcjaDziała z VPS-em z Linuksem?Mocna stronaNa co uważać
Codex Remote (aplikacja ChatGPT)Oficjalnie nie. Hosty muszą mieć aplikację desktopową ChatGPT na macOS lub Windows; ta aplikacja może łączyć się z projektami SSH na Twoim VPS-ie.Oficjalne, darmowe w ramach planu, natywny interfejsKomputer-host musi pozostać aktywny i online
Aplikacja SSH + tmuxTakDarmowe, nic dodatkowego na serwerzePełnoekranowy TUI na klawiaturze telefonu, bez push
MaudeTak (dowolny Linux lub macOS przez SSH)Natywny interfejs czatu, zatwierdzanie w treści, push, także Claude Code i innePłatna aplikacja; nadal potrzebujesz własnego planu ChatGPT lub klucza

Słowo o Linuksie bez interfejsu i Codex Remote. Dokumentacja CLI opisuje codex remote-control start i codex remote-control pair dla lokalnego app-servera. Przewodnik po połączeniach zdalnych nadal jednak mówi, że hosty uruchamiają aplikację desktopową na macOS lub Windows. Użytkownicy otworzyli zgłoszenia w tej sprawie: #31183 zgłasza, że hostów Linux bez interfejsu nie da się ponownie sparować z obecnymi klientami mobilnymi, a #35928 wskazuje na sprzeczność. Oba były otwarte, gdy sprawdzaliśmy. Jeśli ta ścieżka u Ciebie działa, to jest ona oficjalna. Po prostu nie opieraj jeszcze na niej swojego sposobu pracy.

Sterowanie z telefonu przez Maude

Maude to jeden ze sposobów na sterowanie tym VPS-em z telefonu bez TUI. Dodajesz serwer po adresie lub wklejonym poleceniem ssh, a aplikacja wdraża przez SSH własnego, małego demona. Ten demon instaluje Codexa w przetestowanej, przypiętej wersji, zweryfikowanej sumą kontrolną, więc pomijasz krok instalacji. Do Codexa logujesz się z telefonu kodem urządzenia ChatGPT lub kluczem API. Nadal musisz najpierw włączyć logowanie kodem urządzenia w ChatGPT. Sesje działają dalej na serwerze, gdy aplikacja jest zamknięta, prośby o zatwierdzenie pojawiają się w skrzynce i jako powiadomienia push z Zezwól/Odmów, a ten sam serwer może obok Codexa uruchamiać Claude Code, OpenCode, Grok Build i Antigravity. Szczegóły są na stronie agenta Codex.

Najczęściej zadawane pytania

Dlaczego codex login zawiesza się na moim serwerze?
Zwykłe codex login uruchamia serwer callbacku na localhost:1455 i czeka na przekierowanie z przeglądarki, którego przeglądarka na innym urządzeniu nie dostarczy do Twojego VPS-a. Użyj codex login --device-auth po włączeniu logowania kodem urządzenia w ustawieniach bezpieczeństwa ChatGPT. Ewentualnie przekieruj port przez ssh -L 1455:localhost:1455.
Czy do uruchomienia Codexa potrzebuję Node.js?
Nie. Samodzielny instalator (curl -fsSL https://chatgpt.com/codex/install.sh | sh) i pliki binarne z wydań nie wymagają Node. Node jest potrzebny tylko wtedy, gdy wybierzesz drogę przez npm, npm install -g @openai/codex.
Czy mogę użyć klucza API zamiast planu ChatGPT?
Tak: printenv OPENAI_API_KEY | codex login --with-api-key. Użycie jest wtedy rozliczane według stawek API OpenAI, a nie wliczane w pulę planu ChatGPT.
Czy Codex Remote widzi mój VPS?
Na razie tylko pośrednio. Dokumentacja Remote od OpenAI wymienia jako hosta aplikację desktopową ChatGPT na macOS lub Windows, a ta aplikacja może otwierać projekty SSH na VPS-ie. Ścieżka parowania przez CLI (codex remote-control) jest udokumentowana, ale otwarte zgłoszenia na GitHubie mówią o problemach z parowaniem hostów Linux bez interfejsu, więc zanim na niej oprzesz pracę, sprawdź aktualną dokumentację.
Jakiego trybu sandboxa użyć na VPS-ie?
Zacznij od workspace-write z zatwierdzaniem on-request i włącz network_access, jeśli Twoje buildy muszą pobierać pakiety. --yolo zostaw dla maszyn jednorazowych lub kontenerów, których izolacji ufasz.

Co się zmieniło

  • — Pierwsza publikacja. Instalacja, uwierzytelnianie, sandbox i Remote sprawdzone tego dnia w dokumentacji OpenAI i README openai/codex.

Codex na Twoim serwerze, z telefonu

Dodaj serwer, zaloguj się planem ChatGPT i rozpocznij sesję. iOS i Android.

Download Maude on the App Store Get Maude on Google Play