---
title: 'Windows 11 + WSL2 (Ubuntu 24.04) + Docker sandbox + Codex CLI nad projektem'
url: 'https://duckd.cz/en/home/wsl2-ubuntu-codex-cli-windows-11-instalace-a-spusteni-nad-projektem'
markdown: 'https://duckd.cz/en/home/wsl2-ubuntu-codex-cli-windows-11-instalace-a-spusteni-nad-projektem.md'
lang: en
date: '2026-09-17'
description: '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 „zapo…'
taxonomy:
  category:
    - ai
    - linux
    - windows
  tag:
    - windows-11
    - wsl2
    - ubuntu
    - docker
    - codex
    - cli
    - sandbox
  author:
    - josef-kubat
---

Documentation

# Windows 11 + WSL2 (Ubuntu 24.04) + Docker sandbox + Codex CLI nad projektem

 [› Obsah stránky](#content) [› Zpět](https://duckd.cz/en) [› Nahoru](#top) 

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 ps` bez 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ť:

```powershell
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:

```powershell
wsl --update
wsl --set-default-version 2
```

Zjisti výchozí prostředí pro WSL

```powershell
wsl -l -v
```

Nastav výchozí prostředí pro WSL

```powershell
# 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:

```bash
uname -a
```

Mělo by tam být `microsoft-standard-WSL2`.

Ověř Ubuntu verzi:

```bash
lsb_release -a
```

Ideálně Ubuntu 24.04 LTS (noble).

---

## 4) Doporučená struktura projektů (ve WSL)

Vytvoř složku na projekty:

```bash
mkdir -p ~/projects
```

Příklad projektu:

```bash
mkdir -p ~/projects/mojeapp
cd ~/projects/mojeapp
```

> Nedoporučení: pracovat v `/mnt/c/WINDOWS/system32` apod. (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ěř:

```bash
docker --version
docker ps
```

Pokud ve WSL příkaz `docker` neexistuje, doinstaluj CLI:

```bash
sudo apt update
sudo apt install -y docker.io
```

> Pozn.: Docker engine poběží v Docker Desktopu, WSL bude používat `docker` CLI.

---

## 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:

```bash
ls -l /var/run/docker.sock
```

Správně bývá `root docker` a skupina má `rw`.

Přidej uživatele do skupiny `docker`:

```bash
sudo usermod -aG docker $USER
newgrp docker
```

Ověř:

```bash
groups
docker ps
```

Pokud to nepomůže, ve Windows PowerShell:

```powershell
wsl --shutdown
```

Znovu otevři Ubuntu a ověř `docker ps`.

---

## 7) Nainstaluj Node.js ve WSL (pro build image)

Doporučeno Node 20:

```bash
sudo apt install -y nodejs npm
node -v
npm -v
```

## 8) Instaluj codex

```bash
 sudo npm install -g @openai/codex
```

## 8) Vytvoř Docker image s Codex CLI (jednou)

Vytvoř si adresář pro build:

```bash
mkdir -p ~/codexbox
cd ~/codexbox
nano Dockerfile
```

Obsah `Dockerfile`:

```Dockerfile
FROM node:20-bullseye
RUN npm i -g @openai/codex
WORKDIR /workspace
```

Build:

```bash
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`:

```bash
mkdir -p ~/.codex-node-home
```

---

## 10) Spuštění Codexu bezpečně nad projektem (ručně)

V projektu:

```bash
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é):

```bash
codex login --device-auth
```

Potom už stačí:

```bash
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:

```bash
nano ~/.bash_aliases
```

Přidej **jednořádkově**:

```bash
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:

```bash
source ~/.bashrc
```

Použití:

```bash
cd ~/projects/mojeapp
codexsafe
codex
```

---

## 12) Přepínání mezi projekty

Ukonči kontejner:

```bash
exit
```

nebo `Ctrl+D`.

Přejdi na další projekt:

```bash
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):

```bash
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:

```bash
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:

```bash
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.

© www.duckd.cz

`Grav + Twig` • `atedo-quark` • `2026-09-25`

---

## Navigation

- Parent: [Home](https://duckd.cz/en/index.md)
- Previous: [Arduino LoRa](https://duckd.cz/en/home/arduino-lora.md)
- Next: [Synology OpenVPN -- Duplicitní IP adresy klientů (řešení)](https://duckd.cz/en/home/synology-openvpn-duplicitni-ip-adresy-klientu.md)
