Offline mode
IDE Services comes with specific offline mode capabilities that allow you to run the server in a network-isolated environment.
tip
Use offline mode strictly in accordance with your organization's security guidelines. Under normal circumstances, we highly recommend keeping the server connected to the internet for the best user experience and optimal functionality.
In the default configuration, IDE Services makes external network requests to the following domains:
resources.jetbrains.com to obtain Analytics configuration files
download.jetbrains.com and download-cdn.jetbrains.com for IDE downloads and Toolbox App functioning
plugins.jetbrains.com to search and download plugins
data.services.jetbrains.com and jetbrains.com to obtain information about server updates
account.jetbrains.com to verify licensing information
With offline mode enabled, IDE Services will make no external requests.
To start using IDE Services offline, there are a few essential steps to follow. First, you need to enable the offline mode functionality in a server configuration file.
Set the value of the
tbe.offline.enabled
property totrue
:tbe: offline: enabled: true
Set the value of the
tbe.tbe-ij-plugin.tbe-plugin-repository-type
property toTBE
:tbe: tbe-ij-plugin: tbe-plugin-repository-type: TBE
For more details, refer to Server configuration file.
Set the value of the
ides.config.offlineMode.enabled
property totrue
:ides: config: offlineMode: enabled: true
Set the value of the
ides.config.intellijPlugin.pluginRepositoryType
property toTBE
:ides: config: intellijPlugin: pluginRepositoryType: "TBE"
For more details, refer to Values file.
Once you've made the required changes to your server configuration file, you can start the IDE Services Server and download the IDE Services command-line tool (CLI).
In the Web UI, open the Configuration page and go to the Offline mode tab.
Click Download ide-services-cli to start the download. The IDE Services CLI tool is packed to a zip archive.
Unpack the ide-services-cli-<version> zip file to a desired directory.
Use IDE Services CLI to request and download artifacts necessary for bootstrapping IDE Services in offline mode. These artifacts, which are typically acquired by IDE Services through external network requests, include tool feed metadata (encoded in a Toolbox App-specific format), as well as IDEs, tools (including Toolbox App), and the JetBrains IDE Services plugin.
The IDE Services CLI tool offers several CLI commands that enable you to acquire all the essential resources.
IDE Services CLI provides support for the ide-services-cli init
command to download essential artifacts, generate the file and folder structure, and create mappings between the JetBrains resources and local object storage.
The downloaded artifacts are stored in the current directory under
/ide-services
/offline
/distributions
/feeds
/plugins
offline.json
where:
/distributions contains the latest distribution of the Toolbox App for various operating systems (OS).
/feeds stores the encoded tool metadata for the Toolbox App.
note
The Toolbox App validates the expiration dates of the obtained feed files. Currently, the metadata expiration date and time are set to
2024-03-26T14:44:31Z
. Before these feed files expire, make sure to regenerate your offline.json by runningide-services-cli init
./plugins includes versions of the JetBrains IDE Services plugin compatible with the latest IDE versions, starting from 2021.2.
To determine the plugin version and its compatible IDE, you can examine the names of ZIP files. For example, a file named 1.0.4917.5386-ij221.zip indicates that the JetBrains IDE Services plugin's version is
1.0.4917.5386
, and it is compatible with the IDE builds of version 2022.1 as indicated byij221
.offline.json defines mappings of JetBrains resources and object storage paths.
The ide-services-cli tool list
command lists JetBrains products, along with their available versions that you can download.
When executing the command, you can apply filters to only list versions of a particular product. The filters follow an NPM-like syntax (for more details, see the NPM documentation.)
Examples:
List all available versions of all JetBrains products:
./ide-services-cli tool list
List all build versions of IntelliJ IDEA Ultimate:
./ide-services-cli tool list IDEA-U
List all RubyMine builds that are part of version 2023.1:
./ide-services-cli tool list "RubyMine@231.*"
Options:
Option | Description |
---|---|
| Includes builds that are released as part of the Early Access Program (EAP) in the list. |
| Includes build distributions and links for downloading them in the list. |
Use the ide-services-cli tool download
command to download the desired builds of JetBrains products locally.
To download particular builds or products, use filters when executing the command. The filters follow an NPM-like syntax similarly to the ide-services-cli tool list
command (for more details, see the NPM documentation.)
For the ide-services-cli tool download
command, IDE Services CLI supports filtering by products and product versions. You can also download multiple products using the same command. The only exception is when you need to download both an EAP and stable version simultaneously.
Examples:
Download the latest build of IntelliJ IDEA Ultimate for all available OSs:
./ide-services-cli tool download IDEA-U
Download all IntelliJ IDEA Ultimate builds for all available OSs:
./ide-services-cli tool download IDEA-U --all-builds
Download all GoLand builds that are part of version 2023.1:
./ide-services-cli tool download "GoLand@231.*" --all-builds
Download the latest Rider build version that is earlier than 231.9*:
./ide-services-cli tool download "Rider@<231.9"
Download IntelliJ IDEA Ultimate version 231.9161.38 and the latest build of PyCharm Professional that is later than 2022.3:
./ide-services-cli tool download "IDEA-U@231.9161.38" "PyCharm-P@>223"
Download RubyMine version 2024.1 and the associated Code With Me JetBrains Client:
./ide-services-cli tool download "RM-241.15989.113" --jbc
Options:
Option | Description |
---|---|
| Downloads builds that are released as part of the Early Access Program (EAP). |
| Downloads all tools. |
| Downloads all IDE builds matching the specified filters. By default, IDE Services CLI downloads the latest build version only. |
| Downloads versions of the Code With Me JetBrains Client associated with the versions of tools that you configure in the filter (for more details, refer to the Code With Me guest UI overview.) |
The ide-services-cli help
command provides you with an exhaustive list of commands available in IDE Services CLI.
From this example, you will learn the sequence of commands that you need to execute to download all available builds of IntelliJ IDEA Ultimate 2023.1 and the latest available EAP build of WebStorm.
tip
This example covers the manual execution of IDE Services CLI commands. You can configure a CI solution of your choice to run these commands automatically.
Launch IDE Services CLI in the terminal.
Run initialization by executing:
ide-services-cli init
Run the following command to download all IntelliJ IDEA Ultimate builds that came out as part of the 2023.1 release:
./ide-services-cli tool download "IDEA-U@231.*" --all-builds
Run the following command to download the latest available EAP build of WebStorm for all OSs:
./ide-services-cli tool download WebStorm --eap
After executing these commands, you will have all the necessary artifacts downloaded and ready for transferring to your object storage.
In offline mode, IDE Services uses mappings to identify the paths to products that you can later enable in profiles for particular users. After running the ide-services-cli init
command in IDE Services CLI, the offline.json file appears in the
To transfer the required artifacts, upload the
When you have transferred all the necessary artifacts to your object storage, it is necessary to restart the IDE Services Server for the changes to take effect. After that, you can proceed with setting up profiles and uploading the necessary plugins.
warning
It is crucial to upload the JetBrains IDE Services plugin to your plugin repository to support the IDE Services functionality on developer machines.
By executing the commands from this example, you can quickly bootstrap IDE Services in offline mode.
Before start, install and configure AWS CLI. You can use this tool to automate binary uploads to the S3-compatible bucket. Additionally, make sure to obtain an automation token to interact with the IDE Services API via HTTP(s).
Run initialization by executing:
ide-services-cli init
Download the latest release builds of RubyMine and IntelliJ IDEA Ultimate:
./ide-services-cli tool download RubyMine IDEA-U
Transfer the downloaded binaries to the S3-bucket using AWS CLI:
aws s3 sync ./tbe s3://<your-bucket> --endpoint-url http://<url-to-IDE-Services>:9000
Upload the latest binaries of the JetBrains IDE Services plugin to the IDE Services Server:
for file in ./tbe/plugins/*; do curl -i \ -H 'Authorization: Automation <permanentToken>' \ -F file=@"$file" \ -F channel=Stable \ https://<your-server-url>/api/plugins done;
In case you use some internal binary provider as Artifactory or Nexus in your organization as an alternative to S3-compatible storage, you can configure IDE Services to recognize the paths to JetBrains products in your internal binary repository. For this purpose, you will need to reconfigure the offline.json file and update the list of mappings.
The default structure of the mappings in offline.json is as follows:
{
...
"mappings": [
{
"from": "https://download.jetbrains.com/toolbox/feeds/v1/public-feed.feed.xz.signed",
"to": "tbe-s3://feeds/public-feed.feed.xz.signed"
}
{
"from": "https://download.jetbrains.com/~urlswitch/idea/ideaIU-2023.1.3-aarch64.dmg",
"to": "tbe-s3://offline/distributions/IDEA-U/231.9161.38/mac/arm/ideaIU-2023.1.3-aarch64.dmg"
}
...
]
}
where:
from
defines the URL of a JetBrains resource that is typically accessed online.to
defines the path to that specific resource in the object storage.tbe-s3://
is a reference to the bucket in the S3-compatible storage used by IDE Services.
Upload the contents of the
/tbe directory to your storage./offline/ Open the offline.json file for editing and replace the default values of the
to
parameters with the paths to the correct location in your chosen repository. For example:Before
{"from": "https://download.jetbrains.com/~urlswitch/idea/ideaIU-2023.1.3-aarch64.dmg","to": "tbe-s3://offline/distributions/IDEA-U/231.9161.38/mac/arm/ideaIU-2023.1.3-aarch64.dmg"}After
{"from": "https://download.jetbrains.com/~urlswitch/idea/ideaIU-2023.1.3-aarch64.dmg","to": "<YOUR_STORAGE>/offline/distributions/IDEA-U/231.9161.38/mac/arm/ideaIU-2023.1.3-aarch64.dmg"}warning
Do not change the
from
parameter values to avoid malfunction.Upload the updated version of offline.json to your storage.
Restart the IDE Services Server for the changes to take effect.
Thanks for your feedback!