-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #380 from CodinGame/use-official-ext-host-server
Use official ext host server
- Loading branch information
Showing
19 changed files
with
124 additions
and
579 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,5 +3,4 @@ vscode/ | |
vscode-loc/ | ||
monaco-editor/ | ||
vscode-default-extensions/ | ||
vscode-default-extensions-node/ | ||
dist/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# How to install and use VSCode server with monaco-vscode-api | ||
|
||
## Install VSCode server | ||
|
||
Get the commit_sha of the proper VSCode version by running: | ||
```bash | ||
curl https://raw.githubusercontent.com/CodinGame/monaco-vscode-api/v<monaco_vscode_api_version>/package.json | jq -r '.["config"]["vscode"]["commit"]' | ||
``` | ||
(replace `<monaco_vscode_api_version>` by the version of monaco-vscode-api, starting from `3.2.3`) | ||
|
||
Then download the server: | ||
|
||
### For VScode server | ||
|
||
Download `https://update.code.visualstudio.com/commit:${commit_sha}/server-<platform>-<arch>/stable` | ||
|
||
Replace: | ||
- `<platform>` by either `win32`, `linux` or `darwin` | ||
- `<arch>` by either `arm64`, `x64` or `armhf` | ||
|
||
For instance: <https://update.code.visualstudio.com/commit:863d2581ecda6849923a2118d93a088b0745d9d6/server-linux-x64/stable> | ||
|
||
### For VSCodium server | ||
|
||
Get `reh` release from <https://github.com/VSCodium/vscodium/releases> | ||
|
||
For instance: `vscodium-reh-linux-x64-1.87.2.24072.tar.gz` | ||
|
||
## Installation | ||
Untar the archive in the install directory: | ||
|
||
```bash | ||
mkdir -p <install_directory> && tar --no-same-owner -xzv --strip-components=1 -C <install_directory> -f <archive> | ||
``` | ||
|
||
It's also possible to extract the archive on the fly while downloading it: | ||
```bash | ||
curl -L --max-redirs 5 https://update.code.visualstudio.com/commit:863d2581ecda6849923a2118d93a088b0745d9d6/server-linux-x64/stable | tar -xz -C . --strip-components=1 | ||
``` | ||
|
||
## Configuration | ||
|
||
In the install directory, edit the file `product.json` and make sure: | ||
- The `commit` field correspond to the `commit_sha` found earlier (especially for VSCodium) | ||
- The `webEndpointUrlTemplate` contains the url of the app that will be using monaco-vscode-api (example: `https://my.domain.com/`) (create the field if it doesn't exists) | ||
|
||
Example: | ||
```bash | ||
cat <<< "$(jq ".webEndpointUrlTemplate = \"https://my.domain.com/\"" product.json)" > product.json | ||
cat <<< "$(jq ".commit = \"863d2581ecda6849923a2118d93a088b0745d9d6\"" product.json)" > product.json | ||
``` | ||
|
||
### advanced | ||
|
||
The `commit` should correspond to what is configured in the client, which is by default the VSCode commit used to build the lib, but it can be overriden by providing `configuration.productConfiguration.commit` to the service initialization function. | ||
|
||
## Running the server | ||
|
||
From the install directory, run: | ||
|
||
```bash | ||
./bin/code-server --port 8080 --without-connection-token --accept-server-license-terms --host 0.0.0.0 | ||
``` | ||
|
||
(or `./bin/codium-server`) for VSCodium | ||
|
||
Note: it starts the service on every interfaces and without a security token just to simplify the usage, but do not use it as is in production | ||
|
||
|
||
## Using the server | ||
|
||
- Add the `remoteAgent` service override (`@codingame/monaco-vscode-remote-agent-service-override`) | ||
- Configure the url of the remote server by providing a `remoteAuthority` to the service initialization function configuration. It should only contain the authority (domain/ip and port, example: `localhost:8080`). You can also provide a `connectionToken` if the server is configured to expect it. | ||
- You can now use a remote directory as workspace by using the `vscode-remote` scheme. for instance : `vscode-remote://localhost:8080/my/project/directory` | ||
|
||
## Testing it in the demo | ||
|
||
Run the demo, then go to <http://localhost:5173/?remoteAuthority=localhost:8080> | ||
|
||
You can also go to <http://localhost:5173/?remoteAuthority=localhost:8000&remotePath=/any/path/on/your/machine> to open a directory on your machine as the current workspace | ||
|
||
## Production concerns | ||
|
||
The commit and product quality should be the same on the client and on the server to be able to connect them. It can be an issue if you have the server deployed on a cluster, and the client is upgraded progressively: it is required for the server to expose both old and new version. | ||
|
||
It can be achieved because all calls to the server are prefixed by `<quality>-<commit>`. So both servers can be started on a different port, and a reverse proxy in front of them can redirect the calls based on the path prefix. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
7b84fb7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎉 Published on https://monaco-vscode-api.netlify.app as production
🚀 Deployed on https://6606a5ec0a8a02dcd3cbf246--monaco-vscode-api.netlify.app