1- # Claude Code Server
1+ # VSCode Cloud IDE
22
3- ** Browser-based VS Code with Claude Code & AI Coding Assistants **
3+ ** Browser-based VSCode with Claude Code & Node.js **
44
5- [ ![ Deploy on Railway] ( https://railway.com/button.svg )] ( https://railway.com/template/claude-code-server )
5+ [ ![ Deploy on Railway] ( https://railway.com/button.svg )] ( https://railway.com/template/TEMPLATE_ID )
66
7- Cloud IDE with persistent extensions, settings, and tools. Pre-installed Claude Code CLI.
7+ Cloud IDE with persistent extensions, settings, and tools. Runs as non-root user.
8+
9+ ---
10+
11+ ## Features
12+
13+ - ** Claude Code** & ** Node.js 20** pre-installed
14+ - ** Non-root execution** - runs as ` clauder ` user (UID 1000)
15+ - Extensions persist across redeployments
16+ - Volume permissions auto-fixed on startup
817
918---
1019
1120## Quick Start
1221
1322``` bash
14- # Claude Code with auto-accept
23+ # Claude Code with auto-accept (for automation)
1524claude --dangerously-skip-permissions
1625
17- # Or use the alias
18- claude-auto
19-
2026# Interactive mode
2127claude
28+
29+ # Node.js ready
30+ node --version
31+ npm --version
2232```
2333
2434---
2535
26- ## ⚠️ Claude Code Authentication
36+ ## Environment Variables
2737
28- When running ` claude ` for the first time:
29-
30- 1 . The CLI will display an authentication URL
31- 2 . ** Copy the URL to a different browser** (not this code-server browser)
32- 3 . Complete the login in that browser
33- 4 . Copy the code displayed after login
34- 5 . Paste the code back into the CLI
35-
36- Your credentials persist in ` ~/.claude/ ` across redeployments.
38+ | Variable | Required | Default | Description |
39+ | ----------| ----------| ---------| -------------|
40+ | ` PASSWORD ` | Yes | - | Login password |
41+ | ` CLAUDER_HOME ` | ** Yes** | ` /home/clauder ` | Volume mount path (REQUIRED) |
42+ | ` CLAUDER_UID ` | No | ` 1000 ` | User ID |
43+ | ` CLAUDER_GID ` | No | ` 1000 ` | Group ID |
3744
3845---
3946
40- ## 📍 Railway Deployment
41-
42- > ** Region** : Set your Railway region to ** US West** for the fastest performance.
43-
44- ### Required Variables
45-
46- | Variable | Description |
47- | ----------| -------------|
48- | ` PASSWORD ` | Login password for code-server |
49-
50- ### User Configuration
51-
52- | Variable | Default | Description |
53- | ----------| ---------| -------------|
54- | ` CLAUDER_HOME ` | ` /home/clauder ` | Volume mount path |
55- | ` CLAUDER_UID ` | ` 1000 ` | User ID for clauder |
56- | ` CLAUDER_GID ` | ` 1000 ` | Group ID for clauder |
57- | ` RUN_AS_USER ` | ` root ` | Set to ` clauder ` for non-root execution |
58-
59- ### Pre-Install AI CLIs
60-
61- Set to ` 1 ` to install on startup (default: ` 0 ` ):
62-
63- | Variable | CLI | Description |
64- | ----------| -----| -------------|
65- | ` INSTALL_OPENCODE ` | OpenCode | Google's agentic AI IDE |
66- | ` INSTALL_GEMINI ` | Gemini CLI | Google Gemini assistant |
67- | ` INSTALL_KILOCODE ` | KiloCode | VS Code AI coding |
68- | ` INSTALL_CONTINUE ` | Continue | Open-source AI code assistant |
69- | ` INSTALL_CODEX ` | Codex | OpenAI Codex CLI |
70-
71- > ** Note** : Claude Code is ** always installed** and cannot be disabled.
47+ ## How It Works
7248
73- ### Pre-Install Development Frameworks
49+ 1 . ** Starts as root** - fixes volume permissions
50+ 2 . ** Switches to clauder** - uses ` gosu ` for clean handoff
51+ 3 . ** Runs code-server** - as non-root user
7452
75- | Variable | Framework | Description |
76- | ----------| -----------| -------------|
77- | ` INSTALL_BMAD ` | BMAD Method | Spec-driven development workflow |
78- | ` INSTALL_OPENSPEC ` | OpenSpec | AI-powered spec generation |
79- | ` INSTALL_SPECKIT ` | Spec-Kit | GitHub's specification toolkit |
53+ This means:
54+ - ✅ No root permission warnings in code-server
55+ - ✅ Existing volumes with root-owned files work fine
56+ - ✅ Claude ` --dangerously-skip-permissions ` works
8057
8158---
8259
83- ## How It Works
60+ ## Claude Code Authentication
8461
85- 1 . ** Starts as root** – fixes volume permissions
86- 2 . ** Installs optional CLIs** – based on environment variables
87- 3 . ** Switches to clauder** – uses ` gosu ` for clean handoff
88- 4 . ** Runs code-server** – as non-root user
62+ After running ` claude ` for the first time:
8963
90- This means:
91- - ✅ No root permission warnings
92- - ✅ Existing volumes work fine
93- - ✅ Claude ` --dangerously-skip-permissions ` works
64+ 1 . Follow the authentication prompts
65+ 2 . Your credentials are stored in ` ~/.claude/ `
66+ 3 . They persist across redeployments (on volume)
9467
9568---
9669
9770## Custom Startup Scripts
9871
99- Add scripts to ` $CLAUDER_HOME/entrypoint.d/ ` :
72+ Add to ` $CLAUDER_HOME/entrypoint.d/ ` :
10073
10174``` bash
10275#! /bin/bash
@@ -111,7 +84,7 @@ Make executable: `chmod +x script.sh`
11184
11285| Component | Behavior |
11386| -----------| ----------|
114- | ** Volume tools** | You control – install to ` ~/.local/bin / ` |
87+ | ** Volume tools** | You control - install to ` ~/.local/node/ ` or ` ~/.claude/local /` |
11588| ** Image tools** | Auto-update on redeploy (fallback) |
11689| ** Extensions** | Persist on volume |
11790| ** Claude auth** | Persists on volume |
@@ -127,7 +100,6 @@ Logs show `[volume]` or `[image]` next to each tool.
127100| Permission denied | Check ` CLAUDER_UID ` matches your volume owner |
128101| Claude not found | Run ` which claude ` to check PATH |
129102| Extensions missing | Verify volume mounted at ` CLAUDER_HOME ` |
130- | Auth URL won't open | Copy URL to a different browser |
131103
132104---
133105
0 commit comments