README.md 6.2 KB
Newer Older
A
Asher 已提交
1
# 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)
A
Asher 已提交
2

3 4
`code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a
remote server, accessible through the browser.
5

6 7
Try it out:
```bash
A
Asher 已提交
8
docker run -it -p 127.0.0.1:8080:8080 -v "${HOME}/.local/share/code-server:/home/coder/.local/share/code-server" -v "$PWD:/home/coder/project" codercom/code-server:v2
9 10
```

A
Asher 已提交
11 12 13 14 15 16
- **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.
K
Kyle Carberry 已提交
17

18
![Screenshot](/doc/assets/ide.gif)
K
Kyle Carberry 已提交
19 20

## Getting Started
21 22 23 24 25 26 27 28 29

### Requirements

- Minimum GLIBC version of 2.17 and a minimum version of GLIBCXX of 3.4.15.
  - This is the main requirement for building Visual Studio Code. We cannot go lower than this.
- A 64-bit host with at least 1GB RAM and 2 cores.
   - 1 core hosts would work but not optimally.
- Docker (for Docker versions of `code-server`).

K
Kyle Carberry 已提交
30
### Run over SSH
K
Kyle Carberry 已提交
31
Use [sshcode](https://github.com/codercom/sshcode) for a simple setup.
K
Kyle Carberry 已提交
32

33
### Docker
A
Asher 已提交
34
See the Docker one-liner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile).
35

A
Asher 已提交
36 37 38 39 40
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.
K
Kyle Carberry 已提交
41

A
Asher 已提交
42 43 44
### Digital Ocean
[![Create a Droplet](./doc/assets/droplet.svg)](https://marketplace.digitalocean.com/apps/code-server?action=deploy)

A
Asher 已提交
45
### Binaries
A
Asher 已提交
46 47
1. [Download a binary](https://github.com/cdr/code-server/releases). (Linux and
    OS X supported. Windows coming soon)
A
Asher 已提交
48
2. Unpack the downloaded file then run the binary.
A
Asher 已提交
49
3. In your browser navigate to `localhost:8080`.
A
Asher 已提交
50

A
Asher 已提交
51 52
- 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).
K
Kyle Carberry 已提交
53

54
### Build
A
Asher 已提交
55 56 57
- 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.
A
Asher 已提交
58 59
- Run `yarn build ${vscodeVersion} ${codeServerVersion}` in this directory (for
  example: `yarn build 1.36.0 development`).
A
Asher 已提交
60 61 62
- 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).
A
Asher 已提交
63 64 65
- 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.
A
Asher 已提交
66

67
## Known Issues
68
- Creating custom VS Code extensions and debugging them doesn't work.
A
Asher 已提交
69
- Extension profiling and tips are currently disabled.
K
Kyle Carberry 已提交
70

71
## Future
72 73
- **Stay up to date!** Get notified about new releases of code-server.
  ![Screenshot](/doc/assets/release.gif)
K
Kyle Carberry 已提交
74
- Windows support.
M
Mike Hatch 已提交
75
- Electron and Chrome OS applications to bridge the gap between local<->remote.
K
Kyle Carberry 已提交
76 77
- Run VS Code unit tests against our builds to ensure features work as expected.

78
## Extensions
A
Asher 已提交
79
At the moment we can't use the official VS Code Marketplace. We've created a
80
custom extension marketplace focused around open-sourced extensions. However,
A
Asher 已提交
81
you can manually download the extension to your extensions directory. It's also
A
Asher 已提交
82
possible to set your own marketplace URLs by setting the `SERVICE_URL` and
A
Asher 已提交
83
`ITEM_URL` environment variables.
84

85
## Telemetry
A
Asher 已提交
86 87
Use the `--disable-telemetry` flag to completely disable telemetry. We use the
data collected to improve code-server.
88

K
Kyle Carberry 已提交
89
## Contributing
A
Asher 已提交
90
### Development
A
Asher 已提交
91
```shell
A
Asher 已提交
92 93
git clone https://github.com/microsoft/vscode
cd vscode
A
Asher 已提交
94
git checkout <see travis.yml for the VS Code version to use here>
A
Asher 已提交
95 96 97 98 99 100
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").
A
Asher 已提交
101
# Run the next command in another shell.
A
Asher 已提交
102
yarn start
A
Asher 已提交
103
# Visit http://localhost:8080
A
Asher 已提交
104 105
```

A
Asher 已提交
106 107 108 109
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`.

A
Asher 已提交
110
### Upgrading VS Code
A
Asher 已提交
111 112 113 114
We 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.
A
Asher 已提交
115

A
Asher 已提交
116 117 118
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.
A
Asher 已提交
119

120
Our changes include:
A
Asher 已提交
121
- Change the remote schema to `code-server`.
A
Asher 已提交
122
- Allow multiple extension directories (both user and built-in).
123 124
- Modify the loader, websocket, webview, service worker, and asset requests to
  use the URL of the page as a base (and TLS if necessary for the websocket).
A
Asher 已提交
125 126 127 128 129 130
- Send client-side telemetry through the server and get the initial log level
  from the server.
- Add an upload service for use in editor windows and the explorer along with a
  file prefix to ignore for temporary files created during upload.
- Make changing the display language work.
- Make hiding or toggling the menu bar possible.
A
Asher 已提交
131
- Make it possible for us to load code on the client.
A
Asher 已提交
132
- Modify the build process to include our code.
133

A
Asher 已提交
134
## License
K
Kyle Carberry 已提交
135
[MIT](LICENSE)
A
Asher 已提交
136

K
Kyle Carberry 已提交
137
## Enterprise
138 139
Visit [our enterprise page](https://coder.com/enterprise) for more information
about our enterprise offering.
A
Asher 已提交
140 141

## Commercialization
142 143
If you would like to commercialize code-server, please contact
contact@coder.com.