Initial commit: Claude Dev Container with Java multi-version, Docker CLI, and web terminal

This commit is contained in:
openclaw
2026-02-24 16:58:17 +00:00
commit a84835cd7e
10 changed files with 732 additions and 0 deletions

239
README.md Normal file
View File

@@ -0,0 +1,239 @@
# 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! 🚀