README.md 6.0 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:8443:8443 -v "$PWD:/home/coder/project" codercom/code-server
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
K
Kyle Carberry 已提交
21
### Run over SSH
K
Kyle Carberry 已提交
22
Use [sshcode](https://github.com/codercom/sshcode) for a simple setup.
K
Kyle Carberry 已提交
23

24
### Docker
A
Asher 已提交
25
See the Docker one-liner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile).
26

A
Asher 已提交
27 28 29 30 31
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 已提交
32

A
Asher 已提交
33
### Binaries
A
Asher 已提交
34 35
1. [Download a binary](https://github.com/cdr/code-server/releases). (Linux and
    OS X supported. Windows coming soon)
A
Asher 已提交
36 37
2. Unpack the downloaded file then run the binary.
3. In your browser navigate to `localhost:8443`.
A
Asher 已提交
38

A
Asher 已提交
39 40
- 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 已提交
41

42
### Build
A
Asher 已提交
43 44 45
- 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 已提交
46
- For now `@coder/nbin` is a global dependency.
A
Asher 已提交
47 48
- Run `yarn build ${vscodeVersion} ${codeServerVersion}` in this directory (for
  example: `yarn build 1.36.0 development`).
A
Asher 已提交
49 50 51
- 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 已提交
52 53 54
- 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 已提交
55

56
## Known Issues
A
Asher 已提交
57
- Uploading .vsix files doesn't work.
58
- Creating custom VS Code extensions and debugging them doesn't work.
A
Asher 已提交
59
- Extension profiling and tips are currently disabled.
K
Kyle Carberry 已提交
60

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

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

75
## Telemetry
A
Asher 已提交
76 77
Use the `--disable-telemetry` flag to completely disable telemetry. We use the
data collected to improve code-server.
78

K
Kyle Carberry 已提交
79
## Contributing
A
Asher 已提交
80
### Development
A
Asher 已提交
81
```shell
A
Asher 已提交
82 83
git clone https://github.com/microsoft/vscode
cd vscode
84
git checkout 1.36.1
A
Asher 已提交
85 86 87 88 89 90
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 已提交
91
# Run the next command in another shell.
A
Asher 已提交
92
yarn start
A
Asher 已提交
93 94 95
# Visit http://localhost:8443
```

A
Asher 已提交
96 97 98 99
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 已提交
100 101 102 103 104
### 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.
A
Asher 已提交
105

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

110
Our changes include:
A
Asher 已提交
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
- 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.
A
Asher 已提交
128
- Modify the build process to include our code.
129

A
Asher 已提交
130
## License
K
Kyle Carberry 已提交
131
[MIT](LICENSE)
A
Asher 已提交
132

K
Kyle Carberry 已提交
133
## Enterprise
134 135
Visit [our enterprise page](https://coder.com/enterprise) for more information
about our enterprise offering.
A
Asher 已提交
136 137

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