OpenVSCode Server
What is this?
This project provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. It's based on the very same architecture used by Gitpod or GitHub Codespaces at scale.
Why?
VS Code has traditionally been a desktop IDE built with web technologies. A few years back, people started patching it in order to run it in a remote context and to make it accessible through web browsers. These efforts have been complex and error prone, because many changes had to be made across the large code base of VS Code.
Luckily, in 2019 the VS Code team started to refactor its architecture to support a browser-based working mode. While this architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sourced, until now. As a result, many people in the community still use the old, hard to maintain and error-prone approach.
At Gitpod, we've been asked a lot about how we do it. So we thought we might as well share the minimal set of changes needed so people can rely on the latest version of VS Code, have a straightforward upgrade path and low maintenance effort.
Getting started
Docker
- Start the server:
docker run -it --init -p 3000:3000 -v "$(pwd):/home/workspace:cached" gitpod/openvscode-server
- Visit the URL printed in your terminal. Just going to port 3000 won't work, because VS Code requires that you provide a uniquely generated security token to prevent unauthorized access.
A note about security tokens
Since OpenVSCode Server v1.62, you must access the Web UI using a connection token generated by the server. If that's not what you're looking for, and instead want to generate these tokens by yourself, start the server with --connectionToken YOUR_TOKEN
to force your secret to be used. If you want your development environment to be even more secure, create a plaintext file with the desired token as its contents and provide it to the server with --connection-secret YOUR_SECRET_FILE
.
For those using docker-compose you can set a connection token by using command
. For example:
command: --connectionToken yourTokenHere
Note: Feel free to use the nightly
tag to test the latest version, i.e. gitpod/openvscode-server:nightly
.
Custom Environment
- If you want to add dependencies to this Docker image, here is a template to help:
FROM gitpod/openvscode-server:latest USER root # to get permissions to install packages and such RUN # the installation process for software needed USER openvscode-server # to restore permissions for the web interface
- For additional possibilities, please consult the
Dockerfile
for OpenVSCode Server at https://github.com/gitpod-io/openvscode-releases/
Linux
- Download the latest release
- Untar and run the server:
tar -xzf openvscode-server-v${OPENVSCODE_SERVER_VERSION}.tar.gz
cd openvscode-server-v${OPENVSCODE_SERVER_VERSION}
./server.sh
- Visit the URL printed in your terminal. Just going to port 3000 won't work, because VS Code requires that you provide a uniquely generated security token to prevent unauthorized access.
Note: You can use pre-releases to test nightly changes.
Deployment guides
Please refer to Guides to learn how to deploy OpenVSCode Server to your cloud provider of choice.
The scope of this project
This project only adds minimal bits required to run VS Code in a server scenario. We have no intention of changing VS Code in any way or to add additional features to VS Code itself. Please report feature requests, bug fixes, etc. in the upstream repository.
For any feature requests, bug reports, or contributions that are not specific to running VS Code in a server context, please go to Visual Studio Code - Open Source "OSS"
Documentation
All documentation is available in the docs
branch of this project.
Supporters
The project is supported by companies such as GitLab, VMware, Uber, SAP, Sourcegraph, RStudio, SUSE, Tabnine, Render and TypeFox.
Contributing
Thanks for your interest in contributing to the project 🙏. You can start a development environment with the following button:
To learn about the code structure and other topics related to contributing, please refer to the development docs.
Community & Feedback
To learn what others are up to and to provide feedback, please head over to the Discussions.
You can also follow us on Twitter @gitpod or come chat with us.
Legal
This project is not affiliated with Microsoft Corporation.