Spaces:
Sleeping
Sleeping
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # HF Docker Space β Ollama + Claude Code (web terminal) | |
| # Exposed port : 7860 (only port HF Spaces forwards) | |
| # Web terminal : ttyd (full interactive Claude CLI in browser) | |
| # Model : gpt-oss:20b via Ollama Anthropic-compat API | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| FROM ubuntu:22.04 | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # ββ System packages ββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y \ | |
| curl wget git ca-certificates gnupg zstd \ | |
| && \ | |
| # Node.js 20 LTS (needed by Claude Code CLI) | |
| curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ | |
| apt-get install -y nodejs && \ | |
| # Ollama | |
| curl -fsSL https://ollama.com/install.sh | sh && \ | |
| # ttyd β browser-based terminal (static binary, no extra deps) | |
| wget -q -O /usr/local/bin/ttyd \ | |
| https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64 && \ | |
| chmod +x /usr/local/bin/ttyd && \ | |
| rm -rf /var/lib/apt/lists/* | |
| # ββ Claude Code CLI (global npm install as root) βββββββββββββ | |
| RUN npm install -g @anthropic-ai/claude-code | |
| # ββ HF Spaces requires UID 1000 ββββββββββββββββββββββββββββββ | |
| RUN useradd -m -u 1000 user | |
| # Switch to user 1000 for all runtime operations | |
| USER user | |
| ENV HOME=/home/user | |
| ENV PATH=/home/user/.local/bin:/usr/local/bin:$PATH | |
| # ββ Point Claude Code at local Ollama (no Anthropic key needed) | |
| ENV ANTHROPIC_AUTH_TOKEN=ollama | |
| ENV ANTHROPIC_API_KEY=ollama | |
| ENV ANTHROPIC_BASE_URL=http://localhost:11434 | |
| # Ollama: listen on all interfaces so internal health-checks work | |
| ENV OLLAMA_HOST=0.0.0.0:11434 | |
| # Store models under user home (writable at runtime) | |
| ENV OLLAMA_MODELS=/home/user/.ollama/models | |
| # Skip Claude Code's first-run login wizard | |
| ENV CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 | |
| WORKDIR /home/user | |
| # Copy startup script | |
| COPY --chown=user entrypoint.sh /home/user/entrypoint.sh | |
| RUN chmod +x /home/user/entrypoint.sh | |
| # ββ Only one port is forwarded by HF Spaces ββββββββββββββββββ | |
| EXPOSE 7860 | |
| CMD ["/home/user/entrypoint.sh"] | |