# Claude Dev Container Docker container met Java development environment, Claude Code CLI, web terminal en Docker CLI. ## Features - πŸ”’ **Multiple Java versions** (11, 17, 21, 25) via SDKMAN - makkelijk switchen - πŸ€– **Claude Code CLI** - AI coding assistant in de terminal - πŸ–₯️ **Web terminal** (ttyd) met basic authentication - 🐳 **Docker CLI** - gebruikt host Docker socket (Synology compatible) - πŸ“¦ **Maven & Gradle** pre-installed - πŸ” **Password protected** terminal ## Installatie op Synology ### 1. Claude credentials voorbereiden (BELANGRIJK!) **Op je Mac** waar je al ingelogd bent in Claude Code: ```bash # Check of credentials bestaan ls -la ~/.claude # Kopieer naar NAS (pas IP aan) scp -r ~/.claude/ admin@[nas-ip]:/docker/claude-dev/claude-credentials ``` **Of via Finder:** 1. Cmd+Shift+G β†’ typ `~/.claude` 2. Kopieer de hele folder 3. Upload naar NAS via File Station β†’ `/docker/claude-dev/claude-credentials` ### 2. Bestanden voorbereiden Upload deze folder naar je Synology (bijv. via File Station naar `/docker/claude-dev`). **Structuur moet zijn:** ``` /docker/claude-dev/ β”œβ”€β”€ claude-credentials/ # GekopieΓ«rd van Mac ~/.claude β”‚ └── session.json # (en andere bestanden) β”œβ”€β”€ Dockerfile β”œβ”€β”€ docker-compose.yml β”œβ”€β”€ entrypoint.sh └── ... ``` ### 3. Wachtwoorden instellen ```bash cd /docker/claude-dev cp .env.example .env nano .env # Pas terminal wachtwoord aan ``` ### 4. Docker group ID checken (belangrijk!) SSH naar je Synology en check de Docker group ID: ```bash getent group docker ``` Je ziet iets als: `docker:x:999:...` Als het getal **niet** 999 is, pas het aan in `docker-compose.yml` bij `group_add`. ### 5. Container starten Via **Container Manager**: 1. Open Container Manager 2. Ga naar Project 3. Klik "Create" 4. Selecteer de folder met `docker-compose.yml` 5. Start het project **Of via SSH:** ```bash cd /docker/claude-dev docker compose up -d ``` ### 6. Toegang **Web Terminal**: `http://[synology-ip]:7681` - Login: gebruik `TERMINAL_USER` en `TERMINAL_PASSWORD` uit `.env` ## Claude Code gebruiken In de terminal: ```bash # Interactive chat claude chat # One-shot commando claude "Maak een Spring Boot REST API" # Met opties claude -p "Schrijf unit tests" --model claude-opus-4 # Hulp claude --help ``` Claude gebruikt automatisch je gemounte credentials uit `~/.claude`. ## Java versies switchen ```bash # Lijst van geΓ―nstalleerde versies sdk list java # Switch voor huidige sessie sdk use java 17.0.10-tem # Zet als default sdk default java 21.0.2-tem # Check huidige versie java -version ``` ## Docker gebruiken De container gebruikt de Docker socket van je Synology host: ```bash # Werkt gewoon docker ps docker images docker run hello-world docker compose up ``` ## Workspace persistentie Je code wordt opgeslagen in: `./workspace/` Deze map is gemount, dus je werk blijft bewaard na container restart. ## Troubleshooting ### Claude Code zegt "not authenticated" Check of credentials correct gemount zijn: ```bash # In de container ls -la ~/.claude cat ~/.claude/session.json ``` Als de folder leeg is: 1. Kopieer opnieuw vanaf Mac: `scp -r ~/.claude admin@[nas]:/docker/claude-dev/claude-credentials` 2. Check permissions: `chmod -R 755 ./claude-credentials` 3. Restart container ### Docker permission denied Check of de `group_add` in `docker-compose.yml` matcht met je Docker group ID: ```bash getent group docker ``` ### Container start niet Check logs: ```bash docker logs claude-dev-container ``` Of via Container Manager: selecteer container β†’ Details β†’ Log ### Poort in gebruik Pas de poort aan in `docker-compose.yml`: ```yaml ports: - "7682:7681" # bijv. 7682 in plaats van 7681 ``` ## Structuur ``` claude-dev-container/ β”œβ”€β”€ Dockerfile # Container definitie β”œβ”€β”€ docker-compose.yml # Synology deployment β”œβ”€β”€ entrypoint.sh # Startup script β”œβ”€β”€ .env # Wachtwoorden (niet committen!) β”œβ”€β”€ .env.example # Template voor .env β”œβ”€β”€ claude-credentials/ # GekopieΓ«rd van Mac ~/.claude (niet committen!) β”œβ”€β”€ workspace/ # Je code (persistent) └── README.md # Deze file ``` ## Custom aanpassingen ### Meer Java versies toevoegen Edit `Dockerfile`, voeg toe in de SDKMAN sectie: ```dockerfile sdk install java 23-tem && \ ``` ### Extra tools installeren In de `Dockerfile`, voeg toe bij apt-get install of maak een nieuwe RUN statement. ### Memory limits instellen In `docker-compose.yml`: ```yaml deploy: resources: limits: memory: 4G ``` ## Claude Code CLI opties ```bash # Model kiezen claude -m claude-opus-4 "vraag" claude -m claude-sonnet-4 "vraag" # Context toevoegen claude --context file1.java file2.java "refactor deze code" # Headless mode (non-interactive output) claude -p "genereer code" # Working directory claude --cwd /path/to/project "maak tests" ``` Zie volledige documentatie: https://code.claude.com/docs --- Veel plezier met coderen! πŸš€