Tento návod je kompletní od nuly: nainstaluje WSL2 + Ubuntu na Windows 11, nastaví Docker a spustí Codex CLI bezpečně v Docker sandboxu tak, aby viděl jen aktuální projektový adresář. Zároveň řeší reálné problémy z praxe: docker.sock permission denied, potíže s OAuth callbackem na localhost a „zapomenuté přihlášení“ po restartu WSL.
Doporučení: projekty drž ve WSL (
~/projects/...). Synology NAS používej hlavně na zálohy / git remote / snapshoty.
0) Co budeš mít na konci
- Ubuntu 24.04 LTS ve WSL2 na Windows 11
- Projekty ve WSL:
~/projects/<projekt> - Docker funkční ve WSL (
docker psbez sudo) - Codex CLI běží v izolovaném kontejneru nad projektem:
codexsafe - Přihlášení jen jednou (přežije nové kontejnery i restart WSL)
- Codex nevidí tvůj
/home/<uživatel>,/mnt/c, NAS… jen mountnutý projekt
1) Zapni virtualizaci (BIOS/UEFI)
V BIOS/UEFI zapni:
- Intel: VT-x
- AMD: SVM / AMD-V
Bez toho WSL2 často hlásí chyby typu „virtualizace není povolena“.
2) Nainstaluj WSL2 + Ubuntu na Windows 11
Otevři PowerShell jako administrátor a spusť:
wsl --install
Tím se:
- nainstaluje WSL
- nastaví WSL2 jako výchozí
- stáhne a nainstaluje Ubuntu (typicky poslední LTS)
Pokud už WSL máš, ale chceš jistotu WSL2:
wsl --update
wsl --set-default-version 2
Zjisti výchozí prostředí pro WSL
wsl -l -v
Nastav výchozí prostředí pro WSL
# Trvalé nastavení
wsl --set-default Ubuntu
# Dočasné nastavení
wsl -d Ubuntu
Restartuj Windows, pokud si o to systém řekne.
3) První spuštění Ubuntu
Spusť Ubuntu (z nabídky Start). Při prvním startu:
- vytvoř si Linux uživatele (např.
duckd) - nastav heslo (kvůli
sudo)
Ověř, že běžíš na WSL2:
uname -a
Mělo by tam být microsoft-standard-WSL2.
Ověř Ubuntu verzi:
lsb_release -a
Ideálně Ubuntu 24.04 LTS (noble).
4) Doporučená struktura projektů (ve WSL)
Vytvoř složku na projekty:
mkdir -p ~/projects
Příklad projektu:
mkdir -p ~/projects/mojeapp
cd ~/projects/mojeapp
Nedoporučení: pracovat v
/mnt/c/WINDOWS/system32apod. (výkon, práva, bezpečnost).
5) Nainstaluj Docker (doporučená cesta)
Varianta A (doporučeno): Docker Desktop ve Windows + WSL integrace
1) Nainstaluj Docker Desktop ve Windows 11. 2) Docker Desktop → Settings → General: zapni Use the WSL 2 based engine. 3) Docker Desktop → Settings → Resources → WSL Integration: zapni integraci pro své Ubuntu.
Pak ve WSL ověř:
docker --version
docker ps
Pokud ve WSL příkaz docker neexistuje, doinstaluj CLI:
sudo apt update
sudo apt install -y docker.io
Pozn.: Docker engine poběží v Docker Desktopu, WSL bude používat
dockerCLI.
6) Oprava: permission denied … /var/run/docker.sock
Typická chyba:
permission denied while trying to connect to the Docker daemon socket … /var/run/docker.sock
Ověř práva socketu:
ls -l /var/run/docker.sock
Správně bývá root docker a skupina má rw.
Přidej uživatele do skupiny docker:
sudo usermod -aG docker $USER
newgrp docker
Ověř:
groups
docker ps
Pokud to nepomůže, ve Windows PowerShell:
wsl --shutdown
Znovu otevři Ubuntu a ověř docker ps.
7) Nainstaluj Node.js ve WSL (pro build image)
Doporučeno Node 20:
sudo apt install -y nodejs npm
node -v
npm -v
8) Instaluj codex
sudo npm install -g @openai/codex
8) Vytvoř Docker image s Codex CLI (jednou)
Vytvoř si adresář pro build:
mkdir -p ~/codexbox
cd ~/codexbox
nano Dockerfile
Obsah Dockerfile:
FROM node:20-bullseye
RUN npm i -g @openai/codex
WORKDIR /workspace
Build:
docker build -t codexbox:node20 .
Pozn.: hláška o „legacy builder deprecated“ není chyba.
9) Trvalé přihlášení v sandboxu (persistence po restartu WSL)
Aby ses nemusel přihlašovat po každém restartu WSL / novém projektu, uložíme tokeny do persistentního “home” uživatele node:
mkdir -p ~/.codex-node-home
10) Spuštění Codexu bezpečně nad projektem (ručně)
V projektu:
cd ~/projects/mojeapp
docker run --rm -it -u node -e HOME=/home/node -v "$(pwd)":/workspace -v "$HOME/.codex-node-home":/home/node -w /workspace --cap-drop=ALL --security-opt no-new-privileges codexbox:node20 bash
Uvnitř kontejneru (jen poprvé):
codex login --device-auth
Potom už stačí:
codex
Doporučení: Device Auth je nejspolehlivější ve WSL/Docker a vyhne se problémům s OAuth callbackem na
localhost.
11) Alias codexsafe (doporučeno)
Ubuntu obvykle načítá ~/.bash_aliases z ~/.bashrc, takže aliasy je čisté dávat sem.
Otevři:
nano ~/.bash_aliases
Přidej jednořádkově:
alias codexsafe='docker run --rm -it -u node -e HOME=/home/node -v "$(pwd)":/workspace -v "$HOME/.codex-node-home":/home/node -w /workspace --cap-drop=ALL --security-opt no-new-privileges codexbox:node20 bash'
Načti:
source ~/.bashrc
Použití:
cd ~/projects/mojeapp
codexsafe
codex
12) Přepínání mezi projekty
Ukonči kontejner:
exit
nebo Ctrl+D.
Přejdi na další projekt:
cd ~/projects/jinyprojekt
codexsafe
codex
Kontejner se díky --rm po ukončení smaže, ale soubory v projektu zůstanou.
13) Kde projekt uvidíš z Windows
V Průzkumníku Windows otevři:
\\wsl$- nebo přímo:
\\wsl$\Ubuntu\home\<tvůj_uživatel>\projects
Rychlá metoda z WSL (otevře Explorer v aktuální složce):
explorer.exe .
14) Bezpečnost: proč jde ls .. a vidím /?
Když jsi v kontejneru v /workspace, .. je / kontejneru, ne hosta.
Kontejnerový / je součást Docker image (node:20-bullseye) – není to tvůj WSL root ani Windows disk. Host je dostupný jen přes explicitní mounty -v.
15) Troubleshooting (nejčastější chyby)
A) docker: command not found
- Zkontroluj Docker Desktop + WSL integraci (kapitola 5)
- nebo doinstaluj CLI:
sudo apt install -y docker.io
B) permission denied … docker.sock
Viz kapitola 6.
C) OAuth / localhost login nefunguje (ERR_EMPTY_RESPONSE)
Použij device auth:
codex login --device-auth
D) Codex po restartu WSL chce znovu login
Zkontroluj, že máš:
~/.codex-node-home- alias mountuje
-v "$HOME/.codex-node-home":/home/node - běžíš jako
node:-u node -e HOME=/home/node
E) WARNING: could not update PATH / Permission denied (os error 13)
To se stává, když mountuješ persistentní /root a práva nesedí. Řešení je právě běh jako node s persistentním /home/node (tento návod to používá).
16) NAS (Synology) doporučení
- Vývoj: lokálně ve WSL (
~/projects) - NAS: záloha / git remote / rsync / snapshoty
Práce přímo z NAS mountu je často pomalejší a může komplikovat práva pro Docker. Nejstabilnější je mít pracovní kopii ve WSL a NAS používat na ukládání/zálohy.
Hotovo
Tímto máš:
- kompletní instalaci WSL2 + Ubuntu,
- Docker ve WSL,
- bezpečný sandbox pro Codex,
- trvalé přihlášení,
- jednoduché přepínání projektů,
- a přístup k projektům z Windows.