2019-08-01 00:08:37 +02:00
|
|
|
# code-server · [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/cdr/code-server/blob/master/LICENSE) [!["Latest Release"](https://img.shields.io/github/release/cdr/code-server.svg)](https://github.com/cdr/code-server/releases/latest) [![Build Status](https://img.shields.io/travis/com/cdr/code-server/master)](https://github.com/cdr/code-server)
|
2019-01-08 01:46:19 +01:00
|
|
|
|
2019-07-13 01:41:56 +02:00
|
|
|
`code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a
|
|
|
|
remote server, accessible through the browser.
|
2019-03-06 02:45:21 +01:00
|
|
|
|
2019-03-07 03:59:43 +01:00
|
|
|
Try it out:
|
|
|
|
```bash
|
2019-07-24 02:06:40 +02:00
|
|
|
docker run -it -p 127.0.0.1:8443:8443 -v "$PWD:/home/coder/project" codercom/code-server
|
2019-03-07 03:59:43 +01:00
|
|
|
```
|
|
|
|
|
2019-08-01 00:08:37 +02:00
|
|
|
- **Consistent environment:** Code on your Chromebook, tablet, and laptop with a
|
|
|
|
consistent dev environment. develop more easily for Linux if you have a
|
|
|
|
Windows or Mac, and pick up where you left off when switching workstations.
|
|
|
|
- **Server-powered:** Take advantage of large cloud servers to speed up tests,
|
|
|
|
compilations, downloads, and more. Preserve battery life when you're on the go
|
|
|
|
since all intensive computation runs on your server.
|
2019-03-04 19:31:27 +01:00
|
|
|
|
2019-07-22 17:21:15 +02:00
|
|
|
![Screenshot](/doc/assets/ide.gif)
|
2019-03-04 19:31:27 +01:00
|
|
|
|
|
|
|
## Getting Started
|
2019-04-20 03:20:31 +02:00
|
|
|
### Run over SSH
|
2019-04-20 03:22:00 +02:00
|
|
|
Use [sshcode](https://github.com/codercom/sshcode) for a simple setup.
|
2019-04-20 03:20:31 +02:00
|
|
|
|
2019-03-07 03:59:43 +01:00
|
|
|
### Docker
|
2019-08-01 00:08:37 +02:00
|
|
|
See the Docker one-liner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile).
|
2019-03-07 03:59:43 +01:00
|
|
|
|
2019-07-23 22:38:00 +02:00
|
|
|
To debug Golang using the
|
|
|
|
[ms-vscode-go extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go),
|
|
|
|
you need to add `--security-opt seccomp=unconfined` to your `docker run`
|
|
|
|
arguments when launching code-server with Docker. See
|
|
|
|
[#725](https://github.com/cdr/code-server/issues/725) for details.
|
2019-03-04 19:31:27 +01:00
|
|
|
|
2019-07-23 22:38:00 +02:00
|
|
|
### Binaries
|
2019-08-01 00:08:37 +02:00
|
|
|
1. [Download a binary](https://github.com/cdr/code-server/releases). (Linux and
|
|
|
|
OS X supported. Windows coming soon)
|
2019-07-23 22:38:00 +02:00
|
|
|
2. Unpack the downloaded file then run the binary.
|
|
|
|
3. In your browser navigate to `localhost:8443`.
|
2019-01-08 01:46:19 +01:00
|
|
|
|
2019-07-23 22:38:00 +02:00
|
|
|
- For self-hosting and other information see [doc/quickstart.md](doc/quickstart.md).
|
|
|
|
- For hosting on cloud platforms see [doc/deploy.md](doc/deploy.md).
|
2019-03-04 19:31:27 +01:00
|
|
|
|
2019-07-13 01:41:56 +02:00
|
|
|
### Build
|
2019-08-01 00:08:37 +02:00
|
|
|
- If you also plan on developing, set the `OUT` environment variable. Otherwise
|
|
|
|
it will build in this directory which will cause issues because `yarn watch`
|
|
|
|
will try to compile the build directory as well.
|
2019-07-08 17:33:58 +02:00
|
|
|
- For now `@coder/nbin` is a global dependency.
|
2019-08-03 02:26:41 +02:00
|
|
|
- Run `yarn build ${vscodeVersion} ${codeServerVersion}` in this directory (for
|
|
|
|
example: `yarn build 1.36.0 development`).
|
2019-07-16 21:57:02 +02:00
|
|
|
- If you target the same VS Code version our Travis builds do everything will
|
|
|
|
work but if you target some other version it might not (we have to do some
|
|
|
|
patching to VS Code so different versions aren't always compatible).
|
2019-07-11 01:10:39 +02:00
|
|
|
- You can run the built code with `node path/to/build/out/vs/server/main.js` or run
|
|
|
|
`yarn binary` with the same arguments in the previous step to package the
|
|
|
|
code into a single binary.
|
2019-07-02 18:33:27 +02:00
|
|
|
|
2019-07-13 01:41:56 +02:00
|
|
|
## Known Issues
|
2019-07-23 22:38:00 +02:00
|
|
|
- Uploading .vsix files doesn't work.
|
2019-03-07 22:23:16 +01:00
|
|
|
- Creating custom VS Code extensions and debugging them doesn't work.
|
2019-07-23 22:38:00 +02:00
|
|
|
- Extension profiling and tips are currently disabled.
|
2019-03-04 19:31:27 +01:00
|
|
|
|
2019-07-13 01:41:56 +02:00
|
|
|
## Future
|
2019-03-27 23:05:44 +01:00
|
|
|
- **Stay up to date!** Get notified about new releases of code-server.
|
|
|
|
![Screenshot](/doc/assets/release.gif)
|
2019-03-04 19:31:27 +01:00
|
|
|
- Windows support.
|
2019-03-14 23:32:18 +01:00
|
|
|
- Electron and Chrome OS applications to bridge the gap between local<->remote.
|
2019-03-04 19:31:27 +01:00
|
|
|
- Run VS Code unit tests against our builds to ensure features work as expected.
|
|
|
|
|
2019-07-13 01:41:56 +02:00
|
|
|
## Extensions
|
2019-08-01 00:08:37 +02:00
|
|
|
At the moment we can't use the official VS Code Marketplace. We've created a
|
2019-07-13 01:41:56 +02:00
|
|
|
custom extension marketplace focused around open-sourced extensions. However,
|
2019-07-23 22:38:00 +02:00
|
|
|
you can manually download the extension to your extensions directory. It's also
|
2019-08-01 00:08:37 +02:00
|
|
|
possible to set your own marketplace URLs by setting the `SERVICE_URL` and
|
2019-07-23 22:38:00 +02:00
|
|
|
`ITEM_URL` environment variables.
|
2019-03-22 20:58:13 +01:00
|
|
|
|
2019-04-18 00:18:35 +02:00
|
|
|
## Telemetry
|
2019-07-23 22:38:00 +02:00
|
|
|
Use the `--disable-telemetry` flag to completely disable telemetry. We use the
|
|
|
|
data collected to improve code-server.
|
2019-04-18 00:18:35 +02:00
|
|
|
|
2019-03-04 19:31:27 +01:00
|
|
|
## Contributing
|
2019-07-16 21:57:02 +02:00
|
|
|
### Development
|
2019-07-23 22:38:00 +02:00
|
|
|
```shell
|
2019-07-16 21:57:02 +02:00
|
|
|
git clone https://github.com/microsoft/vscode
|
|
|
|
cd vscode
|
2019-07-22 23:01:32 +02:00
|
|
|
git checkout 1.36.1
|
2019-07-16 21:57:02 +02:00
|
|
|
git clone https://github.com/cdr/code-server src/vs/server
|
|
|
|
cd src/vs/server
|
|
|
|
yarn patch:apply
|
|
|
|
yarn
|
|
|
|
yarn watch
|
|
|
|
# Wait for the initial compilation to complete (it will say "Finished compilation").
|
2019-07-20 01:45:13 +02:00
|
|
|
# Run the next command in another shell.
|
2019-07-23 22:38:00 +02:00
|
|
|
yarn start
|
2019-07-16 21:57:02 +02:00
|
|
|
# Visit http://localhost:8443
|
|
|
|
```
|
|
|
|
|
2019-08-03 02:26:41 +02:00
|
|
|
If you run into issues about a different version of Node being used, try running
|
|
|
|
`npm rebuild` in the VS Code directory and ignore the error at the end from
|
|
|
|
`vscode-ripgrep`.
|
|
|
|
|
2019-07-16 21:57:02 +02:00
|
|
|
### Upgrading VS Code
|
|
|
|
We have to patch VS Code to provide and fix some functionality. As the web
|
|
|
|
portion of VS Code matures, we'll be able to shrink and maybe even entirely
|
|
|
|
eliminate our patch. In the meantime, however, upgrading the VS Code version
|
|
|
|
requires ensuring that the patch still applies and has the intended effects.
|
2019-01-08 01:46:19 +01:00
|
|
|
|
2019-07-16 21:57:02 +02:00
|
|
|
To generate a new patch, **stage all the changes** you want to be included in
|
|
|
|
the patch in the VS Code source, then run `yarn patch:generate` in this
|
|
|
|
directory.
|
2019-01-08 01:46:19 +01:00
|
|
|
|
2019-07-22 23:01:32 +02:00
|
|
|
Our changes include:
|
2019-08-01 00:08:37 +02:00
|
|
|
- Add a `code-server` schema.
|
|
|
|
- Make the extension sidebar work in the browser. Mostly involves removing
|
|
|
|
Node-specific code for the `extensions` channel client and adding a
|
|
|
|
`gallery` channel.
|
|
|
|
- Allow multiple extension directories (both user and built-in).
|
|
|
|
- Rewrite assets used in the CSS (like icons) or as images to use the base URL.
|
|
|
|
- Change the loader to use the base URL.
|
|
|
|
- Change the web socket to use the base URL and TLS if necessary.
|
|
|
|
- Set the favicon using a relative path.
|
|
|
|
- Modify the file service to support writing from an asynchronous stream (for
|
|
|
|
uploading files).
|
|
|
|
- Add a file prefix to ignore for temporary files created during upload.
|
|
|
|
- Insert our upload service for use in editor windows and explorer.
|
|
|
|
- Modify the log level to get its initial setting from the server.
|
|
|
|
- Get telemetry working by adding a channel for it.
|
|
|
|
- Change a regular expression used for mnemonics so it works on Firefox.
|
|
|
|
- Make it possible for us to load code on the client.
|
2019-08-03 02:26:41 +02:00
|
|
|
- Modify the build process to include our code.
|
2019-07-22 23:01:32 +02:00
|
|
|
|
2019-07-16 21:57:02 +02:00
|
|
|
## License
|
2019-03-04 19:31:27 +01:00
|
|
|
[MIT](LICENSE)
|
2019-01-08 01:46:19 +01:00
|
|
|
|
2019-03-04 19:31:27 +01:00
|
|
|
## Enterprise
|
2019-07-13 01:41:56 +02:00
|
|
|
Visit [our enterprise page](https://coder.com/enterprise) for more information
|
|
|
|
about our enterprise offering.
|
2019-03-04 21:27:46 +01:00
|
|
|
|
|
|
|
## Commercialization
|
2019-07-13 01:41:56 +02:00
|
|
|
If you would like to commercialize code-server, please contact
|
|
|
|
contact@coder.com.
|