Commit graph

26 commits

Author SHA1 Message Date
docker-claude
12d75b0dc2 fix(docker): patch picomatch 4.0.3 → 4.0.4 (CVE-2026-33671)
Some checks failed
Build images / check-docker (push) Successful in 0s
Build images / scan (push) Failing after 2m18s
Build images / build-and-push (push) Has been skipped
npm@11.12.1 still bundles picomatch@4.0.3. Add a find-loop after the npm
upgrade to patch every occurrence in node_modules in place. Also restore
and clean up the MCP server install and CVE patch blocks that were
accidentally commented out.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:05:05 +02:00
docker-claude
a79aad9fc8 fix(security): remove MCP credentials from managed-settings.json; bump Trivy to 0.70.0
Some checks failed
Build images / check-docker (push) Successful in 1s
Build images / scan (push) Failing after 50s
Build images / build-and-push (push) Has been skipped
settings.json is COPY-ed into the image at build time. Putting MCP server
config with credential env references there risks baking tokens into the
image if placeholders are ever replaced with real values. Move MCP server
config to ~/.claude/settings.json (runtime volume mount) instead.
Managed settings now contains policy only: models, permissions, telemetry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:00:37 +02:00
docker-claude
9b931bcfd7 temporarily remove mcp servers
Some checks failed
Build images / check-docker (push) Successful in 1s
Build images / scan (push) Failing after 30s
Build images / build-and-push (push) Has been skipped
2026-04-20 15:54:15 +02:00
docker-claude
526ff6dc2e Revert "feat: remove MCP servers"
Some checks failed
Build images / check-docker (push) Successful in 1s
Build images / scan (push) Failing after 1m42s
Build images / build-and-push (push) Has been skipped
This reverts commit a9ff78b494.
2026-04-20 15:32:29 +02:00
docker-claude
a9ff78b494 feat: remove MCP servers
Remove all four MCP server packages from the Dockerfile along with their
associated env vars (docker-compose.yml, .env.example) and egress allowlist
entries (squid.conf).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:32:05 +02:00
docker-claude
eb5f240d3e fix(docker): patch transitive CVEs in MCP server dependencies
MCP servers bundle their own copies of vulnerable packages. After global
install, patch nested node_modules in each server directly:
- @modelcontextprotocol/sdk 1.0.1 → 1.25.2 (CVE-2025-66414, CVE-2026-0621)
- picomatch 4.0.3 → 4.0.4 (CVE-2026-33671)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:28:20 +02:00
docker-claude
ec329ca616 chore(docker): upgrade base image to node:24-alpine (LTS)
Node 24 (Krypton) is the current LTS release.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:16:52 +02:00
docker-claude
e056e5c006 chore(docker): pin npm to 11.12.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:15:51 +02:00
docker-claude
19c59a2fb3 fix(docker): upgrade npm to remediate 11 HIGH CVEs in bundled dependencies
All findings are in npm's own bundled packages (cross-spawn, glob,
minimatch, tar). Upgrading npm to latest pulls in the patched versions:
- cross-spawn ≥7.0.5 (CVE-2024-21538)
- glob ≥10.5.0 (CVE-2025-64756)
- minimatch ≥9.0.6 (CVE-2026-26996, CVE-2026-27903, CVE-2026-27904)
- tar ≥7.5.11 (CVE-2026-23745, CVE-2026-23950, CVE-2026-24842,
               CVE-2026-26960, CVE-2026-29786, CVE-2026-31802)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:14:58 +02:00
docker-claude
484e0fecb8 revert(docker): switch back to node:20-alpine base image
Some checks failed
Build images / check-docker (push) Successful in 0s
Build images / scan (push) Failing after 57s
Build images / build-and-push (push) Has been skipped
dhi.io is unreachable on the company network, blocking apk during build.
Trivy scanning in CI provides vulnerability coverage in the meantime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:28:45 +02:00
docker-claude
edeae9dc4b security: use dhi image for nodejs
Some checks failed
Build images / check-docker (push) Successful in 4s
Build images / scan (push) Failing after 27s
Build images / build-and-push (push) Has been skipped
2026-04-16 22:46:52 +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
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
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
1b141b200c use new native install 2026-04-15 19:18:39 +02:00
docker-claude
1c01d49f51 feat(claude): install kubectl into container image 2026-04-15 08:47:32 +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