Skip to content

docs: add steps to pre-install JetBrains IDE backend #15962

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Apr 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
754e44b
copy and md
EdwardAngert Dec 18, 2024
10472c8
Merge remote-tracking branch 'origin/main' into 13207-preinstall-jetb…
EdwardAngert Dec 26, 2024
75875f3
jetbrains initial copy and md edit
EdwardAngert Dec 26, 2024
047ca3b
Merge remote-tracking branch 'origin/main' into 13207-preinstall-jetb…
EdwardAngert Jan 2, 2025
74a5624
make fmt
EdwardAngert Jan 2, 2025
b5e8007
move JetBrains offline steps to separate doc; update links
EdwardAngert Jan 3, 2025
8cdbecf
Merge remote-tracking branch 'origin/main' into 13207-preinstall-jetb…
EdwardAngert Jan 3, 2025
5724624
fix relative links
EdwardAngert Jan 3, 2025
e9b1e18
s/offline/airgapped
EdwardAngert Jan 3, 2025
9ead169
copy edit
EdwardAngert Jan 7, 2025
d9062a0
Merge remote-tracking branch 'origin/main' into 13207-preinstall-jetb…
EdwardAngert Jan 7, 2025
302406a
copy edit
EdwardAngert Jan 8, 2025
951efd1
add jetbrains-pre-install
EdwardAngert Jan 8, 2025
c6ac5fa
Merge branch 'main' into 13207-preinstall-jetbrains
matifali Feb 5, 2025
c9c799f
Improve JetBrains Gateway installation documentation
matifali Mar 19, 2025
440dbc0
Update JetBrains Gateway backend setup instructions
matifali Mar 19, 2025
67103b4
Merge remote-tracking branch 'origin/main' into 13207-preinstall-jetb…
EdwardAngert Mar 21, 2025
fd81c47
align with changes from main
EdwardAngert Mar 21, 2025
dca1e38
Merge branch 'main' into 13207-preinstall-jetbrains
matifali Mar 26, 2025
99c1a59
Simplify JetBrains pre-installation guide
matifali Mar 26, 2025
c7e64e4
Simplify JetBrains pre-installation guide
matifali Mar 26, 2025
7a9e5c7
Merge branch 'main' into 13207-preinstall-jetbrains
matifali Apr 7, 2025
db684a5
Merge branch 'main' into 13207-preinstall-jetbrains
EdwardAngert Apr 9, 2025
3e9dd48
Merge branch 'main' into 13207-preinstall-jetbrains
EdwardAngert Apr 11, 2025
37fdb17
move gateway and update pre-install
EdwardAngert Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions docs/admin/templates/extending-templates/jetbrains-gateway.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Pre-install JetBrains Gateway in a template

For a faster JetBrains Gateway experience, pre-install the IDEs backend in your template.

> [!NOTE]
> This guide only talks about installing the IDEs backend. For a complete guide on setting up JetBrains Gateway with client IDEs, refer to the [JetBrains Gateway air-gapped guide](../../../user-guides/workspace-access/jetbrains/jetbrains-airgapped.md).

## Install the Client Downloader

Install the JetBrains Client Downloader binary:

```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
rm jetbrains-clients-downloader-linux-x86_64-1867.tar.gz
```

## Install Gateway backend

```shell
mkdir ~/JetBrains
./jetbrains-clients-downloader-linux-x86_64-1867/bin/jetbrains-clients-downloader --products-filter <product-code> --build-filter <build-number> --platforms-filter linux-x64 --download-backends ~/JetBrains
```

For example, to install the build `243.26053.27` of IntelliJ IDEA:

```shell
./jetbrains-clients-downloader-linux-x86_64-1867/bin/jetbrains-clients-downloader --products-filter IU --build-filter 243.26053.27 --platforms-filter linux-x64 --download-backends ~/JetBrains
tar -xzvf ~/JetBrains/backends/IU/*.tar.gz -C ~/JetBrains/backends/IU
rm -rf ~/JetBrains/backends/IU/*.tar.gz
```

## Register the Gateway backend

Add the following command to your template's `startup_script`:

```shell
~/JetBrains/backends/IU/ideaIU-243.26053.27/bin/remote-dev-server.sh registerBackendLocationForGateway
```

## Configure JetBrains Gateway Module

If you are using our [jetbrains-gateway](https://registry.coder.com/modules/jetbrains-gateway) module, you can configure it by adding the following snippet to your template:

```tf
module "jetbrains_gateway" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/modules/jetbrains-gateway/coder"
version = "1.0.28"
agent_id = coder_agent.main.id
folder = "/home/coder/example"
jetbrains_ides = ["IU"]
default = "IU"
latest = false
jetbrains_ide_versions = {
"IU" = {
build_number = "243.26053.27"
version = "2024.3"
}
}
}

resource "coder_agent" "main" {
...
startup_script = <<-EOF
~/JetBrains/backends/IU/ideaIU-243.26053.27/bin/remote-dev-server.sh registerBackendLocationForGateway
EOF
}
```

## Dockerfile example

If you are using Docker based workspaces, you can add the command to your Dockerfile:

```dockerfile
FROM ubuntu

# Combine all apt operations in a single RUN command
# Install only necessary packages
# Clean up apt cache in the same layer
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
git \
golang \
sudo \
vim \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Create user in a single layer
ARG USER=coder
RUN useradd --groups sudo --no-create-home --shell /bin/bash ${USER} \
&& echo "${USER} ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/${USER} \
&& chmod 0440 /etc/sudoers.d/${USER}

USER ${USER}
WORKDIR /home/${USER}

# Install JetBrains Gateway in a single RUN command to reduce layers
# Download, extract, use, and clean up in the same layer
RUN mkdir -p ~/JetBrains \
&& wget -q https://download.jetbrains.com/idea/code-with-me/backend/jetbrains-clients-downloader-linux-x86_64-1867.tar.gz -P /tmp \
&& tar -xzf /tmp/jetbrains-clients-downloader-linux-x86_64-1867.tar.gz -C /tmp \
&& /tmp/jetbrains-clients-downloader-linux-x86_64-1867/bin/jetbrains-clients-downloader \
--products-filter IU \
--build-filter 243.26053.27 \
--platforms-filter linux-x64 \
--download-backends ~/JetBrains \
&& tar -xzf ~/JetBrains/backends/IU/*.tar.gz -C ~/JetBrains/backends/IU \
&& rm -f ~/JetBrains/backends/IU/*.tar.gz \
&& rm -rf /tmp/jetbrains-clients-downloader-linux-x86_64-1867* \
&& rm -rf /tmp/*.tar.gz
```

## Next steps

- [Pre-install the Client IDEs](../../../user-guides/workspace-access/jetbrains/jetbrains-airgapped.md#1-deploy-the-server-and-install-the-client-downloader)
2 changes: 1 addition & 1 deletion docs/changelogs/v2.1.5.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
<!-- markdown-link-check-disable -->

- Add
[JetBrains Gateway Offline Mode](https://coder.com/docs/user-guides/workspace-access/jetbrains.md#jetbrains-gateway-in-an-offline-environment)
[JetBrains Gateway Offline Mode](https://coder.com/docs/user-guides/workspace-access/jetbrains/jetbrains-airgapped.md)
config steps (#9388) (@ericpaulsen)
<!-- markdown-link-check-enable -->
- Describe
Expand Down
2 changes: 1 addition & 1 deletion docs/install/offline.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ Coder is installed.
## JetBrains IDEs

Gateway, JetBrains' remote development product that works with Coder,
[has documented offline deployment steps.](../user-guides/workspace-access/jetbrains.md#jetbrains-gateway-in-an-offline-environment)
[has documented offline deployment steps.](../user-guides/workspace-access/jetbrains/jetbrains-airgapped.md)

## Microsoft VS Code Remote - SSH

Expand Down
14 changes: 13 additions & 1 deletion docs/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,14 @@
{
"title": "JetBrains IDEs",
"description": "Use JetBrains IDEs with Gateway",
"path": "./user-guides/workspace-access/jetbrains.md"
"path": "./user-guides/workspace-access/jetbrains/index.md",
"children": [
{
"title": "JetBrains Gateway in an air-gapped environment",
"description": "Use JetBrains Gateway in an air-gapped offline environment",
"path": "./user-guides/workspace-access/jetbrains/jetbrains-airgapped.md"
}
]
},
{
"title": "Remote Desktop",
Expand Down Expand Up @@ -449,6 +456,11 @@
"description": "Add and configure Web IDEs in your templates as coder apps",
"path": "./admin/templates/extending-templates/web-ides.md"
},
{
"title": "Pre-install JetBrains Gateway",
"description": "Pre-install JetBrains Gateway in a template for faster IDE startup",
"path": "./admin/templates/extending-templates/jetbrains-gateway.md"
},
{
"title": "Docker in Workspaces",
"description": "Use Docker in your workspaces",
Expand Down
6 changes: 3 additions & 3 deletions docs/user-guides/workspace-access/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,10 @@ IDEs are supported for remote development:
- Rider
- RubyMine
- WebStorm
- [JetBrains Fleet](./jetbrains.md#jetbrains-fleet)
- [JetBrains Fleet](./jetbrains/index.md#jetbrains-fleet)

Read our [docs on JetBrains Gateway](./jetbrains.md) for more information on
connecting your JetBrains IDEs.
Read our [docs on JetBrains Gateway](./jetbrains/index.md) for more information
on connecting your JetBrains IDEs.

## code-server

Expand Down
Loading
Loading