mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
docs: add jetbrains offline mode config steps (#9388)
This commit is contained in:
@ -188,3 +188,151 @@ In networks that restrict access to the internet, you will need to leverage the
|
|||||||
JetBrains Client Installer to download and save the IDE clients locally. Please
|
JetBrains Client Installer to download and save the IDE clients locally. Please
|
||||||
see the
|
see the
|
||||||
[JetBrains documentation for more information](https://www.jetbrains.com/help/idea/fully-offline-mode.html).
|
[JetBrains documentation for more information](https://www.jetbrains.com/help/idea/fully-offline-mode.html).
|
||||||
|
|
||||||
|
### Configuration Steps
|
||||||
|
|
||||||
|
The Coder team built a POC of the JetBrains Gateway Offline Mode solution. Here
|
||||||
|
are the steps we took (and "gotchas"):
|
||||||
|
|
||||||
|
### 1. Deploy the server and install the Client Downloader
|
||||||
|
|
||||||
|
We deployed a simple Ubuntu VM and installed the JetBrains Client Downloader
|
||||||
|
binary. Note that the server must be a Linux-based distribution.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://download.jetbrains.com/idea/code-with-me/backend/jetbrains-clients-downloader-linux-x86_64-1867.tar.gz && \
|
||||||
|
tar -xzvf jetbrains-clients-downloader-linux-x86_64-1867.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Install backends and clients
|
||||||
|
|
||||||
|
JetBrains Gateway requires both a backend to be installed on the remote host
|
||||||
|
(your Coder workspace) and a client to be installed on your local machine. You
|
||||||
|
can host both on the server in this example.
|
||||||
|
|
||||||
|
See here for the full
|
||||||
|
[JetBrains product list and builds](https://data.services.jetbrains.com/products).
|
||||||
|
Below is the full list of supported `--platforms-filter` values:
|
||||||
|
|
||||||
|
```console
|
||||||
|
windows-x64, windows-aarch64, linux-x64, linux-aarch64, osx-x64, osx-aarch64
|
||||||
|
```
|
||||||
|
|
||||||
|
To install both backends and clients, you will need to run two commands.
|
||||||
|
|
||||||
|
**Backends**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./jetbrains-clients-downloader-linux-x86_64-1867/bin4/jetbrains-clients-downloader --products-filter <product-code> --build-filter <build-number> --platforms-filter linux-x64,windows-x64,osx-x64 --download-backends ~/backends
|
||||||
|
```
|
||||||
|
|
||||||
|
**Clients**
|
||||||
|
|
||||||
|
This is the same command as above, with the `--download-backends` flag removed.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./jetbrains-clients-downloader-linux-x86_64-1867/bin4/jetbrains-clients-downloader --products-filter <product-code> --build-filter <build-number> --platforms-filter linux-x64,windows-x64,osx-x64 ~/clients
|
||||||
|
```
|
||||||
|
|
||||||
|
We now have both clients and backends installed.
|
||||||
|
|
||||||
|
### 3. Install a web server
|
||||||
|
|
||||||
|
You will need to run a web server in order to serve requests to the backend and
|
||||||
|
client files. We installed `nginx` and setup an FQDN and routed all requests to
|
||||||
|
`/`. See below:
|
||||||
|
|
||||||
|
```console
|
||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server;
|
||||||
|
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
index index.html index.htm index.nginx-debian.html;
|
||||||
|
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /home/ubuntu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, configure your DNS entry to point to the IP address of the server. For the
|
||||||
|
purposes of the POC, we did not configure TLS, although that is a supported
|
||||||
|
option.
|
||||||
|
|
||||||
|
### 4. Add Client Files
|
||||||
|
|
||||||
|
You will need to add the following files on your local machine in order for
|
||||||
|
Gateway to pull the backend and client from the server.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cat productsInfoUrl # a path to products.json that was generated by the backend's downloader (it could be http://, https://, or file://)
|
||||||
|
|
||||||
|
https://internal.site/backends/<PRODUCT_CODE>/products.json
|
||||||
|
|
||||||
|
$ cat clientDownloadUrl # a path for clients that you got from the clients' downloader (it could be http://, https://, or file://)
|
||||||
|
|
||||||
|
https://internal.site/clients/
|
||||||
|
|
||||||
|
$ cat jreDownloadUrl # a path for JBR that you got from the clients' downloader (it could be http://, https://, or file://)
|
||||||
|
|
||||||
|
https://internal.site/jre/
|
||||||
|
|
||||||
|
$ cat pgpPublicKeyUrl # a URL to the KEYS file that was downloaded with the clients builds.
|
||||||
|
|
||||||
|
https://internal.site/KEYS
|
||||||
|
```
|
||||||
|
|
||||||
|
The location of these files will depend upon your local operating system:
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
|
||||||
|
```console
|
||||||
|
# User-specific settings
|
||||||
|
/Users/UserName/Library/Application Support/JetBrains/RemoteDev
|
||||||
|
# System-wide settings
|
||||||
|
/Library/Application Support/JetBrains/RemoteDev/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
|
||||||
|
```console
|
||||||
|
# User-specific settings
|
||||||
|
$HOME/.config/JetBrains/RemoteDev
|
||||||
|
# System-wide settings
|
||||||
|
/etc/xdg/JetBrains/RemoteDev/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows**
|
||||||
|
|
||||||
|
```console
|
||||||
|
# User-specific settings
|
||||||
|
HKEY_CURRENT_USER registry
|
||||||
|
# System-wide settings
|
||||||
|
HKEY_LOCAL_MACHINE registry
|
||||||
|
```
|
||||||
|
|
||||||
|
Additionally, create a string for each setting with its appropriate value in
|
||||||
|
`SOFTWARE\JetBrains\RemoteDev`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 5. Setup SSH connection with JetBrains Gateway
|
||||||
|
|
||||||
|
With the server now configured, you can now configure your local machine to use
|
||||||
|
Gateway. Here is the documentation to
|
||||||
|
[setup SSH config via the Coder CLI](../ides.md#ssh-configuration). On the
|
||||||
|
Gateway side, follow our guide here until step 16.
|
||||||
|
|
||||||
|
Instead of downloading from jetbrains.com, we will point Gateway to our server
|
||||||
|
endpoint. Select `Installation options...` and select `Use download link`. Note
|
||||||
|
that the URL must explicitly reference the archive file:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Click `Download IDE and Connect`. Gateway should now download the backend and
|
||||||
|
clients from the server into your remote workspace and local machine,
|
||||||
|
respectively.
|
||||||
|
BIN
docs/images/gateway/jetbrains-offline-windows.png
Normal file
BIN
docs/images/gateway/jetbrains-offline-windows.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/gateway/offline-gateway.png
Normal file
BIN
docs/images/gateway/offline-gateway.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 126 KiB |
Reference in New Issue
Block a user