5.0 KiB
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:
# 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:
- Cmd+Shift+G → typ
~/.claude - Kopieer de hele folder
- 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
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:
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:
- Open Container Manager
- Ga naar Project
- Klik "Create"
- Selecteer de folder met
docker-compose.yml - Start het project
Of via SSH:
cd /docker/claude-dev
docker compose up -d
6. Toegang
Web Terminal: http://[synology-ip]:7681
- Login: gebruik
TERMINAL_USERenTERMINAL_PASSWORDuit.env
Claude Code gebruiken
In de terminal:
# 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
# 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:
# 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:
# In de container
ls -la ~/.claude
cat ~/.claude/session.json
Als de folder leeg is:
- Kopieer opnieuw vanaf Mac:
scp -r ~/.claude admin@[nas]:/docker/claude-dev/claude-credentials - Check permissions:
chmod -R 755 ./claude-credentials - Restart container
Docker permission denied
Check of de group_add in docker-compose.yml matcht met je Docker group ID:
getent group docker
Container start niet
Check logs:
docker logs claude-dev-container
Of via Container Manager: selecteer container → Details → Log
Poort in gebruik
Pas de poort aan in docker-compose.yml:
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:
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:
deploy:
resources:
limits:
memory: 4G
Claude Code CLI opties
# 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! 🚀