Commit graph

42 commits

Author SHA1 Message Date
docker-claude
f68ed674d0 feat: add non-technical user onboarding
- setup.sh: interactive wizard for Docker check and auth configuration
- launch.sh: folder-picker launcher (macOS native dialog, zenity/kdialog on Linux, text fallback)
- launch.bat: Windows launcher using PowerShell folder browser + Git Bash
- claude.sh: friendlier error messages with actionable links; prompt setup.sh if .env missing
- hooks/pre-commit: add setup.sh and launch.sh to executable enforcement
- README: add Quick Start section aimed at non-technical users

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:13:34 +02:00
docker-claude
51e7ab2b08 fix(proxy): close port-6443 allowlist bypass in squid ACLs
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m16s
The kubectl_api ACL allowed CONNECT tunnels to any host on port 6443,
bypassing the domain allowlist entirely. Remove it and require cluster
hostnames to be added explicitly to allowed_sites instead.

Also remove the localhost and .local entries — these aren't needed for
Claude Code or the configured MCP servers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:07:22 +02:00
docker-claude
698b06aafd fix: ash doesn't seem to work with the claude script
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m4s
2026-04-16 09:48:42 +02:00
docker-claude
6e5744b456 fix claude install
Some checks failed
Build images / check-docker (push) Successful in 2s
Build images / build-and-push (push) Failing after 1m0s
2026-04-16 09:38:46 +02:00
docker-claude
0fa411a178 docs: updated inline docs
Some checks failed
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Failing after 1m5s
2026-04-15 22:43:00 +02:00
docker-claude
f4cf8056e9 docs(readme): sync with current state after webui removal
Remove webui from architecture, commands, and security table.
Update auth option 3 to reference ~/.claude instead of claude-config volume.
Drop stale registry path comment and web interface section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:41:28 +02:00
docker-claude
b76d1e5e2a chore(docker): pin Claude Code install to stable release channel
Some checks failed
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Failing after 58s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:40:01 +02:00
docker-claude
27feedf65e chore(hooks): restore executable bit on hooks/pre-commit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 22:02:15 +02:00
docker-claude
e78a302cb9 feat: remove webui
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m15s
2026-04-15 21:59:08 +02:00
docker-claude
1dee611fb3 fix repository path
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m46s
2026-04-15 21:39:10 +02:00
docker-claude
8b4f08e68c chore(hooks): fix executable bit on build.sh and hooks/pre-commit
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 5m5s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 21:19:46 +02:00
docker-claude
2002ea7b32 chore(registry): use docker-public registry path
Update image references from registry.zeidler.dev/docker/playground to
registry.zeidler.dev/docker-public/playground in docker-compose.yml and build.sh.
Also bind-mount ${HOME}/.claude instead of using the claude-config named volume.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 21:19:33 +02:00
docker-claude
4edef5ac1a fix stuff finally?
All checks were successful
Build images / check-docker (push) Successful in 2s
Build images / build-and-push (push) Successful in 5m27s
2026-04-15 19:18:48 +02:00
docker-claude
1b141b200c use new native install 2026-04-15 19:18:39 +02:00
docker-claude
ab7e909c3c make sure that files are executable
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 4m19s
2026-04-15 17:55:01 +02:00
docker-claude
c328427517 feat(proxy): allow platform.claude.com in egress allowlist 2026-04-15 17:53:26 +02:00
docker-claude
f07a30bd0b chore(hooks): enforce executable bit on claude.sh and build.sh via pre-commit hook 2026-04-15 17:16:58 +02:00
docker-claude
6a060aa8ab fix(workflow): remove build contexts from compose; build.sh uses docker build directly 2026-04-15 17:15:51 +02:00
docker-claude
3f91b27c94 refactor(claude.sh): use array for volume args, merge run into start, tighten helpers 2026-04-15 17:14:37 +02:00
docker-claude
a5af0a5427 ci: also tag builds as latest
All checks were successful
Build images / check-docker (push) Successful in 2s
Build images / build-and-push (push) Successful in 4m53s
2026-04-15 17:06:53 +02:00
docker-claude
f4a6bc0a99 fix(claude.sh): add --no-build to prevent fallback to local build 2026-04-15 17:05:44 +02:00
docker-claude
2d822305d1 refactor(images): pull from registry instead of building; add build.sh for local dev 2026-04-15 17:02:43 +02:00
docker-claude
ff9ed447c0 update workflow
All checks were successful
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Successful in 4m30s
2026-04-15 16:52:40 +02:00
docker-claude
50cfa9da4e fix workflow
Some checks failed
Build images / check-docker (push) Successful in 3s
Build images / build-and-push (push) Failing after 52s
2026-04-15 16:49:55 +02:00
docker-claude
1dbbbc840d ci: add Forgejo action to build and push Docker images to registry
Some checks failed
Build and push Docker images / build (./claude, claude) (push) Failing after 33s
Build and push Docker images / build (./proxy, proxy) (push) Failing after 11s
2026-04-15 08:56:25 +02:00
docker-claude
659fb3f339 feat(proxy): allow CONNECT tunnels to Kubernetes API server port 6443 2026-04-15 08:49:11 +02:00
docker-claude
1c01d49f51 feat(claude): install kubectl into container image 2026-04-15 08:47:32 +02:00
docker-claude
c3c3fcd099 feat(workspace): add --kube flag to mount $HOME/.kube read-only into container 2026-04-15 08:45:05 +02:00
docker-claude
c3875397b0 feat(security): block user home dirs and SSH/PGP key directories from workspace mount 2026-04-15 08:43:09 +02:00
docker-claude
65ac4c7011 feat(security): block mounting home and system directories as workspace 2026-04-15 08:40:50 +02:00
docker-claude
3401fa38a5 refactor(workspace): mount CWD as /workspace instead of named volume
Run from the project directory you want to work on; claude.sh mounts
it automatically. Removes WORKSPACE_DIR env var support and the
named claude-secure-workspace Docker volume.
2026-04-15 08:10:44 +02:00
docker-claude
e19d4eb0a3 feat(mcp): add GitHub, GitLab, Jira, and Confluence MCP servers
Install four MCP servers globally in the claude image:
  @modelcontextprotocol/server-github  → mcp-server-github
  @yoda.digital/gitlab-mcp-server      → gitlab-mcp-server
  @aashari/mcp-server-atlassian-jira   → mcp-atlassian-jira
  @aashari/mcp-server-atlassian-confluence → mcp-atlassian-confluence

Wire them in managed-settings.json via mcpServers with env var
pass-through. Jira and Confluence share ATLASSIAN_* credentials.
Add api.github.com, .gitlab.com, .atlassian.net to the squid
allowlist. All credentials are optional — servers are skipped
if the relevant env vars are unset.
2026-04-14 23:09:42 +02:00
docker-claude
c65ed15653 refactor(policy): rename managed-settings.json to settings.json 2026-04-14 22:59:25 +02:00
docker-claude
6410f22f1d feat(policy): allow bash and file modification tools without prompting
Add permissions.allow to managed-settings.json for Bash(*), Edit(*),
and Write(*). Claude Code will not prompt for confirmation on shell
commands or file writes inside the container.
2026-04-14 22:57:29 +02:00
docker-claude
3adc97d901 feat(policy): restrict available models to sonnet, opus, haiku
Add /etc/claude-code/managed-settings.json with availableModels set to
the three Anthropic model families. The file is root-owned inside the
container so the node user cannot modify it. Managed settings cannot be
bypassed via --model flag, /model command, or ANTHROPIC_MODEL env var.
2026-04-14 22:55:02 +02:00
docker-claude
1c489f8636 refactor(claude): use built-in node user instead of custom claude user
Drop the addgroup/adduser layer entirely. node:20-alpine already ships
a node user at uid/gid 1000. Update chown and USER directives, and
update the claude-config volume mount path to /home/node/.claude.
2026-04-14 22:50:59 +02:00
docker-claude
0800e4a084 fix(claude): use gid/uid 1001 for claude user
node:20-alpine reserves gid/uid 1000 for its built-in node user,
causing addgroup to fail. Shift claude to 1001.
2026-04-14 22:49:42 +02:00
docker-claude
ba3730a24d feat(auth): support subscription login alongside API key
Make ANTHROPIC_API_KEY optional. Add CLAUDE_CODE_OAUTH_TOKEN pass-through
for headless token-based auth (claude setup-token). When neither is set,
Claude Code falls back to browser OAuth on port 54545. Add claude-config
named volume mounted at ~/.claude/ in both claude and webui services so
credentials persist across container runs. Pre-create ~/.claude/ in the
Dockerfile so the volume is initialised with correct ownership. Add
--service-ports to docker compose run calls to publish port 54545 during
CLI sessions.
2026-04-14 22:47:04 +02:00
docker-claude
88805a3c24 refactor(docker): migrate both images to Alpine
Replace node:20-slim/ubuntu:22.04 with node:20-alpine/alpine:3.21.
Switch package management from apt to apk (--no-cache, no cleanup layer).
Use Alpine addgroup/adduser in claude/Dockerfile. Update proxy to use
squid user (Alpine convention) and /var/cache/squid cache path.
Fix proxy/Dockerfile COPY path now that context is proxy/. Move
webui-entrypoint.sh into claude/ to match its build context. Fix
docker-compose.yml webui context to claude/, update proxy tmpfs path.
2026-04-14 22:40:57 +02:00
docker-claude
782370e014 update permissions 2026-04-14 22:26:51 +02:00
docker-claude
9b8562b746 feat(webui): add browser terminal interface via ttyd
Adds a webui service to docker-compose that wraps Claude Code in ttyd,
serving a browser-accessible terminal on port 7681. The webui reuses
Dockerfile.claude (ttyd added to apt deps) with a dedicated entrypoint
script that enforces WEBUI_PASSWORD before starting. Network isolation
is identical to the CLI container: claude-internal only, all egress via
the proxy allowlist. claude.sh gains web and web-stop commands.
2026-04-14 22:25:38 +02:00
c01102b641 initial 2026-04-14 20:11:24 +02:00