diff --git a/README.md b/README.md index f0c939bee6b9d..8c6682b0be76c 100644 --- a/README.md +++ b/README.md @@ -109,9 +109,10 @@ We are always working on new integrations. Please feel free to open an issue and ### Official - [**VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=coder.coder-remote): Open any Coder workspace in VS Code with a single click -- [**JetBrains Gateway Extension**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click +- [**JetBrains Toolbox Plugin**](https://plugins.jetbrains.com/plugin/26968-coder): Open any Coder workspace from JetBrains Toolbox with a single click +- [**JetBrains Gateway Plugin**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click - [**Dev Container Builder**](https://github.com/coder/envbuilder): Build development environments using `devcontainer.json` on Docker, Kubernetes, and OpenShift -- [**Module Registry**](https://registry.coder.com): Extend development environments with common use-cases +- [**Coder Registry**](https://registry.coder.com): Build and extend development environments with common use-cases - [**Kubernetes Log Stream**](https://github.com/coder/coder-logstream-kube): Stream Kubernetes Pod events to the Coder startup logs - [**Self-Hosted VS Code Extension Marketplace**](https://github.com/coder/code-marketplace): A private extension marketplace that works in restricted or airgapped networks integrating with [code-server](https://github.com/coder/code-server). - [**Setup Coder**](https://github.com/marketplace/actions/setup-coder): An action to setup coder CLI in GitHub workflows. diff --git a/docs/user-guides/workspace-access/jetbrains/jetbrains-airgapped.md b/docs/admin/templates/extending-templates/jetbrains-airgapped.md similarity index 96% rename from docs/user-guides/workspace-access/jetbrains/jetbrains-airgapped.md rename to docs/admin/templates/extending-templates/jetbrains-airgapped.md index 197cce2b5fa33..0650e05e12eb6 100644 --- a/docs/user-guides/workspace-access/jetbrains/jetbrains-airgapped.md +++ b/docs/admin/templates/extending-templates/jetbrains-airgapped.md @@ -1,4 +1,4 @@ -# JetBrains Gateway in an air-gapped environment +# JetBrains IDEs in an air-gapped environment 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 @@ -161,4 +161,4 @@ respectively. ## Next steps -- [Pre-install the JetBrains IDEs backend in your workspace](../../../admin/templates/extending-templates/jetbrains-gateway.md) +- [Pre-install the JetBrains IDEs backend in your workspace](./jetbrains-preinstall.md) diff --git a/docs/admin/templates/extending-templates/jetbrains-gateway.md b/docs/admin/templates/extending-templates/jetbrains-gateway.md deleted file mode 100644 index 33db219bcac9f..0000000000000 --- a/docs/admin/templates/extending-templates/jetbrains-gateway.md +++ /dev/null @@ -1,119 +0,0 @@ -# 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 --build-filter --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) diff --git a/docs/user-guides/workspace-access/jetbrains/jetbrains-pre-install.md b/docs/admin/templates/extending-templates/jetbrains-preinstall.md similarity index 50% rename from docs/user-guides/workspace-access/jetbrains/jetbrains-pre-install.md rename to docs/admin/templates/extending-templates/jetbrains-preinstall.md index 862aee9c66fdd..cfc43e0d4f2b0 100644 --- a/docs/user-guides/workspace-access/jetbrains/jetbrains-pre-install.md +++ b/docs/admin/templates/extending-templates/jetbrains-preinstall.md @@ -1,6 +1,6 @@ -# Pre-install JetBrains Gateway in a template +# Pre-install JetBrains IDEs in your template -For a faster JetBrains Gateway experience, pre-install the IDEs backend in your template. +For a faster first time connection with JetBrains IDEs, 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](./jetbrains-airgapped.md). @@ -35,18 +35,18 @@ rm -rf ~/JetBrains/backends/IU/*.tar.gz Add the following command to your template's `startup_script`: ```shell -~/JetBrains/backends/IU/ideaIU-243.26053.27/bin/remote-dev-server.sh registerBackendLocationForGateway +~/JetBrains/*/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: +If you are using our [jetbrains-gateway](https://registry.coder.com/modules/coder/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" + version = "1.0.29" agent_id = coder_agent.main.id folder = "/home/coder/example" jetbrains_ides = ["IU"] @@ -54,8 +54,8 @@ module "jetbrains_gateway" { latest = false jetbrains_ide_versions = { "IU" = { - build_number = "243.26053.27" - version = "2024.3" + build_number = "251.25410.129" + version = "2025.1" } } } @@ -63,7 +63,7 @@ module "jetbrains_gateway" { resource "coder_agent" "main" { ... startup_script = <<-EOF - ~/JetBrains/backends/IU/ideaIU-243.26053.27/bin/remote-dev-server.sh registerBackendLocationForGateway + ~/JetBrains/*/bin/remote-dev-server.sh registerBackendLocationForGateway EOF } ``` @@ -73,47 +73,23 @@ resource "coder_agent" "main" { 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 +FROM codercom/enterprise-base:ubuntu + +# JetBrains IDE installation (configurable) +ARG IDE_CODE=IU +ARG IDE_VERSION=2025.1 + +# Fetch and install IDE dynamically 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 + && IDE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=${IDE_CODE}&majorVersion=${IDE_VERSION}&latest=true" | jq -r ".${IDE_CODE}[0].downloads.linux.link") \ + && IDE_NAME=$(curl -s "https://data.services.jetbrains.com/products/releases?code=${IDE_CODE}&majorVersion=${IDE_VERSION}&latest=true" | jq -r ".${IDE_CODE}[0].name") \ + && echo "Installing ${IDE_NAME}..." \ + && wget -q ${IDE_URL} -P /tmp \ + && tar -xzf /tmp/$(basename ${IDE_URL}) -C ~/JetBrains \ + && rm -f /tmp/$(basename ${IDE_URL}) \ + && echo "${IDE_NAME} installed successfully" ``` ## Next steps -- [Pre install the Client IDEs](./jetbrains-airgapped.md#1-deploy-the-server-and-install-the-client-downloader) +- [Pre-install the Client IDEs](./jetbrains-airgapped.md#1-deploy-the-server-and-install-the-client-downloader) diff --git a/docs/install/offline.md b/docs/install/offline.md index 56fd293f0d974..289780526f76a 100644 --- a/docs/install/offline.md +++ b/docs/install/offline.md @@ -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/jetbrains-airgapped.md) +[has documented offline deployment steps.](../admin/templates/extending-templates/jetbrains-airgapped.md) ## Microsoft VS Code Remote - SSH diff --git a/docs/manifest.json b/docs/manifest.json index a7a45bb489563..b113a48b6cb15 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -136,18 +136,24 @@ }, { "title": "JetBrains IDEs", - "description": "Use JetBrains IDEs with Gateway", + "description": "Use JetBrains IDEs with Coder", "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": "JetBrains Fleet", + "description": "Connect JetBrains Fleet to a Coder workspace", + "path": "./user-guides/workspace-access/jetbrains/fleet.md" + }, + { + "title": "JetBrains Gateway", + "description": "Use JetBrains Gateway to connect to Coder workspaces", + "path": "./user-guides/workspace-access/jetbrains/gateway.md" }, { "title": "JetBrains Toolbox", - "description": "Access Coder workspaces through JetBrains Toolbox", - "path": "./user-guides/workspace-access/jetbrains/jetbrains-toolbox.md" + "description": "Access Coder workspaces from JetBrains Toolbox", + "path": "./user-guides/workspace-access/jetbrains/toolbox.md", + "state": ["beta"] } ] }, @@ -497,9 +503,14 @@ "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": "Pre-install JetBrains IDEs", + "description": "Pre-install JetBrains IDEs in a template for faster IDE startup", + "path": "./admin/templates/extending-templates/jetbrains-preinstall.md" + }, + { + "title": "JetBrains IDEs in Air-Gapped Deployments", + "description": "Configure JetBrains IDEs for air-gapped deployments", + "path": "./admin/templates/extending-templates/jetbrains-airgapped.md" }, { "title": "Docker in Workspaces", @@ -920,6 +931,16 @@ "description": "Learn how to use NGINX as a reverse proxy", "path": "./tutorials/reverse-proxy-nginx.md" }, + { + "title": "Pre-install JetBrains IDEs in Workspaces", + "description": "Pre-install JetBrains IDEs in workspaces", + "path": "./admin/templates/extending-templates/jetbrains-preinstall.md" + }, + { + "title": "Use JetBrains IDEs in Air-Gapped Deployments", + "description": "Configure JetBrains IDEs for air-gapped deployments", + "path": "./admin/templates/extending-templates/jetbrains-airgapped.md" + }, { "title": "FAQs", "description": "Miscellaneous FAQs from our community", diff --git a/docs/user-guides/workspace-access/index.md b/docs/user-guides/workspace-access/index.md index ed7d152486bf1..76c1c77120487 100644 --- a/docs/user-guides/workspace-access/index.md +++ b/docs/user-guides/workspace-access/index.md @@ -68,7 +68,7 @@ successful, you'll see the following message: ```console You should now be able to ssh into your workspace. For example, try running: - + $ ssh coder. ``` @@ -110,9 +110,9 @@ IDEs are supported for remote development: - Rider - RubyMine - WebStorm -- [JetBrains Fleet](./jetbrains/index.md#jetbrains-fleet) +- [JetBrains Fleet](./jetbrains/fleet.md) -Read our [docs on JetBrains Gateway](./jetbrains/index.md) for more information +Read our [docs on JetBrains](./jetbrains/index.md) for more information on connecting your JetBrains IDEs. ## code-server diff --git a/docs/user-guides/workspace-access/jetbrains/fleet.md b/docs/user-guides/workspace-access/jetbrains/fleet.md new file mode 100644 index 0000000000000..c995cdd235375 --- /dev/null +++ b/docs/user-guides/workspace-access/jetbrains/fleet.md @@ -0,0 +1,26 @@ +# JetBrains Fleet + +JetBrains Fleet is a code editor and lightweight IDE designed to support various +programming languages and development environments. + +[See JetBrains's website](https://www.jetbrains.com/fleet/) to learn more about Fleet. + +To connect Fleet to a Coder workspace: + +1. [Install Fleet](https://www.jetbrains.com/fleet/download) + +1. Install Coder CLI + + ```shell + curl -L https://coder.com/install.sh | sh + ``` + +1. Login and configure Coder SSH. + + ```shell + coder login coder.example.com + coder config-ssh + ``` + +1. Connect via SSH with the Host set to `coder.workspace-name` + ![Fleet Connect to Coder](../../../images/fleet/ssh-connect-to-coder.png) diff --git a/docs/user-guides/workspace-access/jetbrains/gateway.md b/docs/user-guides/workspace-access/jetbrains/gateway.md new file mode 100644 index 0000000000000..09c54a10e854f --- /dev/null +++ b/docs/user-guides/workspace-access/jetbrains/gateway.md @@ -0,0 +1,192 @@ +## JetBrains Gateway + +JetBrains Gateway is a compact desktop app that allows you to work remotely with +a JetBrains IDE without downloading one. Visit the +[JetBrains Gateway website](https://www.jetbrains.com/remote-development/gateway/) +to learn more about Gateway. + +Gateway can connect to a Coder workspace using Coder's Gateway plugin or through a +manually configured SSH connection. + +### How to use the plugin + +> If you experience problems, please +> [create a GitHub issue](https://github.com/coder/coder/issues) or share in +> [our Discord channel](https://discord.gg/coder). + +1. [Install Gateway](https://www.jetbrains.com/help/idea/jetbrains-gateway.html) + and open the application. +1. Under **Install More Providers**, find the Coder icon and click **Install** + to install the Coder plugin. +1. After Gateway installs the plugin, it will appear in the **Run the IDE + Remotely** section. + + Click **Connect to Coder** to launch the plugin: + + ![Gateway Connect to Coder](../../../images/gateway/plugin-connect-to-coder.png) + +1. Enter your Coder deployment's + [Access Url](../../../admin/setup/index.md#access-url) and click **Connect**. + + Gateway opens your Coder deployment's `cli-auth` page with a session token. + Click the copy button, paste the session token in the Gateway **Session + Token** window, then click **OK**: + + ![Gateway Session Token](../../../images/gateway/plugin-session-token.png) + +1. To create a new workspace: + + Click the + icon to open a browser and go to the templates page in + your Coder deployment to create a workspace. + +1. If a workspace already exists but is stopped, select the workspace from the + list, then click the green arrow to start the workspace. + +1. When the workspace status is **Running**, click **Select IDE and Project**: + + ![Gateway IDE List](../../../images/gateway/plugin-select-ide.png) + +1. Select the JetBrains IDE for your project and the project directory then + click **Start IDE and connect**: + + ![Gateway Select IDE](../../../images/gateway/plugin-ide-list.png) + + Gateway connects using the IDE you selected: + + ![Gateway IDE Opened](../../../images/gateway/gateway-intellij-opened.png) + + The JetBrains IDE is remotely installed into `~/.cache/JetBrains/RemoteDev/dist`. + +### Update a Coder plugin version + +1. Click the gear icon at the bottom left of the Gateway home screen, then + **Settings**. + +1. In the **Marketplace** tab within Plugins, enter Coder and if a newer plugin + release is available, click **Update** then **OK**: + + ![Gateway Settings and Marketplace](../../../images/gateway/plugin-settings-marketplace.png) + +### Configuring the Gateway plugin to use internal certificates + +When you attempt to connect to a Coder deployment that uses internally signed +certificates, you might receive the following error in Gateway: + +```console +Failed to configure connection to https://coder.internal.enterprise/: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target +``` + +To resolve this issue, you will need to add Coder's certificate to the Java +trust store present on your local machine as well as to the Coder plugin settings. + +1. Add the certificate to the Java trust store: + +
+ + #### Linux + + ```none + /jbr/lib/security/cacerts + ``` + + Use the `keytool` utility that ships with Java: + + ```shell + keytool -import -alias coder -file -keystore /path/to/trust/store + ``` + + #### macOS + + ```none + /jbr/lib/security/cacerts + /Library/Application Support/JetBrains/Toolbox/apps/JetBrainsGateway/ch-0//JetBrains Gateway.app/Contents/jbr/Contents/Home/lib/security/cacerts # Path for Toolbox installation + ``` + + Use the `keytool` included in the JetBrains Gateway installation: + + ```shell + keytool -import -alias coder -file cacert.pem -keystore /Applications/JetBrains\ Gateway.app/Contents/jbr/Contents/Home/lib/security/cacerts + ``` + + #### Windows + + ```none + C:\Program Files (x86)\\jre\lib\security\cacerts\%USERPROFILE%\AppData\Local\JetBrains\Toolbox\bin\jre\lib\security\cacerts # Path for Toolbox installation + ``` + + Use the `keytool` included in the JetBrains Gateway installation: + + ```powershell + & 'C:\Program Files\JetBrains\JetBrains Gateway /jbr/bin/keytool.exe' 'C:\Program Files\JetBrains\JetBrains Gateway /jre/lib/security/cacerts' -import -alias coder -file + + # command for Toolbox installation + & '%USERPROFILE%\AppData\Local\JetBrains\Toolbox\apps\Gateway\ch-0\\jbr\bin\keytool.exe' '%USERPROFILE%\AppData\Local\JetBrains\Toolbox\bin\jre\lib\security\cacerts' -import -alias coder -file + ``` + +
+ +1. In JetBrains, go to **Settings** > **Tools** > **Coder**. + +1. Paste the path to the certificate in **CA Path**. + +## Manually Configuring A JetBrains Gateway Connection + +This is in lieu of using Coder's Gateway plugin which automatically performs these steps. + +1. [Install Gateway](https://www.jetbrains.com/help/idea/jetbrains-gateway.html). + +1. [Configure the `coder` CLI](../index.md#configure-ssh). + +1. Open Gateway, make sure **SSH** is selected under **Remote Development**. + +1. Click **New Connection**: + + ![Gateway Home](../../../images/gateway/gateway-home.png) + +1. In the resulting dialog, click the gear icon to the right of **Connection**: + + ![Gateway New Connection](../../../images/gateway/gateway-new-connection.png) + +1. Click + to add a new SSH connection: + + ![Gateway Add Connection](../../../images/gateway/gateway-add-ssh-configuration.png) + +1. For the Host, enter `coder.` + +1. For the Port, enter `22` (this is ignored by Coder) + +1. For the Username, enter your workspace username. + +1. For the Authentication Type, select **OpenSSH config and authentication + agent**. + +1. Make sure the checkbox for **Parse config file ~/.ssh/config** is checked. + +1. Click **Test Connection** to validate these settings. + +1. Click **OK**: + + ![Gateway SSH Configuration](../../../images/gateway/gateway-create-ssh-configuration.png) + +1. Select the connection you just added: + + ![Gateway Welcome](../../../images/gateway/gateway-welcome.png) + +1. Click **Check Connection and Continue**: + + ![Gateway Continue](../../../images/gateway/gateway-continue.png) + +1. Select the JetBrains IDE for your project and the project directory. SSH into + your server to create a directory or check out code if you haven't already. + + ![Gateway Choose IDE](../../../images/gateway/gateway-choose-ide.png) + + The JetBrains IDE is remotely installed into `~/.cache/JetBrains/RemoteDev/dist` + +1. Click **Download and Start IDE** to connect. + + ![Gateway IDE Opened](../../../images/gateway/gateway-intellij-opened.png) + +## Using an existing JetBrains installation in the workspace + +You can ask your template administrator to [pre-install the JetBrains IDEs backend](../../../admin/templates/extending-templates/jetbrains-preinstall.md) in a template to make JetBrains IDE start faster on first connection. diff --git a/docs/user-guides/workspace-access/jetbrains/index.md b/docs/user-guides/workspace-access/jetbrains/index.md index 66de625866e1b..1c42273b42145 100644 --- a/docs/user-guides/workspace-access/jetbrains/index.md +++ b/docs/user-guides/workspace-access/jetbrains/index.md @@ -1,7 +1,6 @@ # JetBrains IDEs -Coder supports JetBrains IDEs using -[Gateway](https://www.jetbrains.com/remote-development/gateway/). The following +Coder supports JetBrains IDEs using [Toolbox](https://www.jetbrains.com/toolbox/) and [Gateway](https://www.jetbrains.com/remote-development/gateway/). The following IDEs are supported for remote development: - IntelliJ IDEA @@ -13,238 +12,13 @@ IDEs are supported for remote development: - WebStorm - PhpStorm - RustRover -- [JetBrains Fleet](#jetbrains-fleet) +- [JetBrains Fleet](./fleet.md) -## JetBrains Gateway +> [!IMPORTANT] +> Remote development only works with paid versions of JetBrains IDEs. -JetBrains Gateway is a compact desktop app that allows you to work remotely with -a JetBrains IDE without downloading one. Visit the -[JetBrains Gateway website](https://www.jetbrains.com/remote-development/gateway/) -to learn more about Gateway. - -Gateway can connect to a Coder workspace using Coder's Gateway plugin or through a -manually configured SSH connection. - -You can [pre-install the JetBrains Gateway backend](../../../admin/templates/extending-templates/jetbrains-gateway.md) in a template to help JetBrains load faster in workspaces. - -### How to use the plugin - -> If you experience problems, please -> [create a GitHub issue](https://github.com/coder/coder/issues) or share in -> [our Discord channel](https://discord.gg/coder). - -1. [Install Gateway](https://www.jetbrains.com/help/idea/jetbrains-gateway.html) - and open the application. -1. Under **Install More Providers**, find the Coder icon and click **Install** - to install the Coder plugin. -1. After Gateway installs the plugin, it will appear in the **Run the IDE - Remotely** section. - - Click **Connect to Coder** to launch the plugin: - - ![Gateway Connect to Coder](../../../images/gateway/plugin-connect-to-coder.png) - -1. Enter your Coder deployment's - [Access Url](../../../admin/setup/index.md#access-url) and click **Connect**. - - Gateway opens your Coder deployment's `cli-auth` page with a session token. - Click the copy button, paste the session token in the Gateway **Session - Token** window, then click **OK**: - - ![Gateway Session Token](../../../images/gateway/plugin-session-token.png) - -1. To create a new workspace: - - Click the + icon to open a browser and go to the templates page in - your Coder deployment to create a workspace. - -1. If a workspace already exists but is stopped, select the workspace from the - list, then click the green arrow to start the workspace. - -1. When the workspace status is **Running**, click **Select IDE and Project**: - - ![Gateway IDE List](../../../images/gateway/plugin-select-ide.png) - -1. Select the JetBrains IDE for your project and the project directory then - click **Start IDE and connect**: - - ![Gateway Select IDE](../../../images/gateway/plugin-ide-list.png) - - Gateway connects using the IDE you selected: - - ![Gateway IDE Opened](../../../images/gateway/gateway-intellij-opened.png) - - The JetBrains IDE is remotely installed into `~/.cache/JetBrains/RemoteDev/dist`. - -### Update a Coder plugin version - -1. Click the gear icon at the bottom left of the Gateway home screen, then - **Settings**. - -1. In the **Marketplace** tab within Plugins, enter Coder and if a newer plugin - release is available, click **Update** then **OK**: - - ![Gateway Settings and Marketplace](../../../images/gateway/plugin-settings-marketplace.png) - -### Configuring the Gateway plugin to use internal certificates - -When you attempt to connect to a Coder deployment that uses internally signed -certificates, you might receive the following error in Gateway: - -```console -Failed to configure connection to https://coder.internal.enterprise/: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -``` - -To resolve this issue, you will need to add Coder's certificate to the Java -trust store present on your local machine as well as to the Coder plugin settings. - -1. Add the certificate to the Java trust store: - -
- - #### Linux - - ```none - /jbr/lib/security/cacerts - ``` - - Use the `keytool` utility that ships with Java: - - ```shell - keytool -import -alias coder -file -keystore /path/to/trust/store - ``` - - #### macOS - - ```none - /jbr/lib/security/cacerts - /Library/Application Support/JetBrains/Toolbox/apps/JetBrainsGateway/ch-0//JetBrains Gateway.app/Contents/jbr/Contents/Home/lib/security/cacerts # Path for Toolbox installation - ``` - - Use the `keytool` included in the JetBrains Gateway installation: - - ```shell - keytool -import -alias coder -file cacert.pem -keystore /Applications/JetBrains\ Gateway.app/Contents/jbr/Contents/Home/lib/security/cacerts - ``` - - #### Windows - - ```none - C:\Program Files (x86)\\jre\lib\security\cacerts\%USERPROFILE%\AppData\Local\JetBrains\Toolbox\bin\jre\lib\security\cacerts # Path for Toolbox installation - ``` - - Use the `keytool` included in the JetBrains Gateway installation: - - ```powershell - & 'C:\Program Files\JetBrains\JetBrains Gateway /jbr/bin/keytool.exe' 'C:\Program Files\JetBrains\JetBrains Gateway /jre/lib/security/cacerts' -import -alias coder -file - - # command for Toolbox installation - & '%USERPROFILE%\AppData\Local\JetBrains\Toolbox\apps\Gateway\ch-0\\jbr\bin\keytool.exe' '%USERPROFILE%\AppData\Local\JetBrains\Toolbox\bin\jre\lib\security\cacerts' -import -alias coder -file - ``` - -
- -1. In JetBrains, go to **Settings** > **Tools** > **Coder**. - -1. Paste the path to the certificate in **CA Path**. - -## Manually Configuring A JetBrains Gateway Connection - -This is in lieu of using Coder's Gateway plugin which automatically performs these steps. - -1. [Install Gateway](https://www.jetbrains.com/help/idea/jetbrains-gateway.html). - -1. [Configure the `coder` CLI](../../../user-guides/workspace-access/index.md#configure-ssh). - -1. Open Gateway, make sure **SSH** is selected under **Remote Development**. - -1. Click **New Connection**: - - ![Gateway Home](../../../images/gateway/gateway-home.png) - -1. In the resulting dialog, click the gear icon to the right of **Connection**: - - ![Gateway New Connection](../../../images/gateway/gateway-new-connection.png) - -1. Click + to add a new SSH connection: - - ![Gateway Add Connection](../../../images/gateway/gateway-add-ssh-configuration.png) - -1. For the Host, enter `coder.` - -1. For the Port, enter `22` (this is ignored by Coder) - -1. For the Username, enter your workspace username. - -1. For the Authentication Type, select **OpenSSH config and authentication - agent**. - -1. Make sure the checkbox for **Parse config file ~/.ssh/config** is checked. - -1. Click **Test Connection** to validate these settings. - -1. Click **OK**: - - ![Gateway SSH Configuration](../../../images/gateway/gateway-create-ssh-configuration.png) - -1. Select the connection you just added: - - ![Gateway Welcome](../../../images/gateway/gateway-welcome.png) - -1. Click **Check Connection and Continue**: - - ![Gateway Continue](../../../images/gateway/gateway-continue.png) - -1. Select the JetBrains IDE for your project and the project directory. SSH into - your server to create a directory or check out code if you haven't already. - - ![Gateway Choose IDE](../../../images/gateway/gateway-choose-ide.png) - - The JetBrains IDE is remotely installed into `~/.cache/JetBrains/RemoteDev/dist` - -1. Click **Download and Start IDE** to connect. - - ![Gateway IDE Opened](../../../images/gateway/gateway-intellij-opened.png) - -## Using an existing JetBrains installation in the workspace - -For JetBrains IDEs, you can use an existing installation in the workspace. -Please ask your administrator to install the JetBrains Gateway backend in the workspace by following the [pre-install guide](../../../admin/templates/extending-templates/jetbrains-gateway.md). - -> [!NOTE] -> Gateway only works with paid versions of JetBrains IDEs so the script will not -> be located in the `bin` directory of JetBrains Community editions. - -[Here is the JetBrains article](https://www.jetbrains.com/help/idea/remote-development-troubleshooting.html#setup:~:text=Can%20I%20point%20Remote%20Development%20to%20an%20existing%20IDE%20on%20my%20remote%20server%3F%20Is%20it%20possible%20to%20install%20IDE%20manually%3F) -explaining this IDE specification. - -## JetBrains Fleet - -JetBrains Fleet is a code editor and lightweight IDE designed to support various -programming languages and development environments. - -[See JetBrains's website](https://www.jetbrains.com/fleet/) to learn more about Fleet. - -To connect Fleet to a Coder workspace: - -1. [Install Fleet](https://www.jetbrains.com/fleet/download) - -1. Install Coder CLI - - ```shell - curl -L https://coder.com/install.sh | sh - ``` - -1. Login and configure Coder SSH. - - ```shell - coder login coder.example.com - coder config-ssh - ``` - -1. Connect via SSH with the Host set to `coder.workspace-name` - ![Fleet Connect to Coder](../../../images/fleet/ssh-connect-to-coder.png) + If you experience any issues, please -[create a GitHub issue](https://github.com/coder/coder/issues) or share in +[create a GitHub issue](https://github.com/coder/coder/issues) or ask in [our Discord channel](https://discord.gg/coder). diff --git a/docs/user-guides/workspace-access/jetbrains/jetbrains-toolbox.md b/docs/user-guides/workspace-access/jetbrains/toolbox.md similarity index 93% rename from docs/user-guides/workspace-access/jetbrains/jetbrains-toolbox.md rename to docs/user-guides/workspace-access/jetbrains/toolbox.md index b2b558d9b52b4..91a1138946154 100644 --- a/docs/user-guides/workspace-access/jetbrains/jetbrains-toolbox.md +++ b/docs/user-guides/workspace-access/jetbrains/toolbox.md @@ -1,4 +1,4 @@ -# JetBrains Toolbox Integration +# JetBrains Toolbox Integration (beta) JetBrains Toolbox helps you manage JetBrains products and includes remote development capabilities for connecting to Coder workspaces. @@ -38,7 +38,7 @@ For more details, see the [coder-jetbrains-toolbox repository](https://github.co ## Configure internal certificates -To connect to a Coder deployment that uses internal certificates, configure the certificates directly in JetBrains Toolbox: +To connect to a Coder deployment that uses internal certificates, configure the certificates directly in the Coder plugin settings in JetBrains Toolbox: 1. Click the settings icon (⚙) in the lower left corner of JetBrains Toolbox. 1. Select **Settings**. diff --git a/site/src/modules/resources/SSHButton/SSHButton.tsx b/site/src/modules/resources/SSHButton/SSHButton.tsx index b1e5163207167..5b21ff079fe13 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.tsx @@ -73,7 +73,7 @@ export const AgentSSHButton: FC = ({ - Connect via JetBrains Gateway + Connect via JetBrains IDEs SSH configuration