forked from claude-did-this/claude-hub
This comprehensive update adds support for Claude Max subscription authentication and improves the overall authentication system with multiple methods: 🔐 Claude Authentication Enhancements: - Add setup container method for Claude Max/20x subscription usage ($20-200/month) - Create interactive authentication script (setup-claude-interactive.sh) - Add authentication testing utility (test-claude-auth.sh) - Support three authentication methods: Setup Container, API Key, AWS Bedrock - Comprehensive authentication documentation 📁 Directory Configuration: - Add CLAUDE_HUB_DIR environment variable (default: ~/.claude-hub) - Update .gitignore to use .claude-hub/ instead of hardcoded paths - Consistent environment variable usage across all scripts 🐙 GitHub Token Support: - Add fine-grained GitHub token support (github_pat_) alongside classic tokens (ghp_) - Update token validation in claudeService and githubService - Enhanced token detection and authentication flow 📖 Documentation & Guides: - Add complete Claude Authentication Guide with all three methods - Add Setup Container Deep Dive documentation - Update CLAUDE.md with quick start authentication section - Comprehensive cost comparison and use case recommendations 🐳 Container & Docker Improvements: - Update Dockerfile.claudecode with proper entrypoint script copying - Add Dockerfile.claude-setup for interactive authentication - Update docker-compose.yml with new port (3003) and environment variables - Enhanced container volume mounting for authentication 🔧 Infrastructure Updates: - Add TRUST_PROXY configuration for reverse proxy environments - Update port configuration from 3002 to 3003 - Enhanced environment variable documentation in .env.example - Debug utilities for troubleshooting authentication issues This update enables Claude Max subscribers to use their existing subscriptions for automation, potentially saving thousands in API costs while maintaining full production capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
93 lines
2.8 KiB
Docker
93 lines
2.8 KiB
Docker
FROM node:24
|
|
|
|
# Install dependencies
|
|
RUN apt update && apt install -y less \
|
|
git \
|
|
procps \
|
|
sudo \
|
|
fzf \
|
|
zsh \
|
|
man-db \
|
|
unzip \
|
|
gnupg2 \
|
|
gh \
|
|
iptables \
|
|
ipset \
|
|
iproute2 \
|
|
dnsutils \
|
|
aggregate \
|
|
jq
|
|
|
|
# Set up npm global directory
|
|
RUN mkdir -p /usr/local/share/npm-global && \
|
|
chown -R node:node /usr/local/share
|
|
|
|
# Configure zsh and command history
|
|
ENV USERNAME=node
|
|
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
|
&& mkdir /commandhistory \
|
|
&& touch /commandhistory/.bash_history \
|
|
&& chown -R $USERNAME /commandhistory
|
|
|
|
# Create workspace and config directories
|
|
RUN mkdir -p /workspace /home/node/.claude && \
|
|
chown -R node:node /workspace /home/node/.claude
|
|
|
|
# Switch to node user temporarily for npm install
|
|
USER node
|
|
ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global
|
|
ENV PATH=$PATH:/usr/local/share/npm-global/bin
|
|
|
|
# Install Claude Code
|
|
RUN npm install -g @anthropic-ai/claude-code
|
|
|
|
# Switch back to root
|
|
USER root
|
|
|
|
# Copy the pre-authenticated Claude config to BOTH root and node user
|
|
COPY claude-config /root/.claude
|
|
COPY claude-config /home/node/.claude
|
|
RUN chown -R node:node /home/node/.claude
|
|
|
|
# Copy the rest of the setup
|
|
WORKDIR /workspace
|
|
|
|
# Install delta and zsh
|
|
RUN ARCH=$(dpkg --print-architecture) && \
|
|
wget "https://github.com/dandavison/delta/releases/download/0.18.2/git-delta_0.18.2_${ARCH}.deb" && \
|
|
sudo dpkg -i "git-delta_0.18.2_${ARCH}.deb" && \
|
|
rm "git-delta_0.18.2_${ARCH}.deb"
|
|
|
|
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.0/zsh-in-docker.sh)" -- \
|
|
-p git \
|
|
-p fzf \
|
|
-a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
|
|
-a "source /usr/share/doc/fzf/examples/completion.zsh" \
|
|
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
|
-x
|
|
|
|
# Copy firewall and entrypoint scripts
|
|
COPY scripts/security/init-firewall.sh /usr/local/bin/
|
|
RUN chmod +x /usr/local/bin/init-firewall.sh && \
|
|
echo "node ALL=(root) NOPASSWD: /usr/local/bin/init-firewall.sh" > /etc/sudoers.d/node-firewall && \
|
|
chmod 0440 /etc/sudoers.d/node-firewall
|
|
|
|
# Create scripts directory and copy entrypoint scripts
|
|
RUN mkdir -p /scripts/runtime
|
|
COPY scripts/runtime/claudecode-entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
COPY scripts/runtime/claudecode-entrypoint.sh /scripts/runtime/claudecode-entrypoint.sh
|
|
COPY scripts/runtime/claudecode-tagging-entrypoint.sh /scripts/runtime/claudecode-tagging-entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/entrypoint.sh && \
|
|
chmod +x /scripts/runtime/claudecode-entrypoint.sh && \
|
|
chmod +x /scripts/runtime/claudecode-tagging-entrypoint.sh
|
|
|
|
# Set the default shell to bash
|
|
ENV SHELL /bin/zsh
|
|
ENV DEVCONTAINER=true
|
|
|
|
# Run as root to allow permission management
|
|
USER root
|
|
|
|
# Use the custom entrypoint
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|