code-server-remote-ide-wsl2
Setup secure VS Code IDE in browser with code-server on WSL2, accessible from mobile/tablet via ngrok/Cloudflare/Tailscale. Full IDE features with extension support, resource management, and performance optimization. Use when you need remote IDE access, VS Code in browser, remote development, or ...
SKILL.md
Full skill instructions
code-server Remote IDE for WSL2
Access full VS Code IDE from any device (phone, tablet, remote computer) via secure web-based code-server with ngrok, Cloudflare Tunnel, or Tailscale.
Overview
What This Skill Does:
- Sets up code-server (VS Code in browser) on WSL2
- Configures secure authentication (prevents CVE-2023-26114)
- Establishes encrypted tunnel (ngrok/Cloudflare/Tailscale)
- Manages VS Code extensions
- Optimizes WSL2 resources (memory/CPU limits)
- Provides one-command start/stop/status operations
- Automatically displays connection URL and credentials
When to Use This Skill:
- Need full IDE functionality remotely
- Coding from tablet with keyboard
- Want IntelliSense, debugging, extensions
- Serious development work while traveling
- Review/edit large codebases remotely
When NOT to Use This Skill:
- Just need quick terminal commands → Use ttyd-remote-terminal-wsl2 instead
- Need desktop VS Code features not in browser version
- Limited system resources (<4GB RAM)
- Very slow internet connection
What You'll Get:
- Full VS Code IDE in browser
- Extension support (most VS Code extensions work)
- IntelliSense, debugging, git integration
- Integrated terminal
- File explorer, search, multi-file editing
- Secure HTTPS access with authentication
- Resource usage monitoring
Prerequisites
System Requirements:
- WSL2 installed and working (Ubuntu 22.04 LTS recommended)
- Windows 10 version 2004+ or Windows 11
- Minimum: 4GB RAM, 2 CPU cores, 2GB disk space
- Recommended: 8GB+ RAM, 4+ CPU cores, 5GB+ disk space
- Internet connection
User Requirements:
- Comfortable with VS Code (desktop version)
- Basic command line knowledge
- Comfortable running bash scripts
- Can create free account on tunnel service
Not Required:
- Advanced networking knowledge
- systemd expertise
- Extension development knowledge
- Security expertise (skill provides secure defaults)
Quick Start
Get remote VS Code IDE access in <15 minutes:
1. Install
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./install.sh
Follow prompts to:
- Install code-server
- Choose tunnel service (ngrok recommended for beginners)
- Install chosen tunnel tool
2. Configure Authentication
./configure-auth.sh
This generates a strong hashed password and configures secure access.
3. Configure Resources (Recommended)
./configure-resources.sh
This sets WSL2 memory/CPU limits to prevent resource exhaustion.
4. Start Session
./code-server-start.sh
This will:
- Start code-server with authentication
- Start tunnel
- Display connection URL and password
Copy the URL and open in any browser (tablet, phone, computer)
5. Connect & Code
Open the displayed URL in browser → Enter password → You now have full VS Code IDE!
6. Stop Session (When Done)
./code-server-stop.sh
Done! You now have working remote IDE access.
For detailed setup, extension management, and optimization, see the full workflow below.
Workflow
Step 1: One-Time Setup
This step installs code-server and your chosen tunnel service. You only need to do this once.
1.1 Run the Installer
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./install.sh
The installer will:
- Check for existing installations (code-server, tunnel tools)
- Install code-server via official script (or manual if fails)
- Ask you to choose tunnel service:
- ngrok (recommended for beginners): 1GB/month free, ephemeral URLs
- Cloudflare Tunnel (recommended for production): Unlimited bandwidth, persistent URLs
- Tailscale (recommended for private access): Private VPN, no public exposure
- Install chosen tunnel service
- Verify installations successful
- Check WSL2 version and resources
1.2 Choose Your Tunnel Service
ngrok - Best for beginners:
- ✅ Easiest to setup
- ✅ Free tier: 1GB/month bandwidth
- ⚠️ URLs change on each restart
- ⚠️ Data limits (IDE uses more data than terminal)
Cloudflare Tunnel - Best for production:
- ✅ Unlimited bandwidth (free)
- ✅ Persistent URLs (don't change)
- ✅ Better performance
- ⚠️ Slightly more complex setup
Tailscale - Best for private access:
- ✅ Private network (not exposed to internet)
- ✅ Unlimited bandwidth
- ✅ No public URL (only accessible to your Tailscale network)
- ⚠️ Requires Tailscale on connecting device
Recommendation: Start with Cloudflare Tunnel (unlimited bandwidth important for IDE).
1.3 Get Tunnel Authentication Token
After choosing tunnel service, you'll need to create free account and get auth token:
For ngrok:
- Go to https://dashboard.ngrok.com/signup
- Sign up (free)
- Copy your authtoken from https://dashboard.ngrok.com/get-started/your-authtoken
- Run:
ngrok config add-authtoken YOUR_TOKEN_HERE
For Cloudflare Tunnel:
- Go to https://dash.cloudflare.com/
- Sign up (free)
- Follow installer prompts (installer will guide you through
cloudflared tunnel login)
For Tailscale:
- Go to https://login.tailscale.com/start
- Sign up (free)
- Run:
sudo tailscale up - Follow authentication link
1.4 Verify Installation
# Check code-server installed
code-server --version
# Check tunnel tool installed
ngrok version # or: cloudflared --version # or: tailscale version
# Run health check
./health-check.sh
Troubleshooting Installation:
- If code-server install fails, see Installation Guide
- If tunnel install fails, see Tunneling Options Guide
- For WSL2 issues, see WSL2 Configuration Guide
Step 2: Configure Authentication
Configure secure access with hashed password. You only need to do this once.
2.1 Run Configuration Script
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./configure-auth.sh
This will:
- Generate strong password (16 characters, mixed case, numbers, symbols)
- Or you can provide your own password
- Hash password (SHA-256 or bcrypt)
- Create config.yaml with hashed password and settings
- Set file permissions (600 - owner read/write only)
- Display password for your records (you'll need it to login)
2.2 Save Your Password
The script will display:
==================================================
code-server Remote IDE Credentials
==================================================
Password: aB3$xK9#mL2@pQ7!
Save this password securely!
You'll need it to login to VS Code in browser.
Configuration saved to:
~/.config/code-server/config.yaml
==================================================
Save this password - you'll need it to login from browser.
Security Notes:
- Password is hashed in config.yaml (more secure than ttyd's plain text)
- Hashed password stored in
~/.config/code-server/config.yamlwith 600 permissions - Plain password stored in
~/.code-server/.env(for scripts only) - Never share your password
- Never commit config files to git
- Change password periodically: Re-run
./configure-auth.sh
Troubleshooting Authentication:
- Forgot password? Re-run
./configure-auth.shto generate new one - Want custom password? Run:
./configure-auth.sh --custom-password - For security details, see Security Guide
Step 3: Configure Resources (Recommended)
Configure WSL2 resource limits to prevent code-server from consuming all memory.
3.1 Why Resource Configuration Matters
code-server resource usage:
- Base: ~200MB (no extensions)
- Light use (few extensions): ~500MB-1GB
- Heavy use (many extensions, large project): 2-4GB
Without limits: code-server can consume all available RAM, slowing down Windows.
With limits: WSL2 restricted to safe amount, system stays responsive.
3.2 Run Resource Configuration Script
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./configure-resources.sh
This will:
- Detect total system memory
- Recommend memory limit (50-75% of total)
- Recommend processor count
- Generate .wslconfig (Windows file)
- Prompt to restart WSL (required to apply)
- Verify new limits after restart
3.3 Recommended Resource Limits
| System RAM | WSL2 Memory Limit | Processors | code-server Usage |
|---|---|---|---|
| 8 GB | 4 GB | 2 | Light use OK |
| 16 GB | 8 GB | 4 | Moderate use OK |
| 32 GB+ | 12-16 GB | 6-8 | Heavy use OK |
Example .wslconfig:
[wsl2]
memory=8GB
processors=4
swap=2GB
3.4 Apply Resource Limits
Restart WSL2 (PowerShell as Admin):
wsl --shutdown
Wait 8 seconds, then start WSL2:
wsl
Verify new limits (in WSL2):
# Check memory
free -h
# Check CPUs
nproc
Troubleshooting Resources:
- For resource management details, see Resource Management Guide
- For performance optimization, see Performance Optimization Guide
Step 4: Start Session
Start code-server and tunnel, get connection URL. Do this each time you want remote access.
4.1 Start IDE Session
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./code-server-start.sh
The script will:
- Check WSL2 resources available
- Load config from config.yaml
- Start code-server on localhost:8080 with authentication
- Wait for code-server ready (usually <5 seconds)
- Start tunnel (ngrok/cloudflare/tailscale)
- Wait for tunnel connection (usually <10 seconds)
- Extract public URL
- Display connection information and password
- Show resource usage baseline
4.2 Connection Information Displayed
You'll see output like this:
==================================================
code-server Remote IDE - CONNECTION READY
==================================================
🌐 Connection URL:
https://abc123.ngrok-free.app
🔐 Login Password:
aB3$xK9#mL2@pQ7!
💻 To connect from tablet/phone/browser:
1. Open the URL above in any browser
2. Enter the password above
3. You'll see full VS Code IDE
📊 Resource Usage (baseline):
code-server: 245 MB
Tunnel: 24 MB
Total: 269 MB
⚠️ Security Warnings:
- Only share URL with trusted people
- URL is HTTPS encrypted
- Session is active until you stop it
- Remember to stop when done (saves resources)
==================================================
Session running. Press Ctrl+C to stop (or use ./code-server-stop.sh)
4.3 Keep Terminal Running
Option 1: Keep terminal open (simplest)
- Leave the terminal window running
- code-server and tunnel stay active
- Press Ctrl+C to stop
Option 2: Run in background (advanced)
./code-server-start.sh &
disown
Now you can close terminal and code-server keeps running.
Troubleshooting Start:
- code-server won't start? Check port 8080 not in use:
lsof -i :8080 - Tunnel won't connect? Check your auth token configured correctly
- No URL displayed? Check internet connection
- For more help, see Troubleshooting Guide
Step 5: Connect & Use IDE
Use the connection URL from any device with browser.
5.1 Open URL in Browser
On your tablet, phone, or remote computer:
- Open browser (Chrome recommended for best compatibility)
- Enter the connection URL (from Step 4.2)
- Accept any security warnings (ngrok free tier shows warning page - click "Visit Site")
5.2 Login
You'll see code-server password prompt:
- Enter the password from Step 4.2
- Click "Enter" or "Submit"
5.3 Use Full VS Code IDE
You now see full VS Code interface in browser!
What You Can Do:
- File Explorer: Navigate your project files
- Editor: Edit code with syntax highlighting
- IntelliSense: Auto-complete, parameter hints
- Integrated Terminal: Run commands without switching apps
- Extensions: Install VS Code extensions (most work)
- Git Integration: Commit, push, pull
- Debugging: Set breakpoints, debug code
- Search: Find in files, replace across project
- Multi-file editing: Split editor, multiple tabs
First Time Setup:
- Open Folder: File → Open Folder → Select your project directory
- Install Extensions: See Step 6 below
- Configure Settings: Settings → Preferences (same as desktop VS Code)
5.4 Using on Mobile/Tablet
Tablet (iPad/Android with keyboard):
- Works great for serious coding
- Keyboard shortcuts work
- Mouse/trackpad supported
- Multi-touch gestures
Phone:
- Possible but challenging
- Recommend for:
- Quick edits
- Code review
- Running commands in terminal
- Not recommended for:
- Long coding sessions
- Complex debugging
Tips:
- Landscape mode for more screen space
- Split editor carefully (small screen)
- Use terminal for quick tasks
- File search (Ctrl+P) faster than file explorer
5.5 Disconnect
To disconnect (without stopping code-server):
- Simply close browser tab
- code-server keeps running (can reconnect anytime using same URL)
- Your work is saved on WSL2
To fully stop (free up resources):
- See Step 7 below
Step 6: Manage Extensions & Resources
Manage VS Code extensions and monitor resource usage.
6.1 Install Extensions
Method 1: Via UI (easiest)
- Click Extensions icon (sidebar)
- Search for extension
- Click "Install"
- Wait for installation
- Reload if prompted
Method 2: Via CLI
# Use our helper script
./manage-extensions.sh
# Or manually:
code-server --install-extension EXTENSION_ID
Popular Extensions:
- Python:
ms-python.python - ESLint:
dbaeumer.vscode-eslint - Prettier:
esbenp.prettier-vscode - GitLens:
eamonn.gitlens - Docker:
ms-azuretools.vscode-docker
Example:
# Install Python extension
code-server --install-extension ms-python.python
6.2 Extension Compatibility
Most extensions work, but some don't:
✅ Work Well:
- Language support (Python, JavaScript, TypeScript, Go, Rust, etc.)
- Linters (ESLint, Pylint)
- Formatters (Prettier, Black)
- Git tools (GitLens)
- Themes, icons
- Snippets
⚠️ May Not Work:
- Extensions requiring desktop integration
- Extensions needing native modules
- Some debuggers (check extension docs)
Check compatibility: See extension's marketplace page for web/remote support.
6.3 Monitor Resource Usage
# Check current status
./code-server-status.sh
This shows:
- code-server memory usage
- Tunnel memory usage
- Total CPU usage
- Session duration
- Number of extensions loaded
If resource usage high:
- Remove unused extensions
- Close unused editor tabs
- Restart code-server session
6.4 Manage Extensions Script
./manage-extensions.sh
Interactive menu:
- List installed extensions
- Search marketplace
- Install extension
- Update all extensions
- Remove extension
- Show extension resource impact (if available)
Example:
$ ./manage-extensions.sh
1) List installed
2) Install extension
3) Remove extension
Enter choice: 1
Installed Extensions:
- ms-python.python (Python)
- dbaeumer.vscode-eslint (ESLint)
- esbenp.prettier-vscode (Prettier)
For detailed extension management, see Extension Management Guide.
Step 7: Stop Session
Stop code-server and tunnel when you're done. This frees up resources.
7.1 Stop IDE Session
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./code-server-stop.sh
This will:
- Find tunnel process and kill gracefully
- Find code-server process and kill gracefully
- Confirm both stopped
- Report final resource usage
- Report session ended
7.2 Verify Stopped
The script will show:
Stopping code-server remote IDE session...
✓ Tunnel stopped
✓ code-server stopped
Final resource usage:
code-server: 1.2 GB (peak)
Session duration: 2 hours 15 minutes
Session ended successfully.
Verify Nothing Running:
./code-server-status.sh
Should show: code-server is not running
7.3 Why Stop?
- Saves resources (200MB-4GB memory freed)
- Saves data (ngrok free tier: 1GB/month limit)
- Security (no active tunnel means no way to connect)
- Best practice (only run when actively using)
Troubleshooting Stop:
- Process won't stop? See running processes:
ps aux | grep code-server - Forcefully kill:
pkill -9 code-server && pkill -9 ngrok
Step 8: Check Status
Check if code-server session is running and get connection info.
8.1 Check Current Status
cd ~/.claude/skills/code-server-remote-ide-wsl2/scripts
./code-server-status.sh
If Running, you'll see:
==================================================
code-server Remote IDE - STATUS
==================================================
Status: RUNNING ✓
🌐 Connection URL:
https://abc123.ngrok-free.app
🔐 Login Password:
aB3$xK9#mL2@pQ7!
⏱️ Session Duration: 1 hour 23 minutes
📊 Resource Usage:
code-server: 856 MB
Tunnel: 24 MB
Total: 880 MB
💻 System Resources:
WSL2 Memory Limit: 8 GB
Currently Used: 2.1 GB (26%)
Available: 5.9 GB
📦 Extensions Loaded: 8
To stop session: ./code-server-stop.sh
==================================================
If Stopped, you'll see:
==================================================
code-server Remote IDE - STATUS
==================================================
Status: NOT RUNNING
To start session: ./code-server-start.sh
==================================================
8.2 Use Cases for Status
Check before starting: Avoid starting duplicate sessions
./code-server-status.sh && ./code-server-start.sh
Get URL when you forgot it: Status shows current URL
./code-server-status.sh # Copy URL from output
Monitor resource usage: See if memory is getting high
./code-server-status.sh # Check memory usage
Check if forgotten session running: See if you left it running
./code-server-status.sh # If running, consider stopping
Security Essentials
Security-First Design: This skill implements defense-in-depth security to protect your WSL2 development environment.
Default Security Features
✅ Authentication Required
- All connections require password
- Password is hashed (SHA-256 or bcrypt)
- Prevents CVE-2023-26114 (WebSocket origin validation)
✅ HTTPS Encryption
- All traffic encrypted via tunnel (ngrok/Cloudflare/Tailscale)
- Prevents eavesdropping
- Browser shows secure padlock
✅ Localhost Binding
- code-server binds to 127.0.0.1 only (not 0.0.0.0)
- Cannot be accessed directly from network
- Must go through authenticated tunnel
✅ Secure Credential Storage
- Hashed password in config.yaml (600 permissions)
- Plain password in .env for scripts only (600 permissions)
- Not committed to git (.gitignore recommended)
✅ WebSocket Origin Validation
- Prevents CSRF attacks
- Mitigates CVE-2023-26114
Security Best Practices
Do:
- ✅ Use strong passwords (default generator creates these)
- ✅ Stop sessions when not in use
- ✅ Keep code-server and tunnel tools updated
- ✅ Only share URLs with trusted people
- ✅ Monitor active sessions (use
./code-server-status.sh) - ✅ Review tunnel logs periodically
- ✅ Use WSL2 resource limits (.wslconfig)
Don't:
- ❌ Share your password publicly
- ❌ Use weak custom passwords (<12 characters)
- ❌ Leave sessions running indefinitely
- ❌ Expose code-server directly without tunnel
- ❌ Bind to 0.0.0.0 on public networks
- ❌ Disable authentication
Threat Model
Protected Against:
- ✅ Unauthorized access (password required)
- ✅ Eavesdropping (HTTPS encryption)
- ✅ Network scanning (localhost binding)
- ✅ Weak passwords (strong generation)
- ✅ Credential theft from filesystem (600 permissions)
- ✅ WebSocket CSRF (origin validation)
Not Protected Against (out of scope):
- ⚠️ Compromised WSL2 system (if system compromised, IDE access is too)
- ⚠️ Malicious code execution (if you run malicious code in terminal)
- ⚠️ Social engineering (sharing password with attacker)
- ⚠️ Browser vulnerabilities (keep browser updated)
Security Warnings
⚠️ code-server Has Full Access:
- Can read/write all files in WSL2
- Can execute commands as your user
- Can access git credentials
- Treat code-server password like SSH key
⚠️ Extensions Can Execute Code:
- Extensions run with your privileges
- Only install trusted extensions
- Review extension permissions
- Check extension ratings/reviews
⚠️ ngrok Free Tier Warning: ngrok free tier URLs are public. However:
- URL is random and hard to guess
- Authentication still required (password)
- HTTPS encrypted
- Recommendation: Don't share ngrok URLs publicly
Advanced Security (Optional)
For enhanced security, see Security Guide:
- OAuth integration (Google/GitHub login)
- IP whitelisting (Cloudflare Tunnel)
- Access logging and monitoring
- Extension security scanning
Performance Tips
Optimize for Speed
1. Choose Fast Tunnel:
- Cloudflare often faster than ngrok
- Tailscale fastest (direct peer connection)
2. Limit Extensions:
- Only install extensions you use
- Disable unused extensions
- Remove extensions you don't need
3. Close Unused Tabs:
- Each open file uses memory
- Close files when done editing
- Use "Close All" periodically
4. Optimize Settings:
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/.git/objects/**": true
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true
}
}
5. Use Search Wisely:
- Use .gitignore to exclude files
- Don't search in node_modules
- Use specific file patterns
Monitor Performance
# Check resource usage
./code-server-status.sh
# If high:
# - Remove extensions
# - Close tabs
# - Restart session
For detailed optimization, see Performance Optimization Guide.
Troubleshooting Quick Fixes
code-server Won't Start
Error: code-server: command not found
Fix:
# Reinstall code-server
./install.sh
Error: Address already in use (port 8080)
Fix:
# Find what's using port
lsof -i :8080
# Kill the process
kill <PID>
# Or use different port
CODE_SERVER_PORT=8081 ./code-server-start.sh
Can't Login (Wrong Password)
Error: "Incorrect password" or password doesn't work
Fix:
# Reset password
./configure-auth.sh
# Get new password
./code-server-status.sh
WebSocket Connection Failed
Error in browser console: WebSocket connection failed
Fix:
- Check code-server running:
./code-server-status.sh - Restart session:
./code-server-stop.sh && ./code-server-start.sh - Try different browser (Chrome recommended)
High Memory Usage
Issue: code-server using >2GB memory
Fix:
- Check extensions: Remove unused
- Close unused tabs
- Restart session
- Configure WSL2 limits:
./configure-resources.sh
Extensions Not Loading
Issue: Installed extension doesn't appear
Fix:
- Reload window: Command Palette → "Reload Window"
- Check compatibility (see Extension Management)
- Check logs: Developer → Toggle Developer Tools → Console
Slow Performance / Lag
Issue: IDE feels sluggish, typing delayed
Fix:
- Check network:
ping 8.8.8.8(should be <100ms) - Try different tunnel (Cloudflare usually faster)
- Close unused tabs/extensions
- Check WSL2 resources:
htop
For more issues, see Troubleshooting Guide.
Reference Guides
Comprehensive guides for deeper understanding:
Installation & Setup
- Installation Guide - Detailed installation for code-server + all tunnel options, version management, verification
Security
- Security Guide - CVE-2023-26114 analysis, authentication methods, password hashing, defense in depth
Extensions
- Extension Management Guide - Install/update/remove extensions, compatibility, performance impact
Resources & Performance
- Resource Management Guide - WSL2 .wslconfig, memory limits, CPU allocation, monitoring
- Performance Optimization Guide - Settings, extension selection, search optimization, monitoring
Tunneling
- Tunneling Options Guide - Comprehensive comparison of ngrok vs Cloudflare vs Tailscale, setup for each
Configuration
- WSL2 Configuration Guide - .wslconfig examples, systemd support, resource limits
Troubleshooting
- Troubleshooting Guide - Extensive error catalog, debugging techniques, solutions
Automation Scripts
All automation scripts are in scripts/ directory:
Installation
./install.sh # Interactive installer for code-server + tunnel
./install.sh --ngrok # Non-interactive: install with ngrok
./install.sh --cloudflare # Non-interactive: install with Cloudflare
./install.sh --tailscale # Non-interactive: install with Tailscale
Configuration
./configure-auth.sh # Interactive: generate hashed password
./configure-auth.sh --custom-password # Interactive: use your password
./configure-resources.sh # Interactive: configure WSL2 limits
Session Management
./code-server-start.sh # Start code-server + tunnel, display URL
./code-server-stop.sh # Stop both gracefully
./code-server-status.sh # Check status, show URL + resources
Extension Management
./manage-extensions.sh # Interactive extension manager
Health Check
./health-check.sh # Verify installation and configuration
Templates
Configuration templates for advanced users:
code-server Configuration
File: templates/config.yaml.template
Example config.yaml (created automatically by configure-auth.sh):
bind-addr: 127.0.0.1:8080
auth: password
password: HASHED_PASSWORD_HERE
cert: false
WSL2 Resource Configuration
File: templates/.wslconfig.template
Example .wslconfig for Windows (created by configure-resources.sh):
[wsl2]
memory=8GB
processors=4
swap=2GB
systemd Service
File: templates/code-server.service
For auto-start on WSL2 boot (requires systemd support):
# Copy template
cp templates/code-server.service ~/.config/systemd/user/
# Enable auto-start
systemctl --user enable code-server
systemctl --user start code-server
Environment Variables
File: templates/.env.template
Example .env configuration (created by configure-auth.sh):
CODE_SERVER_PASSWORD=strongpassword
TUNNEL_TYPE=cloudflare
CLOUDFLARE_TUNNEL_TOKEN=your_token_here
Comparison: code-server vs ttyd
When to use code-server (this skill):
- ✅ Full IDE functionality needed
- ✅ IntelliSense, debugging, extensions
- ✅ Editing large codebases
- ✅ Long development sessions
- ✅ Tablet with keyboard
- ✅ Serious coding work
When to use ttyd:
- Quick command execution
- Lightweight (<50MB vs 200MB-4GB)
- Simple terminal tasks
- Low resource usage acceptable
- Mobile phone (not tablet)
Can use both: Install both skills, use ttyd for quick tasks, code-server for serious coding.
Next Steps
After Setup:
- ✅ Test connection from tablet/computer
- ✅ Install your favorite extensions
- ✅ Configure settings (same as desktop VS Code)
- ✅ Open your project folder
- ✅ Bookmark connection URL
- ✅ Practice start/stop workflow
Advanced Setup:
- Configure systemd auto-start (see templates/)
- Setup Cloudflare Tunnel for persistent URLs
- Optimize WSL2 resources for your workflow
- Configure VS Code settings sync
Explore More:
- Extension Management - Manage extensions
- Resource Management - Optimize resources
- Performance Optimization - Speed up IDE
- Security Guide - Advanced security
Success Checklist
You've successfully setup remote IDE access when:
- code-server installed and verified
- Tunnel service installed (ngrok/Cloudflare/Tailscale)
- Authentication configured (strong hashed password)
- WSL2 resources configured (.wslconfig)
- Can start session (
./code-server-start.sh) - Connection URL displayed
- Can access VS Code from browser (tablet/phone/computer)
- Can login with password
- Full VS Code functionality works (edit, IntelliSense, terminal)
- Can install extensions
- Can stop session (
./code-server-stop.sh) - Can check status (
./code-server-status.sh)
Congratulations! You now have secure remote VS Code IDE access from any device.
code-server-remote-ide-wsl2 - Full VS Code IDE, anywhere you go.
