240 lines
5.0 KiB
Markdown
240 lines
5.0 KiB
Markdown
# 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! 🚀
|