OpenVSCode Server
VS Code in browser with Git and terminal.
Overview
OpenVSCode Server is an open-source project developed by Gitpod that brings the full Microsoft Visual Studio Code experience to any web browser. Unlike traditional desktop IDEs, OpenVSCode Server runs as a web application, allowing developers to access their complete development environment from any device with internet connectivity. This browser-based approach eliminates the need for local VS Code installations while maintaining full compatibility with extensions, themes, and workspace configurations.
This stack combines OpenVSCode Server with NGINX to create a robust web-based development platform. NGINX serves as a high-performance reverse proxy, providing SSL termination, request routing, and static file serving capabilities that enhance the VS Code web interface. The combination addresses common challenges in remote development scenarios, including secure access management, performance optimization for large codebases, and reliable session handling for long-running development tasks.
Development teams working with distributed workflows, organizations requiring standardized development environments, and individual developers seeking device-independent coding solutions will find this stack particularly valuable. The OpenVSCode Server and NGINX pairing excels in scenarios where consistent development environments across team members are crucial, or when accessing powerful remote development servers from lightweight client devices like tablets or Chromebooks is necessary.
Key Features
- Full Visual Studio Code interface accessible through any modern web browser
- Native support for VS Code extensions including language servers, debuggers, and themes
- Built-in terminal with shell access for command-line operations and Git workflows
- Token-based authentication system for secure remote access control
- Persistent workspace storage maintaining files, settings, and project state
- NGINX reverse proxy providing HTTP request optimization and static asset caching
- Multi-user workspace isolation through container user mapping
- Real-time file synchronization between browser interface and container filesystem
Common Use Cases
- 1Remote development teams needing consistent IDE environments across different operating systems
- 2Educational institutions providing standardized coding environments for students on various devices
- 3Developers working on resource-intensive projects requiring powerful server hardware
- 4Organizations implementing zero-trust security models with centralized development infrastructure
- 5Freelancers and consultants accessing client codebases from multiple locations and devices
- 6Code review workflows where reviewers need full IDE functionality without local setup
- 7Development on locked-down corporate networks where desktop software installation is restricted
Prerequisites
- Docker Engine 20.10+ and Docker Compose V2 for container orchestration
- Minimum 2GB RAM allocation for OpenVSCode Server container operations
- Available ports 3000 and 80 for OpenVSCode Server and NGINX respectively
- Modern web browser with WebSocket support for real-time IDE functionality
- Basic understanding of VS Code extension management and workspace configuration
- File system permissions for volume mounting if using custom project directories
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 openvscode-server: 3 image: gitpod/openvscode-server:latest4 container_name: openvscode-server5 restart: unless-stopped6 ports: 7 - "${VSCODE_PORT:-3000}:3000"8 environment: 9 - CONNECTION_TOKEN=${CONNECTION_TOKEN}10 volumes: 11 - vscode_home:/home/workspace12 - ${PROJECT_PATH:-./projects}:/home/workspace/projects13 user: "1000:1000"1415 nginx: 16 image: nginx:alpine17 container_name: vscode-nginx18 restart: unless-stopped19 ports: 20 - "${NGINX_PORT:-80}:80"21 volumes: 22 - ./nginx.conf:/etc/nginx/nginx.conf:ro2324volumes: 25 vscode_home: .env Template
.env
1# OpenVSCode Server2VSCODE_PORT=30003CONNECTION_TOKEN=your_secure_token4PROJECT_PATH=./projects5NGINX_PORT=80Usage Notes
- 1VS Code at http://localhost:3000
- 2Use token for authentication
- 3Mount project directories
- 4Install extensions as needed
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
openvscode-server
openvscode-server:
image: gitpod/openvscode-server:latest
container_name: openvscode-server
restart: unless-stopped
ports:
- ${VSCODE_PORT:-3000}:3000
environment:
- CONNECTION_TOKEN=${CONNECTION_TOKEN}
volumes:
- vscode_home:/home/workspace
- ${PROJECT_PATH:-./projects}:/home/workspace/projects
user: "1000:1000"
nginx
nginx:
image: nginx:alpine
container_name: vscode-nginx
restart: unless-stopped
ports:
- ${NGINX_PORT:-80}:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 openvscode-server:5 image: gitpod/openvscode-server:latest6 container_name: openvscode-server7 restart: unless-stopped8 ports:9 - "${VSCODE_PORT:-3000}:3000"10 environment:11 - CONNECTION_TOKEN=${CONNECTION_TOKEN}12 volumes:13 - vscode_home:/home/workspace14 - ${PROJECT_PATH:-./projects}:/home/workspace/projects15 user: "1000:1000"1617 nginx:18 image: nginx:alpine19 container_name: vscode-nginx20 restart: unless-stopped21 ports:22 - "${NGINX_PORT:-80}:80"23 volumes:24 - ./nginx.conf:/etc/nginx/nginx.conf:ro2526volumes:27 vscode_home:28EOF2930# 2. Create the .env file31cat > .env << 'EOF'32# OpenVSCode Server33VSCODE_PORT=300034CONNECTION_TOKEN=your_secure_token35PROJECT_PATH=./projects36NGINX_PORT=8037EOF3839# 3. Start the services40docker compose up -d4142# 4. View logs43docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/openvscode-server-stack/run | bashTroubleshooting
- Connection token authentication failing: Verify CONNECTION_TOKEN environment variable is set and matches the token used in browser URL
- Extensions not installing or loading: Check container has sufficient disk space and restart OpenVSCode Server container after failed installations
- File permissions denied in workspace: Ensure USER_ID and GROUP_ID environment variables match your host system user for proper volume mounting
- NGINX proxy errors or timeouts: Verify nginx.conf proxy_pass directive points to correct OpenVSCode Server container name and port
- Workspace files not persisting: Confirm vscode_home volume is properly created and mounted to /home/workspace in container
- Browser disconnections during large file operations: Increase NGINX proxy timeout values and WebSocket connection limits in configuration
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download