> Source: https://meetrix.io/blogs/rustdesk-gcp-developer-guide/
> Markdown copy of that page. Cite the URL above, not this file.

Development

# RustDesk on GCP - Developer Guide

[By Binuka Ranatunga](https://meetrix.io/blogs/authors/binuka-ranatunga/) • July 16, 2026 • 8 min read

Welcome to the Meetrix RustDesk developer guide for Google Cloud Platform! RustDesk is an open-source, end-to-end encrypted remote desktop tool - a self-hosted alternative to TeamViewer and AnyDesk that keeps every session on infrastructure you control. With the Meetrix pre-configured GCP image, the hbbs (rendezvous) and hbbr (relay) services are installed and running the moment the VM boots.

This guide walks you through finding the product on GCP Marketplace, configuring the deployment, reserving a static IP, pointing clients at your server, and troubleshooting common issues.

### Related Article

[

Meetrix RustDesk - Developer Guide (AWS)

Step-by-step guide for deploying and configuring RustDesk on AWS using the Meetrix pre-configured AMI and CloudFormation.

Meetrix.IO

![Meetrix RustDesk Developer Guide AWS](https://meetrix.io/blog-images/paas-dev-guides/rustdesk/rustdesk-image.png)](https://meetrix.io/blogs/install-rustdesk-remote-desktop-aws/)

Prerequisites

Before you begin, make sure you have the following:

-   Basic Google Cloud Platform knowledge.
-   An active Google account with a GCP project and billing enabled.
-   The RustDesk desktop, mobile, or web client installed on the machines you want to connect from.
-   A domain name you can manage DNS records for (optional - an IP address works too).

## Launch the Product

### Step 1: Find the Product

1.  Log in to your Google account.
2.  Go directly to the product page: [RustDesk on Ubuntu: Secure Remote Desktop AMI Deployment](https://console.cloud.google.com/marketplace/product/meetrix-public/rustdesk?project=meetrix-public)
3.  You can also browse all Meetrix products at the [Meetrix Solutions Page](https://console.cloud.google.com/marketplace/browse?filter=partner:Meetrix%20Pte%20Ltd&ref=meetrix.io).
4.  You will see the product listing page. Click **Launch**.

![RustDesk on Ubuntu product listing page on GCP Marketplace](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-1.png)

### Step 2: Accept the Agreements

1.  Confirm your GCP project is selected.
2.  Tick the box under **Terms and agreements** to accept the Google Cloud Marketplace and Meetrix Pte Ltd terms of service.
3.  Click **AGREE**.

![Accepting the agreements before deploying RustDesk on GCP](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-2.png)

### Free Trial

This product includes a **5-day free trial** with up to USD 50.00 in licence fee credits. To activate it, tick **I accept the solution trial Terms and Conditions** on the launch screen before proceeding.

![Accepting the RustDesk GCP free trial terms](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-3.png)

Trial note

Infrastructure charges (VM, disk) still apply during the trial. Only the Meetrix licence fee is credited. You can cancel the trial at any time by deleting the deployment.

### Step 3: Configure the Deployment

You will see the deployment configuration form, with **Terraform** and **Command-Line deployment** tabs. Fill in the fields across the following sections:

![RustDesk GCP deployment configuration form showing deployment name, service account, zone and machine type](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-4.png)

#### General

-   **Deployment name** - A unique name for this deployment.
-   **Deployment Service Account** - Use an existing service account with the `compute.admin`, `config.agent`, and `iam.serviceAccountUser` roles, or create a new one.
-   **Zone** - Select the GCP zone closest to your users (e.g. `us-central1-a`).
-   **Machine type** - Default `e2-small` (up to 2 vCPU, 2 GB RAM) suits a small team. Choose a larger type for heavier concurrent usage.

#### Boot Disk

-   **Boot disk type** - Default `Balanced persistent disk` is recommended.
-   **Boot disk size** - Default 20 GB is sufficient.

#### Networking

-   **Network / Subnetwork** - Leave as `default` unless you have a custom VPC.
-   **External IP** - Leave as `Ephemeral` for now. You will reserve a static IP in the next section before distributing the address to clients.
-   **Allow SSH (TCP port 22)** - Enabled by default. Restrict the source IP range if you want to limit SSH access to specific IPs.

![RustDesk GCP networking configuration showing network interface and firewall settings](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-5.png)

Once the fields are filled in, follow the on-screen instructions in your chosen tab (Terraform or Command-Line deployment) to deploy, and wait a few minutes for the deployment to complete.

## Reserve a Static IP

Do this before sharing your server address

An ephemeral IP changes if the VM restarts, which breaks every client that already has the old address saved. Reserve a static external IP before you configure any clients.

1.  Open the VM instance created by the deployment and note the **External IP** under Network interfaces - it is marked `(Ephemeral)`.
2.  In the GCP console, go to **VPC network → IP addresses**, find that same address, and click **Reserve Static Address** (or promote it directly from the VM instance details page).
3.  Copy the reserved external IP - you will enter this into every RustDesk client.

![RustDesk VM instance network interfaces showing the ephemeral external IP on GCP](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-6.png)

## Point DNS to the Server (Optional)

If you prefer a hostname over a raw IP:

1.  Go to your DNS provider.
2.  Add an **A record** pointing your chosen subdomain (e.g. `remote.yourdomain.com`) to the reserved static IP.
3.  Wait for DNS propagation before proceeding (typically a few minutes to 1 hour).

## SSH into the Server

1.  Go to the VM instance page in the GCP console.
2.  Click **SSH** to open a browser-based terminal and authorize access.

![RustDesk VM instance details page with the SSH button and Logs section on GCP](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-7.png)

## Install and Configure the RustDesk Client

### Step 1: Download the Client

1.  Go to the [RustDesk releases page](https://github.com/rustdesk/rustdesk/releases).
2.  Download the installer for your operating system (Windows, macOS, Linux, Android, or iOS).

![RustDesk client download page listing installers by operating system](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-8.png)

If you need a specific build (e.g. an older architecture or package format), scroll down to the **Assets** list on the same release and pick the matching file.

![RustDesk release Assets list with individual installer files](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-9.png)

### Step 2: Open the Client

Install and open RustDesk. The **Home** tab shows your own device's **ID** and a **one-time password** - this is what other machines will use to connect to this device once it also points at your server.

![RustDesk client Home tab showing device ID and one-time password](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-10.png)

### Step 3: Retrieve the Server Key

The Meetrix image secures rendezvous traffic with a key pair, so each client needs the server's public key in addition to its IP address. SSH into the server and open the generated public key file:

```bash
sudo nano /opt/rustdesk/data/id_ed25519.pub
```

![Terminal output showing the RustDesk server's public key](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-11.png)

Copy the key value - you will paste it into the client's Network settings next.

### Step 4: Point the Client at Your Server

1.  Open the RustDesk client and go to **Settings → Network → ID/Relay server**.
2.  Enter your reserved static IP (or domain) in both **ID server** and **Relay server**.
3.  Paste the public key you copied from the server into the **Key** field.
4.  Click **OK**, then repeat this on every machine you want to connect to or from.

![RustDesk client ID/Relay server settings with ID server, Relay server and Key fields filled in](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-12.png)

### Step 5: Connect

Once both machines point at your server, enter the host's ID in the **Control Remote Desktop** field on the client and click **Connect**. You will be prompted for the one-time password shown on the host's Home tab.

![RustDesk client connected to your own self-hosted server, showing a remembered remote device](https://meetrix.io/blog-images/paas-dev-guides/rustdesk-gcp/rustdesk-gcp-13.png)

## Manage the Server

### Restart the Services

```bash
sudo docker restart <container_name>
```

### Shut Down the VM

To stop the VM without deleting it, go to **Compute Engine → VM Instances** in the GCP console, select your instance, and click **Stop**.

### Delete the Deployment

To fully remove the deployment and stop all billing:

1.  Go to **[Solution deployments](https://console.cloud.google.com/products/solutions/deployments)** in the GCP console.
2.  Find your RustDesk deployment.
3.  Click **Delete** to remove all associated resources.

## Troubleshoot

### Check the Service Logs

RustDesk runs on Docker. Find the running containers and check their logs:

```bash
sudo docker ps -a
sudo docker logs <container_name>
```

### Verify Firewall Ports

In the GCP console, go to **VPC Network → Firewall** and confirm the following rules exist for your VM:

| Service | Ports | Protocol |
| --- | --- | --- |
| hbbs (rendezvous) | 21115, 21116, 21118 | TCP |
| hbbs (rendezvous) | 21116 | UDP |
| hbbr (relay) | 21117, 21119 | TCP |

### Client Cannot Connect

If clients cannot reach the server, double-check that the ID/Relay server field on every client matches the reserved static IP exactly, that the **Key** field matches the server's public key, and that the firewall rules above are attached to the VM's network tag.

## Conclusion

The Meetrix RustDesk developer guide helps you get a self-hosted, encrypted remote desktop server running on GCP without spending hours wiring up hbbs and hbbr by hand. Reserve a static IP, point your clients at it, and you have a private alternative to per-seat remote desktop tools running on infrastructure you control.

## Technical Support

If you run into any issues, our support team is here to help. Reach out to us at [support@meetrix.io](mailto:support@meetrix.io) and we will respond within 12 hours.

## Frequently Asked Questions

What ports does RustDesk need open on GCP?

The hbbs (rendezvous) service needs TCP and UDP 21116, plus TCP 21115 and 21118, while hbbr (relay) needs TCP 21117 and 21119. The Meetrix GCP image configures these firewall rules automatically during deployment.

Why does the client ask for a Key, not just a server address?

The Meetrix image secures the rendezvous connection with a key pair. Enter the server's IP as both ID server and Relay server, then paste the public key (found at /opt/rustdesk/data/id\_ed25519.pub on the server) into the client's Key field - without it, clients cannot authenticate to your server.

Do I need a domain name to use RustDesk on GCP?

No. You can connect clients directly using the VM's external IP address. A domain is only needed if you want a stable hostname or plan to issue a TLS certificate for the web client.

Why should I reserve a static IP before launching?

An ephemeral IP changes if the VM restarts, which breaks every client that has the old address saved as its ID/Relay server. Reserving a static external IP in GCP keeps client configuration stable.

What is the default instance type and can I change it?

The default configuration uses an e2-small instance. This comfortably handles a small team; scale up to a larger machine type in the deployment form if you expect heavier concurrent usage.

How do I check that hbbs and hbbr are running?

SSH into the server and run: sudo docker ps -a. Both the hbbs and hbbr containers should show a status of Up.

Can I use this server with the RustDesk mobile and web clients?

Yes. Enter the same server IP or domain as the ID/Relay server in the RustDesk Android, iOS, or web client settings, exactly as you would in the desktop client.

## Deploy RustDesk on GCP in Minutes

Launch a production-ready, self-hosted RustDesk server on Google Cloud with a pre-configured Meetrix image.

[Get Started on GCP Marketplace](https://console.cloud.google.com/marketplace/product/meetrix-public/rustdesk?project=meetrix-public)

Meetrix Store

RustDesk

Remote desktop AMI, a TeamViewer alternative

[Deploy it](https://meetrix.io/store/rustdesk/)

Meetrix Store New

Deploy what this guide covers, pre-configured.

-    [RustDesk Remote desktop AMI, a TeamViewer alternative](https://meetrix.io/store/rustdesk/)
-    [OpenVPN Encrypted remote access, no per-user fees](https://meetrix.io/store/openvpn/)
-    [Headscale Your own Tailscale control plane](https://meetrix.io/store/headscale/)
-    [Jitsi Meet Self-hosted video calls for 50 to 500 users](https://meetrix.io/store/jitsi-meet/)
-    [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/)
-    [Plane Issues, cycles and roadmaps, a Jira alternative](https://meetrix.io/store/plane/)

[Browse all products](https://meetrix.io/store/)
