GoLand 2024.2 Help

System requirements for remote development

Prerequisites

Before you start developing on the remote machine, make sure you have the following:

  • Remote machine (a target for an IDE) meets the minimum recommended requirements that can be found in IDEs articles.

  • You have installed a compatible SSH server on the Linux platform.

  • The Linux platform has any recent Linux AMD64 distribution such as Ubuntu 16.04+, RHEL/Centos 7+, and so on. We recommend using machines with 2+ cores, 4GB+ of RAM, and 5GB+ of disk space.

  • You need to have the sftp subsystem enabled on the remote host. In the current implementation, we use it for the backend deployment.

Remote Development is still in development. The system requirements might change over time, we will work to support more types of systems in the future. Systems that don’t meet the requirements may work with Remote Development, yet we will not be able to support issues that might arise along the way.

Depending on the size of your project, ensure that the system to which you are connecting meets the following requirements:

Minimal requirements

  • 4 vCPUs, either x86_64 or arm64 architecture. Also, higher clock frequency is preferred to higher core count.

  • 8 GB RAM.

  • At least 500MB of free disk space even if the IDE is already installed.

  • A supported version of a common Linux distribution.

    Specifically, Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 22.10, CentOS, Debian, and RHEL are supported.

    • Ensure the user, with which you are connecting, has one of these shells set: bash, dash, fish, csh, tcsh, ksh, zsh.

    • The following utilities must be available: tar, wget (or curl), dd, chmod, test, mkdir, echo, mv, uname, command, and gzip.

    • The $HOME environment variable needs to be set correctly. The $HOME/.cache folder needs to be writable by the user with which you’re connecting.

    • We support the Alpine version 3.18. Ensure you have the following packages installed on the host beforehand: libxext, libxrender, libxtst, libxi, freetype, procps, gcompat.

      Check the following command example:

      apk add libxext libxrender libxtst libxi freetype procps gcompat

  • The IDE and the project should be on a local file system. Network block storage such as EBS is acceptable, a network file system such as NFS or SMB is not.

    Additionally, you need to have at least 8GB available.

  • OpenSSH server, version 7.9p1 or later is recommended. Other SSH servers fully implementing RFC 4254 may work too, yet are not supported. SSH port forwarding must be enabled in server configuration.

  • The server needs to have at least 50 Mbps downstream capacity from the internet.

  • The connection between client and server should have at least 20 Mbps bandwidth, and no more than 200ms latency.

  • Single tenancy within a server or container.

Recommendations

  • For larger projects, add more CPUs and RAM. The load average indication in the IDE will tell you if an upgrade would be advisable.

  • Enabling Swap is recommended. Even on cloud instances.

  • Local SSD storage.

Not supported

  • Single-board computers such as Raspberry Pi. To run your code on a Raspberry Pi, check out remote interpreters or remote debugging, and similar features.

  • Shared web hosting services. In such hosting environment, there might be numerous websites that coexist on a single server owned and operated by the hosting provider. All the websites hosted on this server are required to share its resources, such as bandwidth, memory, and computing power. These resources are distributed evenly among all the accounts on the server, which become quite limited.

    The remote development support is not possible in such case due to the following reasons:

    • In addition to the SSH port, there must be a free port on the server for the IDE backend to reside. Shared web hosting typically does not permit the occupation of additional ports.

    • There might be restrictions on running third-party software.

    • Shared web hosting imposes limitations on user CPU usage.

Last modified: 09 September 2024