A comprehensive development container setup with Node.js, Deno, Bun.js, Playwright, Tailscale, and VibeTunnel for Claude Code development.
- Node.js v24 - Latest Node.js runtime
- Deno v1.46.3 - Modern JavaScript/TypeScript runtime
- Bun.js - Fast JavaScript runtime and package manager
- Playwright - Browser automation with Chromium pre-installed
- Tailscale - Secure network connectivity
- VibeTunnel - Local development tunneling
- GitHub CLI - Command-line GitHub integration
- Claude Code - Anthropic's CLI tool pre-installed
- Git Profile Management - Automated Git configuration
- VS Code Extensions - ESLint, Prettier, GitLens pre-configured
- Open in VS Code with Dev Containers extension (from Cursor "Anysphere")
- Container will automatically build and configure
- Git will be auto-configured based on your environment
The setup uses Docker Compose with two services:
- Provides secure networking capabilities
- Requires
TS_AUTHKEYenvironment variable - Hostname:
claude-code-dev
- Based on Ubuntu 22.04
- Network shares with Tailscale service
- User:
nodewith sudo privileges - Working directory:
/workspace
- Runtime: Node.js v24, Deno v1.46.3, Bun.js, Python3
- CLI Tools: GitHub CLI, Claude Code, Gemini CLI, VibeTunnel
- Development: git, curl, wget, vim, fzf
- Browser Testing: Playwright with Chromium, X11 support
- Package Managers: npm, pnpm, bun
Create a .env file in the .devcontainer directory:
# Required for Tailscale
TS_AUTHKEY=your_tailscale_auth_key
# Optional Git configuration
GIT_USER_NAME="Your Name"
GIT_USER_EMAIL="your.email@example.com"
GIT_GITHUB_USER="yourusername"
GIT_PROFILE_NAME="work"
# Optional timezone
TZ=America/Los_AngelesThe container automatically sets up Git using multiple methods (in priority order):
- Environment Variables - Set
GIT_USER_NAME,GIT_USER_EMAIL, etc. - Host Git Config - Copies your
~/.gitconfigif available - Default Profile - Uses existing "default" profile
- Manual Setup - Use
git-profilecommand
git-profile create work # Create new profile
git-profile use work # Switch to profile
git-profile list # List all profiles
git-profile delete work # Delete profilePre-configured with:
- Default Formatter: Prettier
- Linting: ESLint with auto-fix on save
- Git Integration: GitLens extension
- Terminal: zsh with Oh My Zsh (robbyrussell theme)
- Port Forwarding: Port 5173 for Vite development
The container includes helpful aliases:
yolo- Claude with skip permissionsgyolo- Gemini with yolo modetailscale- Execute Tailscale commands in container
- Workspace:
..:/workspace:cached - Command History: Persistent zsh history
- Claude Config:
~/.claudedirectory mounted - Git Config: Host
.gitconfigmounted read-only
- Start Container: Open in VS Code or run
docker-compose up - Install Dependencies:
npm install(runs automatically) - Start Development: Use pre-configured tools and extensions
- Browser Testing: Playwright ready with Chromium
- Secure Access: Tailscale for remote connectivity
The container uses Tailscale for secure networking, allowing:
- Remote access to development environment
- Secure tunneling with VibeTunnel
- Connection to private networks
- Tailscale: Verify
TS_AUTHKEYis set and valid - Git: Check environment variables or use
git-profilecommands - Playwright: Run
npx playwright installif browsers missing - Permissions: User
nodehas sudo access with passwordnodepassword
For VibeTunnel and Tailscale verification:
tailscale status # Check Tailscale connection
vibetunnel --help # Verify VibeTunnel installation