🌍 English | Español | Français | Italiano | Português | Deutsch | Русский | हिन्दी | 中文 | 日本語 | 한국어
एक कमांड। पूरा AI डेवलपमेंट वर्कस्टेशन। Claude Code, वेब UI, हेडलेस ब्राउज़र, 7 AI CLIs, 50+ डेव टूल्स — कंटेनराइज़्ड और तैयार।
आप इसे मैन्युअली सेट अप करने में 2 घंटे लगाने वाले थे। या बस docker compose up कर सकते हैं।
आपकी मौजूदा Claude Code सब्सक्रिप्शन के साथ काम करता है। Max/Pro प्लान, API key — जो भी आपके पास है, यह बस काम करता है।
आप इसे जानते हैं। आप Claude Code चाहते हैं। लेकिन आप इसे ब्राउज़र में भी चाहते हैं। स्क्रीनशॉट और टेस्टिंग के लिए हेडलेस ब्राउज़र के साथ। Playwright कॉन्फ़िगर के साथ। हर AI CLI के साथ। TypeScript, Python, डिप्लॉयमेंट टूल्स, डेटाबेस क्लाइंट्स, GitHub CLI के साथ।
तो आप चीजें इंस्टॉल करना शुरू करते हैं। एक-एक करके। फिर Chromium लॉन्च नहीं होता क्योंकि Docker की शेयर्ड मेमोरी 64MB है। फिर Xvfb कॉन्फ़िगर नहीं है। फिर कंटेनर के अंदर का UID आपके होस्ट से मेल नहीं खाता और सब कुछ permission denied है। फिर आपको पता चलता है कि Claude Code का इंस्टॉलर रुक जाता है जब WORKDIR root-owned हो। फिर SQLite आपके NAS माउंट पर लॉक हो जाता है। फिर—
HolyClaude वह कंटेनर है जो मैंने उन सभी समस्याओं को हल करने के बाद बनाया।
मैं इसे हफ्तों से अपने सर्वर पर रोज़ाना चला रहा हूं। हर बग को हिट किया गया, डायग्नोज़ किया गया, और ठीक किया गया। हर एज केस को संभाला गया। हर "Docker में यह क्यों काम नहीं करता" का जवाब दिया गया।
आप इसे पुल करते हैं। आप इसे चलाते हैं। आप अपना ब्राउज़र खोलते हैं। आप बनाते हैं।
यह असली Claude Code CLI चलाता है। कोई wrapper नहीं। कोई proxy नहीं। कोई नकल नहीं।
आपका मौजूदा Anthropic अकाउंट सीधे काम करता है:
- Claude Max/Pro प्लान — CloudCLI वेब UI के ज़रिए authenticate करें (OAuth), डेस्कटॉप Claude Code जैसा ही
- Anthropic API key — वेब UI में अपनी API key डालें, हमेशा की तरह वही बिलिंग
- कोई अतिरिक्त लागत नहीं — HolyClaude मुफ़्त और ओपन सोर्स है। आप Anthropic को सिर्फ उसी चीज़ के लिए पे करते हैं जो आप use करते हैं, जैसा आप पहले से करते हैं।
HolyClaude आपके credentials को नहीं छूता। वे आपके bind-mounted volume (
./data/claude/) में locally स्टोर होते हैं, वैसे ही जैसे bare metal पर होते।
1. HolyClaude के लिए एक फ़ोल्डर बनाएं:
mkdir holyclaude && cd holyclaude2. एक docker-compose.yaml फ़ाइल बनाएं। नीचे दिए गए टेम्पलेट में से एक कॉपी करें:
- त्वरित टेम्पलेट — न्यूनतम, ज़ीरो कॉन्फ़िग, बस काम करता है
- पूर्ण टेम्पलेट — सभी विकल्प, पूरी तरह से डॉक्युमेंटेड
3. पुल करें और शुरू करें:
docker compose up -d4. वेब UI खोलें:
http://localhost:3001
5. एक CloudCLI अकाउंट बनाएं (10 सेकंड लगते हैं), अपने Anthropic अकाउंट से साइन इन करें, और आप live हैं।
कोई
.envफ़ाइलें नहीं। कोई प्री-कॉन्फ़िगरेशन नहीं। शुरू करने से पहले 40 पेज के डॉक्स पढ़ने की ज़रूरत नहीं। यह बस चलता है।
अपने network के बाहर से access करना चाहते हैं? Port-forward मत करें। Remote Access और Exposure देखें — Tailscale या Cloudflare Tunnel use करें।
| प्लेटफ़ॉर्म | स्थिति | नोट्स |
|---|---|---|
| Linux (amd64) | ✅ पूरी तरह समर्थित | नेटिव परफॉर्मेंस, अनुशंसित |
| Linux (arm64) | ✅ पूरी तरह समर्थित | Raspberry Pi 4+, Oracle Cloud, AWS Graviton |
| macOS (Docker Desktop) | ✅ पूरी तरह समर्थित | Apple Silicon और Intel via Docker Desktop |
| Windows (WSL2 + Docker Desktop) | ✅ पूरी तरह समर्थित | WSL2 backend आवश्यक |
| Synology / QNAP NAS | ✅ पूरी तरह समर्थित | SMB माउंट के लिए CHOKIDAR_USEPOLLING=true उपयोग करें |
| Kubernetes | 🔜 जल्द आ रहा है | Helm chart योजनाबद्ध |
मैंने यह इसलिए बनाया क्योंकि मैं हर बार एक ही सेटअप दोबारा करते-करते थक गया था। Claude Code इंस्टॉल करना, एक वेब UI वायर करना, Docker में Chromium कॉन्फ़िगर करना, permission issues ठीक करना, process supervision डीबग करना। हर बार।
तो मैंने एक कंटेनर बनाया जो यह सब करता है। और फिर मैंने हर संभव बग को हिट किया ताकि आपको न करना पड़े।
| HolyClaude | खुद करना | |
|---|---|---|
| सेटअप | 30 सेकंड | 1-2 घंटे (अगर अच्छा जाए) |
| Claude Code | प्री-इंस्टॉल्ड, प्री-कॉन्फ़िगर्ड, तैयार | इंस्टॉल करें, कॉन्फ़िगर करें, इंस्टॉलर हैंग डीबग करें, WORKDIR ठीक करें |
| Web UI | CloudCLI plugins के साथ शामिल | एक वेब UI ढूंढें, इंस्टॉल करें, कॉन्फ़िगर करें, Claude से जोड़ें |
| हेडलेस ब्राउज़र | Chromium + Xvfb + Playwright, कॉन्फ़िगर्ड | Chromium इंस्टॉल करें, Xvfb इंस्टॉल करें, display :99 कॉन्फ़िगर करें, shm ठीक करें, sandbox ठीक करें, seccomp ठीक करें... |
| AI CLIs | 7 providers, एक कंटेनर | हर एक को 3 package managers में अलग-अलग इंस्टॉल करें |
| Dev tools | 50+ टूल्स, तैयार | अगले एक घंटे के लिए apt-get install / npm i -g / pip install |
| Process management | s6-overlay (auto-restart, graceful shutdown) | अपना supervisord config लिखें या Docker restart काम करने की उम्मीद रखें |
| Persistence | Bind mounts, credentials सब कुछ survive करते हैं | Docker volumes समझें, "यह directory क्यों है file नहीं" डीबग करें |
| अपडेट | docker pull && docker compose up -d |
50 टूल्स मैन्युअली अपडेट करें, प्रार्थना करें कुछ टूटे नहीं |
| Multi-arch | AMD64 + ARM64 | प्रार्थना करें कि आपका Dockerfile ARM पर बिल्ड हो |
हर मैन्युअल सेटअप की आखिरी पंक्ति होती है "मेरी मशीन पर काम करता है।" HolyClaude हर मशीन पर काम करता है।
HolyClaude Anthropic का आधिकारिक Claude Code CLI चलाता है। आपका मौजूदा अकाउंट out of the box काम करता है।
| प्रमाणीकरण विधि | कैसे | लागत |
|---|---|---|
| Claude Max/Pro प्लान (सब्सक्रिप्शन) | CloudCLI वेब UI के ज़रिए साइन इन करें — डेस्कटॉप जैसा ही OAuth flow | आपकी मौजूदा सब्सक्रिप्शन, कोई अतिरिक्त शुल्क नहीं |
| Anthropic API key | वेब UI में अपनी API key पेस्ट करें | Pay-per-use, वही Anthropic बिलिंग |
| क्यों | |
|---|---|
| Claude के लिए OpenAI API key | अलग कंपनी, अलग API। OpenAI keys Codex CLI के साथ काम करती हैं (जो भी प्री-इंस्टॉल्ड है) |
ChatGPT Plus/Pro सब्सक्राइबर्स: आपकी सब्सक्रिप्शन Codex CLI के साथ काम करती है। अपने ChatGPT अकाउंट से authenticate करने के लिए कंटेनर के अंदर
codex login --device-authचलाएं।
| CLI | आपको क्या चाहिए |
|---|---|
| Gemini CLI | Google AI API key (GEMINI_API_KEY) |
| OpenAI Codex | OpenAI API key (OPENAI_API_KEY) या ChatGPT Plus/Pro सब्सक्रिप्शन (codex login --device-auth) |
| Cursor | Cursor API key (CURSOR_API_KEY) |
| TaskMaster AI | आपकी AI provider keys का उपयोग करता है (Anthropic, OpenAI, आदि) |
| Junie | JetBrains अकाउंट (JetBrains AI सब्सक्रिप्शन) |
| OpenCode | opencode TUI के ज़रिए कॉन्फ़िगर करें (कई providers समर्थित) |
HolyClaude मुफ़्त और ओपन सोर्स है। आप अपने AI providers को उपयोग के लिए पे करते हैं, जैसा आप पहले से करते हैं। हम आपके credentials को proxy, intercept, या touch नहीं करते। वे आपके local bind mount में रहते हैं।
दो विकल्प। समान गुणवत्ता। अपना वज़न वर्ग चुनें।
| Tag | आपको क्या मिलता है | किसके लिए सबसे अच्छा |
|---|---|---|
latest |
सब कुछ प्री-इंस्टॉल्ड — हर टूल, हर लाइब्रेरी, हर CLI | अधिकांश उपयोगकर्ता। ज़ीरो wait time। Claude को कभी रुककर कुछ इंस्टॉल नहीं करना पड़ता। |
slim |
केवल core tools — Claude अतिरिक्त चीजें on-demand इंस्टॉल करता है | छोटा VPS, सीमित disk, मीटर्ड bandwidth |
X.Y.Z |
पूर्ण इमेज, pinned version | Production stability — आप तय करते हैं कब अपडेट करना है |
X.Y.Z-slim |
Slim इमेज, pinned version | Production + छोटा footprint |
# Full — batteries included (अनुशंसित)
docker pull coderluii/holyclaude
# Slim — lean and mean
docker pull coderluii/holyclaude:slim
latestहमेशा पूर्ण इमेज है। Slim उपयोगकर्ता: चिंता न करें — जब आप Claude से कुछ ऐसा करवाते हैं जिसके लिए कोई missing टूल चाहिए, तो वह सेकंडों में इंस्टॉल हो जाता है। आपको वही क्षमताएं मिलती हैं, बस छोटा initial download।
"मैं बस इसे चलाना चाहता हूं" टेम्पलेट। इस पूरे block को एक docker-compose.yaml फ़ाइल में कॉपी करें:
# ==============================================================================
# HolyClaude — Quick Start
# Just run: docker compose up -d
# Then open: http://localhost:3001
# ==============================================================================
services:
holyclaude:
image: coderluii/holyclaude:latest # Full image (use :slim for smaller download)
container_name: holyclaude
hostname: holyclaude
restart: unless-stopped
shm_size: 2g # Chromium needs this — don't remove
network_mode: bridge
cap_add:
- SYS_ADMIN # Required: Chromium sandboxing
- SYS_PTRACE # Required: debugging tools
security_opt:
- seccomp=unconfined # Required: Chromium in Docker
ports:
- "3001:3001" # CloudCLI web UI
volumes:
#
# ./data/claude — Your settings, credentials, API keys, and Claude's memory.
# This is what survives container rebuilds.
# NEVER delete this folder — your auth lives here.
#
- ./data/claude:/home/claude/.claude
#
# ./workspace — Your code. All projects go here.
# Bind-mounted so you can access files from your host.
#
- ./workspace:/workspace
environment:
- TZ=UTC # Your timezone (e.g., America/New_York, Europe/London)फिर:
docker compose up -dhttp://localhost:3001 खोलें। CloudCLI अकाउंट बनाएं। अपने Anthropic अकाउंट से साइन इन करें। कुछ बनाएं।
बस यही पूरा सेटअप है। आप कर चुके हैं।
SYS_ADMIN+seccomp=unconfinedक्यों? Chromium को Docker के अंदर चलाने के लिए ये चाहिए — यह किसी भी कंटेनराइज़्ड ब्राउज़र के लिए मानक है (Playwright docs, Puppeteer docs, हर CI pipeline जो browser tests चलाती है)। इनके बिना, Chromium startup पर crash हो जाता है। यह HolyClaude के लिए कोई अनोखा security risk नहीं है।
shm_size: 2gक्यों? Docker डिफ़ॉल्ट रूप से containers को 64MB shared memory देता है। Chromium tab rendering के लिए/dev/shmका भारी उपयोग करता है। 64MB पर, tabs randomly crash होते हैं। किसी भी Chromium-in-Docker सेटअप के लिए 2GB अनुशंसित न्यूनतम है।
वही इमेज, हर विकल्प exposed। इस पूरे block को एक docker-compose.yaml फ़ाइल में कॉपी करें:
# ==============================================================================
# HolyClaude — Full Configuration
# All options documented inline.
# Detailed docs: https://github.com/CoderLuii/HolyClaude/blob/master/docs/configuration.md
# ==============================================================================
services:
holyclaude:
image: coderluii/holyclaude:latest # Full image (use :slim for smaller download)
container_name: holyclaude
hostname: holyclaude
restart: unless-stopped
shm_size: 2g # Chromium shared memory — increase to 4g for heavy browser use
network_mode: bridge
cap_add:
- SYS_ADMIN # Required: Chromium sandboxing
- SYS_PTRACE # Required: debugging tools (strace, lsof)
security_opt:
- seccomp=unconfined # Required: Chromium syscall requirements
ports:
#
# CloudCLI web UI — this is the only port you need.
# Override the host-side port from `.env` if 3001 is already in use.
#
- "${HOLYCLAUDE_HOST_PORT:-3001}:3001"
#
# Dev server ports — uncomment as needed.
# These let you access dev servers running inside the container from your host browser.
#
# - "3000:3000" # Next.js / Express
# - "4321:4321" # Astro
# - "5173:5173" # Vite
# - "8787:8787" # Wrangler (Cloudflare Workers)
# - "9229:9229" # Node.js debugger
volumes:
#
# PERSISTENT DATA
#
# ./data/claude — Settings, credentials, API keys, Claude's memory file.
# Survives container rebuilds. NEVER delete this folder.
# Override the host path from `.env` if you want it elsewhere.
#
- ${HOLYCLAUDE_HOST_CLAUDE_DIR:-./data/claude}:/home/claude/.claude
#
# ./workspace — Your code and projects. Everything you build goes here.
# Accessible from your host machine.
# Override the host path from `.env` if you want a different root.
#
- ${HOLYCLAUDE_HOST_WORKSPACE_DIR:-./workspace}:/workspace
environment:
#
# TIMEZONE
# Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
#
- TZ=UTC
#
# PERFORMANCE
# Node.js heap memory limit in MB. Increase if you work on large monorepos
# and hit out-of-memory errors. 4096 (4GB) is a solid default.
#
- NODE_OPTIONS=--max-old-space-size=4096
#
# USER MAPPING
# Match these to your host user so files created inside the container
# have the right ownership on your host. Run `id -u` and `id -g` on your host.
#
- PUID=1000
- PGID=1000
#
# SMB/CIFS NETWORK MOUNTS
# Only enable these if your volumes are on a NAS, Samba share, or CIFS mount.
# They enable polling-based file watching since network mounts don't support inotify.
# Leave commented out for local storage — polling uses more CPU.
#
# - CHOKIDAR_USEPOLLING=1
# - WATCHFILES_FORCE_POLLING=true
#
# NOTIFICATIONS (optional)
# Get notified when Claude finishes a task or hits an error.
# Uses Apprise — supports 100+ services. Also requires creating a flag file
# inside the container: touch ~/.claude/notify-on
#
# - NOTIFY_DISCORD=discord://webhook_id/webhook_token
# - NOTIFY_TELEGRAM=tg://bot_token/chat_id
# - NOTIFY_PUSHOVER=pover://user_key@app_token
# - NOTIFY_SLACK=slack://token_a/token_b/token_c
# - NOTIFY_EMAIL=mailto://user:pass@gmail.com?to=you@gmail.com
# - NOTIFY_GOTIFY=gotify://hostname/token
# - NOTIFY_URLS= # catch-all: comma-separated Apprise URLs
#
# AI PROVIDER KEYS (optional)
# Claude Code can authenticate via web UI (OAuth) or ANTHROPIC_API_KEY.
# Set these if you want to use additional AI CLIs or API-based auth.
#
# - GEMINI_API_KEY=your_key
# - OPENAI_API_KEY=your_key
# - CURSOR_API_KEY=your_keyफिर:
docker compose up -dअगर आप compose edit किए बिना host-side port या bind-mount paths बदलना चाहते हैं, तो .env.example को .env में कॉपी करें और सेट करें:
HOLYCLAUDE_HOST_PORT=3003
HOLYCLAUDE_HOST_CLAUDE_DIR=./data/claude
HOLYCLAUDE_HOST_WORKSPACE_DIR=./workspaceये values Docker Compose द्वारा host पर पढ़ी जाती हैं। ये container environment variables नहीं हैं।
| Section | यह क्या करता है | कब बदलें |
|---|---|---|
| Timezone | Container clock | हमेशा — अपने local TZ पर सेट करें |
| Performance | Node.js memory ceiling | सिर्फ तब जब बड़े projects पर OOM errors हों |
| User mapping | Container और host के बीच file permissions | अगर आपको "permission denied" मिले (id -u और id -g अपने host पर चलाएं) |
| SMB/CIFS | File watcher polling mode | सिर्फ तब जब आपके volumes NAS या network share पर हों |
| Notifications | Apprise के ज़रिए push alerts (Discord, Telegram, Slack, Email, 100+ services) | अगर आप जाना चाहते हैं और जानना चाहते हैं कि Claude कब done हो |
| AI providers | Gemini, Codex, Cursor, Junie, OpenCode के लिए API keys | अगर आप Claude के अलावा अन्य AI CLIs उपयोग करना चाहते हैं |
हर एक environment variable optional है। Container सिर्फ
TZ=UTCके साथ perfectly चलता है। बाकी सब में sensible defaults हैं या वेब UI के ज़रिए handle होते हैं।
पूरा संदर्भ। हर variable, इसका default क्या है, यह क्या करता है।
| Variable | Default | यह क्या करता है |
|---|---|---|
TZ |
UTC |
Container timezone |
PUID |
1000 |
Container user ID — permission issues से बचने के लिए अपने host से मिलाएं |
PGID |
1000 |
Container group ID — permission issues से बचने के लिए अपने host से मिलाएं |
NODE_OPTIONS |
--max-old-space-size=4096 |
Node.js heap memory limit in MB |
GIT_USER_NAME |
HolyClaude User |
Git commit author (पहले boot पर एक बार सेट) |
GIT_USER_EMAIL |
noreply@holyclaude.local |
Git commit email (पहले boot पर एक बार सेट) |
CHOKIDAR_USEPOLLING |
(unset) | SMB/CIFS के लिए 1 सेट करें — polling file watchers enable करता है |
WATCHFILES_FORCE_POLLING |
(unset) | SMB/CIFS के लिए true सेट करें — Python polling enable करता है |
NOTIFY_DISCORD |
(unset) | सूचनाओं के लिए Discord webhook URL |
NOTIFY_TELEGRAM |
(unset) | सूचनाओं के लिए Telegram bot URL |
NOTIFY_PUSHOVER |
(unset) | सूचनाओं के लिए Pushover URL |
NOTIFY_SLACK |
(unset) | सूचनाओं के लिए Slack webhook URL |
NOTIFY_EMAIL |
(unset) | सूचनाओं के लिए Email (SMTP) URL |
NOTIFY_GOTIFY |
(unset) | सूचनाओं के लिए Gotify URL |
NOTIFY_URLS |
(unset) | Catch-all — comma-separated Apprise URLs |
ANTHROPIC_API_KEY |
(unset) | Anthropic API key (वेब UI OAuth के विकल्प के रूप में) |
ANTHROPIC_AUTH_TOKEN |
(unset) | Anthropic auth token (API key के विकल्प के रूप में) |
ANTHROPIC_BASE_URL |
(unset) | Custom Anthropic API endpoint (proxies, private deployments) |
CLAUDE_CODE_USE_BEDROCK |
(unset) | Amazon Bedrock backend उपयोग करने के लिए 1 सेट करें |
CLAUDE_CODE_USE_VERTEX |
(unset) | Google Vertex AI backend उपयोग करने के लिए 1 सेट करें |
GEMINI_API_KEY |
(unset) | Google Gemini API key |
OPENAI_API_KEY |
(unset) | OpenAI API key (Codex CLI के लिए, या ChatGPT सब्सक्रिप्शन के लिए codex login --device-auth उपयोग करें) |
CURSOR_API_KEY |
(unset) | Cursor API key |
OLLAMA_HOST |
(unset) | Ollama endpoint URL (जैसे, http://host.docker.internal:11434) |
यह एक minimal container नहीं है। यह एक पूरा development workstation है।
Node.js 22 LTS + npm global packages
| Package | किसके लिए है |
|---|---|
typescript, tsx |
TypeScript compilation और execution |
pnpm |
Fast, disk-efficient package manager |
vite, esbuild |
Lightning-fast build tools |
eslint, prettier |
Code quality और formatting |
serve, nodemon |
Static file server, auto-restart dev server |
concurrently |
Multiple scripts को parallel में चलाएं |
dotenv-cli |
.env files से env vars load करें |
Python 3 packages
| Package | किसके लिए है |
|---|---|
requests, httpx |
HTTP clients |
beautifulsoup4, lxml |
Web scraping और HTML parsing |
Pillow |
Image processing (pre-compiled — कोई wait नहीं) |
pandas, numpy |
Data manipulation (pre-compiled — सच में, आप इन्हें runtime पर pip install नहीं करना चाहते) |
openpyxl |
Excel files read/write |
python-docx |
Word documents read/write |
jinja2, markdown |
Templating और markdown rendering |
pyyaml, python-dotenv |
Config file parsing |
rich, click, tqdm |
खूबसूरत CLIs और progress bars |
playwright |
Browser automation (Chromium पहले से configured और तैयार) |
System tools
| टूल | किसके लिए है |
|---|---|
git, gh |
Version control + GitHub CLI (terminal से PRs, issues, releases) |
ripgrep (rg), fd, fzf |
Blazing-fast search — Claude इनका लगातार उपयोग करता है |
bat, tree, jq |
Better cat (syntax highlighting), directory trees, JSON processing |
curl, wget |
HTTP downloads |
tmux |
Terminal multiplexer — background में चीजें चलाएं |
htop, lsof, strace |
Process monitoring और debugging |
imagemagick |
Image conversion (convert, identify, mogrify) |
chromium |
Headless browser — screenshots, Playwright, Lighthouse |
psql, redis-cli, sqlite3 |
सीधे databases से बात करें |
openssh-client |
चीजों में SSH करें |
AI CLIs — हर major provider
| CLI | Command | किसके लिए है |
|---|---|---|
| Claude Code | claude |
मुख्य event — आप इसके अंदर चल रहे हैं |
| Gemini CLI | gemini |
Google का AI coding agent |
| OpenAI Codex | codex |
OpenAI का coding agent |
| Cursor | cursor |
Cursor का AI agent |
| TaskMaster AI | task-master |
Task planning और orchestration |
| Junie | junie |
JetBrains का AI coding agent |
| OpenCode | opencode |
Open source AI agent (multiple providers) |
सात AI CLIs। एक container। एक Tab दबाकर उनके बीच switch करें। कोई अन्य Docker image यह नहीं करती।
Full image में ऊपर सब कुछ, plus:
अतिरिक्त npm packages — deployment, ORMs, performance
| Package | किसके लिए है |
|---|---|
wrangler, @cloudflare/next-on-pages |
Cloudflare Workers deployment |
vercel |
Vercel deployment |
netlify-cli |
Netlify deployment |
az |
Cloud deployment और management के लिए Azure CLI |
prisma, drizzle-kit |
दो सबसे popular Node.js ORMs |
pm2 |
Production process manager |
eas-cli |
Expo / React Native builds |
lighthouse, @lhci/cli |
Performance auditing (Chromium पहले से मौजूद है) |
sharp-cli |
Image processing CLI |
json-server, http-server |
Mock REST APIs, static file serving |
@marp-team/marp-cli |
Markdown से presentation slides |
अतिरिक्त Python packages — PDFs, data viz, web frameworks
| Package | किसके लिए है |
|---|---|
reportlab, weasyprint, cairosvg, fpdf2, PyMuPDF, pdfkit, img2pdf |
हर major PDF library। उन्हें generate करें, पढ़ें, convert करें, merge करें। |
xlsxwriter, xlrd |
Excel formats जो openpyxl cover नहीं करता |
matplotlib, seaborn |
Data visualization और charts |
python-pptx |
PowerPoint generation |
fastapi, uvicorn |
Python web framework |
httpie |
Human-friendly HTTP client (curl जैसा लेकिन पढ़ने योग्य) |
अतिरिक्त system packages — media, documents
| Package | किसके लिए है |
|---|---|
pandoc |
किसी भी document format के बीच convert करें (markdown, HTML, PDF, docx, epub...) |
ffmpeg |
Video और audio processing (extract, convert, transcode) |
libvips-dev |
High-performance image processing library |
Slim उपयोगकर्ता: कोई package missing है? Claude से पूछें। यह npm/pip packages सेकंडों में इंस्टॉल करता है। System packages (pandoc, ffmpeg) में 1-2 मिनट लगते हैं। आपको वही क्षमताएं मिलती हैं — full image में बस ज़ीरो wait time है।
सात AI CLIs। एक container। कोई अन्य Docker image आपको यह नहीं देती।
| Provider | Command | कैसे authenticate करें | सब्सक्रिप्शन काम करती है? |
|---|---|---|---|
| Claude Code | claude |
CloudCLI वेब UI (OAuth) | हां — Max/Pro प्लान या API key |
| Gemini CLI | gemini |
GEMINI_API_KEY env var |
API key (pay-per-use) |
| OpenAI Codex | codex |
OPENAI_API_KEY या codex login --device-auth |
हां — ChatGPT Plus/Pro/Team/Enterprise या API key |
| Cursor | cursor |
CURSOR_API_KEY env var |
API key |
| TaskMaster AI | task-master |
मौजूदा AI provider keys उपयोग करता है | configured keys के साथ काम करता है |
| Junie | junie |
JetBrains AI सब्सक्रिप्शन | JetBrains अकाउंट आवश्यक |
| OpenCode | opencode |
TUI के ज़रिए configure करें | कई providers समर्थित |
Claude Code primary CLI है। बाकी इसलिए हैं क्योंकि कभी-कभी आप दूसरी राय चाहते हैं, या किसी specific model की खूबियां चाहते हैं, या outputs की तुलना कर रहे हैं। एक
Tabदूर सभी का होना ही पूरा point है।
HolyClaude Anthropic सब्सक्रिप्शन के विकल्प के रूप में Ollama के साथ काम करता है। दो environment variables सेट करें और local या cloud models उपयोग करें।
पूरा setup guide देखें: docs/ollama.md
graph TB
subgraph Docker Container
EP["entrypoint.sh"] --> BS["bootstrap.sh\n(first boot only)"]
EP --> S6["s6-overlay\n(PID 1)"]
S6 --> CC["CloudCLI\n(:3001)"]
S6 --> XV["Xvfb\n(:99)"]
CC --> CLAUDE["Claude Code CLI"]
CLAUDE --> TOOLS["Dev Tools\n(Node, Python, Git...)"]
CLAUDE --> CHROME["Chromium\n(headless)"]
XV -.-> CHROME
end
subgraph Host
DATA["./data/claude"] -.->|bind mount| HOME["~/.claude"]
WS["./workspace"] -.->|bind mount| WORK["/workspace"]
end
USER["Browser"] -->|":3001"| CC
style S6 fill:#2d3748,color:#fff
style CC fill:#6366f1,color:#fff
style CLAUDE fill:#f59e0b,color:#000
-
Container शुरू होता है —
entrypoint.shroot के रूप में चलता है। UID/GID को आपके host user से मिलाने के लिए remap करता है, आवश्यक files pre-creates करता है (Docker के "directory के रूप में create करना" bug को रोकता है), check करता है कि यह first boot है या नहीं। -
केवल पहले boot पर —
bootstrap.shएक बार चलता है। Default settings, memory template copy करता है, git identity configure करता है। एक sentinel file (.holyclaude-bootstrapped) बनाता है ताकि यह दोबारा कभी न चले। उस बिंदु से आपके customizations सुरक्षित हैं। -
s6-overlay PID 1 के रूप में कार्यभार संभालता है — यह supervisord नहीं है। यह s6-overlay है, जो Docker के लिए purpose-built है। CloudCLI और Xvfb को supervise करता है। Crash पर auto-restart करता है। Signals forward करता है। Zombies reap करता है। Gracefully shutdown करता है।
-
CloudCLI वेब UI serve करता है — Port 3001। Claude Code का browser-based interface जिसमें project management, multiple sessions, और plugins (project stats + web terminal शामिल) हैं।
-
Xvfb एक virtual display प्रदान करता है — Chromium को render करने के लिए एक screen चाहिए, यहां तक कि "headless" mode में भी। Xvfb उसे
:99पर एक 1920x1080 virtual display देता है। इसीलिए Playwright, screenshots, और Lighthouse out of the box काम करते हैं।
पूरे technical deep-dive के लिए docs/architecture.md देखें — जिसमें यह भी शामिल है कि हमने supervisord पर s6 क्यों चुना, plugins image में क्यों baked हैं, और su के बजाय runuser क्यों।
holyclaude/
├── .github/ # CI/CD workflows, issue & PR templates
│ ├── FUNDING.yml # Sponsor/donation links
│ ├── ISSUE_TEMPLATE/ # Bug report, feature request, package request
│ ├── pull_request_template.md
│ ├── SECURITY.md # Security policy
│ └── workflows/ # Docker build & push automation
├── assets/ # Logo and banner images
├── config/ # Claude Code configuration
│ ├── claude-memory-full.md
│ ├── claude-memory-slim.md
│ └── settings.json
├── docs/ # Extended documentation
│ ├── architecture.md
│ ├── CHANGELOG.md
│ ├── configuration.md
│ ├── dockerhub-description.md
│ ├── ollama.md
│ └── troubleshooting.md
├── scripts/ # Container lifecycle scripts
│ ├── bootstrap.sh # First-run setup
│ ├── entrypoint.sh # Container entrypoint
│ └── notify.py # Notification helper (Apprise)
├── s6-overlay/ # Process supervision (s6-rc services)
├── Dockerfile # Single-stage build
├── docker-compose.yaml # Quick start (minimal config)
├── docker-compose.full.yaml # Full config (all options)
├── LICENSE
└── README.md
| क्या | कहां (container) | कहां (host) | rebuild survive करता है? |
|---|---|---|---|
| Settings, credentials, API keys | /home/claude/.claude |
./data/claude |
हां |
| Claude Code session (OAuth, onboarding) | /home/claude/.claude.json |
./data/claude/.claude.json.persist |
हां |
| आपका code और projects | /workspace |
./workspace |
हां |
| CloudCLI अकाउंट | /home/claude/.cloudcli |
(default में केवल container में — नीचे देखें) | नहीं (opt-in उपलब्ध) |
- आपकी Anthropic authentication और API keys
- Claude Code settings, memory (
CLAUDE.md) और OAuth session (दोबारा login नहीं) ./workspaceमें आपका सारा code- Git configuration
- Codex, Gemini और Cursor CLI auth (v1.1.7 से)
- CloudCLI वेब अकाउंट — quick signup, बस इतना ही (जब तक नीचे persistence enable न करें)
# sentinel file delete करें — पूरा folder नहीं
rm ./data/claude/.holyclaude-bootstrapped
docker compose restart holyclaude
./data/claude/को पूरी तरह कभी न delete करें। वहां आपके credentials रहते हैं। अगर आप fresh bootstrap चाहते हैं तो sentinel file delete करें। Settings reset करने के लिए specific config files delete करें। लेकिन पूरा folder कभी न मिटाएं।
Default में, CloudCLI account database (~/.cloudcli) container-local है और rebuild पर wipe हो जाती है। Account दोबारा बनाने में 10 सेकंड लगते हैं, इसलिए ज़्यादातर लोग इसे ऐसे ही छोड़ देते हैं।
अगर आप चाहते हैं कि यह rebuilds के बाद भी बचे, तो अपने compose file में एक named Docker volume जोड़ें:
services:
holyclaude:
volumes:
- ./data/claude:/home/claude/.claude
- ./workspace:/workspace
- cloudcli-data:/home/claude/.cloudcli # add this line
volumes:
cloudcli-data: # and this block
./data/cloudcliको network share (NAS, SMB/CIFS, NFS) पर bind-mount न करें। CloudCLI अपना account SQLite में store करता है, और SQLite का file locking network mounts पर काम नहीं करता। आपको लगातारdatabase is lockederrors आएंगी। Named volumes Docker engine के local filesystem पर रहते हैं, इसीलिए यह काम करता है — NAS पर pointing bind mounts काम नहीं करेंगे।
Local SSD path पर bind mount भी ठीक है, बस किसी भी network share से दूर रखें।
Claude Code डिफ़ॉल्ट रूप से allowEdits mode में चलता है। यह सबसे सुरक्षित उपयोगी setting है:
| कार्य | अनुमति है? |
|---|---|
| Files पढ़ना | हां |
| Files edit / create करना | हां |
| Shell commands चलाना | पहले आपसे पूछता है |
| Packages install करना | पहले आपसे पूछता है |
यह वैसे ही है जैसे मैं personally चलाता हूं। अपने host पर ./data/claude/settings.json edit करें:
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}Bypass mode का मतलब है Claude बिना confirmation के कोई भी command execute करता है। Fast, powerful, और exactly वही जो आप चाहते हैं अगर आप जो बना रहे हैं उस पर भरोसा करते हैं। लेकिन
allowEditsएक कारण से safe default है।
HolyClaude CloudCLI को port 3001 से bind करता है। Default में यह केवल local है — अपने laptop या home server पर चलाने के लिए ठीक है जिसे आप SSH से access करते हैं।
जिस moment आप इसे अपने network के बाहर से access करना चाहते हैं, यह section पढ़ें।
सीधे कहता हूं: अपने router में hole मत करो और 3001 को open internet पर expose मत करो। Password के साथ भी नहीं। क्यों:
- CloudCLI web terminal plugin के ज़रिए full shell expose करता है
- यह arbitrary code run कर सकता है, packages install कर सकता है, और आपका पूरा
/workspaceread/write कर सकता है - इसमें आपके Anthropic OAuth tokens और API keys हैं
- Basic auth passwords brute-force, credential-stuff होते हैं और logs से निकाले जाते हैं
- एक leaked password = कोई और आपके पैसे से आपकी machine पर paid Claude Code instance चला रहा है
Password एक speed bump है, दरवाज़ा नहीं। HolyClaude को SSH session की तरह treat करें: बिना proper tunnel के open internet पर कभी नहीं।
ये दो options हैं जो मैं actually recommend करता हूं:
| Option | किसके लिए | क्यों |
|---|---|---|
| Tailscale | Personal use, small teams | WireGuard mesh VPN। अपने server + laptop/phone पर Tailscale install करें, और आप http://holyclaude:3001 को कहीं से भी access कर सकते हैं जैसे LAN पर हों। कोई open ports नहीं, कोई DNS नहीं, कोई certs नहीं। Personal use के लिए free। |
| Cloudflare Tunnel | दूसरों के साथ share करना, public hostname | Cloudflare connection proxy करता है, इसलिए port 3001 बंद रहता है। आपको HTTPS के साथ real domain मिलता है, और आप Cloudflare Access (Google/GitHub SSO) सामने रख सकते हैं। Free tier ज़्यादातर personal use cover करता है। |
दोनों आपको देते हैं:
- Router पर zero open ports
- End to end encrypted transport
- Real identity-based auth (shared password नहीं)
- Audit logs
अगर आपको absolutely tunnel skip करना है (self-hosting tutorial, isolated lab network, जो भी हो), कम से कम:
- इसके सामने reverse proxy रखें (Caddy, nginx, Traefik) real TLS के साथ
- Firewall या proxy level पर IP allowlisting जोड़ें — केवल आपके known IPs
bypassPermissions: falseenable करें (default) ताकि shell commands अभी भी confirm करें- अपने Anthropic credentials rotate करें अगर कुछ गड़बड़ लगे
- Cloudflare Access या similar SSO के पीछे run करें, basic auth नहीं
इन सबके बावजूद, risk surface बहुत बड़ा है। Tailscale या Cloudflare Tunnel use करें। ये free हैं, setup में पांच मिनट लगते हैं, और यही मैं personally use करता हूं।
अपने computer से दूर जाएं और जानें कि Claude कब done हो गया। Notifications के लिए Apprise का उपयोग करता है — Discord, Telegram, Slack, Email, Pushover, Gotify, और अधिक सहित 100+ services support करता है।
Enable करने के लिए:
- अपने compose
environmentमें एक या अधिकNOTIFY_*variables जोड़ें:- NOTIFY_DISCORD=discord://webhook_id/webhook_token - NOTIFY_TELEGRAM=tg://bot_token/chat_id
- Container के अंदर:
touch ~/.claude/notify-on
सभी supported variables और URL formats के लिए configuration docs देखें।
Disable करने के लिए: rm ~/.claude/notify-on
वे events जो notifications trigger करते हैं:
| Event | क्या हुआ |
|---|---|
stop |
Claude ने current task finish कर दी |
error |
एक tool use failure हुई |
Configure न होने पर पूरी तरह silent। कोई
NOTIFY_*vars नहीं? कोई flag file नहीं? Zero network calls। Zero log spam। Zero overhead।
# Latest image pull करें
docker compose pull
# नई image के साथ container recreate करें
docker compose up -dआपका data ./data/claude और ./workspace में persist रहता है — upgrading केवल container replace करती है, आपकी files नहीं।
latest के बजाय specific version pin करने के लिए:
image: coderluii/holyclaude:1.1.2 # instead of :latestCloudCLI गलत default directory दिखाता है
CloudCLI /workspace के बजाय /home/claude पर खुलता है।
कारण: WORKSPACES_ROOT CloudCLI process तक नहीं पहुंच रहा। Docker-compose env vars s6-overlay के s6-setuidgid के ज़रिए pass नहीं होते — यह design द्वारा clean environment में चलता है (security feature, bug नहीं)।
Fix: HolyClaude में पहले से handled। s6 run script process environment में सीधे WORKSPACES_ROOT=/workspace सेट करता है।
SQLite "database is locked"
कारण: SMB/CIFS network mounts पर SQLite databases। CIFS उस file-level locking को support नहीं करता जो SQLite को चाहिए।
Fix: Network shares पर SQLite databases store न करें। HolyClaude इसी कारण container-local storage में .cloudcli रखता है। अगर आपके अपने SQLite databases /workspace में NAS पर हैं, तो उन्हें local path पर move करें।
Chromium crashes / blank pages / tab failures
कारण: अपर्याप्त shared memory। Docker defaults to 64MB।
Fix: अपने compose file में shm_size: 2g ensure करें। Heavy browser use (कई tabs, complex pages) के लिए 4g तक बढ़ाएं।
File watchers changes detect नहीं कर रहे (hot reload टूटा हुआ)
कारण: SMB/CIFS network mounts inotify support नहीं करते।
Fix: अपने compose environment में polling enable करें:
- CHOKIDAR_USEPOLLING=1
- WATCHFILES_FORCE_POLLING=trueनोट: Polling inotify से ज़्यादा CPU उपयोग करता है। केवल network mounts पर enable करें।
Permission denied errors
कारण: Container UID/GID host file ownership से मेल नहीं खाता।
Fix:
# आपकी host machine पर
id -u # → यह आपका PUID है
id -g # → यह आपका PGID हैइन्हें अपने compose file में सेट करें:
- PUID=1000
- PGID=1000Docker .claude.json को directory के रूप में create करता है
कारण: अगर container start से पहले bind-mount target file exist नहीं करती, Docker इसे helpfully एक directory के रूप में create करता है। धन्यवाद, Docker।
Fix: पहले से handled — entrypoint.sh इसे file के रूप में pre-create करता है।
सभी SMB/CIFS gotchas और उन bugs के पूरे इतिहास सहित complete guide के लिए docs/troubleshooting.md देखें जिन्हें हमने encounter और fix किया।
ये HolyClaude bugs नहीं हैं — ये upstream issues या intentional trade-offs हैं।
| समस्या | क्यों | समाधान |
|---|---|---|
| "Continue in Shell" button टूटा हुआ | CloudCLI upstream bug (terminal init में race condition) | इसके बजाय Web Terminal plugin उपयोग करें (pre-installed) |
| Cursor CLI "Command timeout" | कोई API key configure नहीं — केवल cosmetic, किसी चीज़ को affect नहीं करता | CURSOR_API_KEY सेट करें या ignore करें |
| Rebuild पर CloudCLI अकाउंट खो जाता है | SQLite network mounts पर persist नहीं कर सकता — intentional trade-off | अकाउंट दोबारा बनाएं (~10 सेकंड) |
| Web push notifications "not supported" | CloudCLI में browser limitation, standard behavior | इसके बजाय Apprise notifications उपयोग करें (देखें सूचनाएं) |
Docker Hub से pull करने के बजाय खुद image build करना चाहते हैं? करें:
git clone https://github.com/CoderLuii/HolyClaude.git
cd holyclaude
# Full image build करें
docker build -t holyclaude .
# Slim image build करें
docker build --build-arg VARIANT=slim -t holyclaude:slim .
# ARM के लिए build करें (Apple Silicon, Raspberry Pi, AWS Graviton)
docker buildx build --platform linux/arm64 -t holyclaude .फिर अपने compose file में image: coderluii/holyclaude:latest के बजाय image: holyclaude उपयोग करें।
HolyClaude अन्य approaches से कैसे compare करता है?
| Approach | Web UI | Multi-AI | Pre-configured tools | Headless browser | One command setup | Persistence |
|---|---|---|---|---|---|---|
| HolyClaude | CloudCLI | 5 CLIs | 50+ tools | Chromium + Xvfb + Playwright | docker compose up |
Bind mounts |
| Claude Code (bare metal) | नहीं | नहीं | खुद install करें | खुद install करें | Multi-step install | Manual |
| Claude Code + oh-my-openagent | नहीं | हां (multi-model) | कुछ | नहीं | npm install | Manual |
| DIY Docker + Claude Code | शायद | शायद | जो आप add करें | अगर आप configure करें | अगर आप Dockerfile लिखें | अगर आप volumes set up करें |
| Cursor IDE | Built-in | Cursor only | IDE-bundled | नहीं | Download app | App data |
HolyClaude coding agents के साथ compete नहीं कर रहा — यह वह infrastructure layer है जो उन सभी को बेहतर काम करने देती है। यह वह container है जिसके अंदर आप उन्हें चलाते हैं।
आगे क्या आ रहा है:
| स्थिति | Feature |
|---|---|
| 🔜 | ARM-native builds — optimized native ARM64 images, सिर्फ emulated नहीं |
| 🔜 | VS Code tunnel integration — VS Code desktop से connect करने के लिए built-in VS Code Server या tunnel |
| 🔜 | Notification routing — event type के अनुसार अलग notification destinations (errors Telegram पर, completions Discord पर) |
कोई idea है? Discussion शुरू करें या feature request करें।
HolyClaude से कुछ build कर रहे हैं? हम देखना चाहेंगे।
showcase label के साथ एक issue खोलें या अपना project यहां add करने के लिए PR submit करें:
यहां अपना project add करने वाले पहले बनें।
Contributions स्वागत योग्य हैं। यह project वास्तविक दैनिक उपयोग से जन्मा है, और यह तब बेहतर होता है जब अधिक लोग इसे उपयोग करते हैं और edge cases ढूंढते हैं।
- Fork करें
- Branch करें (
git checkout -b feature/something) - Commit करें
- Push करें
- PR करें
Bugs, feature requests, questions: issue खोलें।
| Channel | किसके लिए उपयोग करें |
|---|---|
| GitHub Discussions | Questions, अपना setup share करें, ideas |
| Issues | Bug reports, feature और package requests |
| Security Advisories | Vulnerability reports (private) |
📦 Package Request issue template उपयोग करें। Package name, install method, और कौन सा variant (full/slim) target होना चाहिए, include करें।
HolyClaude मुफ़्त, ओपन सोर्स है, और एक developer द्वारा maintain किया जाता है जो इसे हर दिन उपयोग करता है।
अगर इसने आपका time बचाया, तो यहां आप कैसे help कर सकते हैं:
- इस repo को Star करें — visibility के लिए यह सबसे बड़ी चीज़ है जो आप कर सकते हैं
- Share करें — किसी दोस्त को बताएं, post करें, tweet करें
- Issues खोलें — bug reports और feature requests HolyClaude को सभी के लिए बेहतर बनाते हैं
- Contribute करें — PRs हमेशा welcome हैं
HolyClaude Docker image में third-party software शामिल है, जिनमें से प्रत्येक अपने own license के अंतर्गत है। Notable components:
| Component | License | Source |
|---|---|---|
| CloudCLI | GPL-3.0 | siteboon/claudecodeui |
| s6-overlay | ISC | just-containers/s6-overlay |
| Node.js | MIT | nodejs/node |
पूरी details के लिए THIRD-PARTY-NOTICES देखें जिसमें modification notices शामिल हैं। HolyClaude का अपना source code MIT licensed है।
MIT — LICENSE देखें। इसे जैसे चाहें उपयोग करें।
CoderLuii द्वारा बनाया गया · coderluii.dev
यह container वही है जो मैं हर दिन उपयोग करता हूं। अगर इसने आपका आधा भी setup time बचाया जो इसने मेरा बचाया, तो एक star अच्छा लगेगा।
