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:

  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

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:

  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:

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:

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

  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:

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! 🚀

Description
No description provided
Readme 31 KiB
Languages
Shell 54.4%
Dockerfile 34.9%
Makefile 10.7%