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

Development

# Setup Coturn TURN Server on GCP - Developer Guide

[By Hiruna Kumara](https://meetrix.io/blogs/authors/hiruna-kumara/) • June 3, 2026 • 7 min read

Welcome to the Meetrix Coturn TURN Server developer guide for Google Cloud Platform! Coturn is an open-source TURN/STUN server that enables NAT traversal for WebRTC, VoIP, and real-time communication platforms. With the Meetrix pre-configured GCP image, you can deploy a production-ready Coturn server in minutes.

This guide walks you through finding the product on GCP Marketplace, configuring the deployment, pointing DNS, generating the SSL certificate, and testing your TURN server, which you can also do in our [WebRTC ICE tester](https://meetrix.io/features/webrtc-ice-tester/).

### Related Article

[

Meetrix Coturn - Developer Guide (AWS)

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

Meetrix.IO • Dinesh Chathuranga

![Meetrix Coturn Developer Guide AWS](https://meetrix.io/blog-images/paas-dev-guides/coturn/coturn-image.png)](https://meetrix.io/blogs/coturn-developer-guide/)

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.
-   A domain name you can manage DNS records for.

## Launch the Product

### Step 1: Find the Product

1.  Log in to your Google account.
2.  Go directly to the product page: [Coturn TURN Server on GCP Marketplace](https://console.cloud.google.com/marketplace/product/meetrix-public/coturn-turn-server)
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 following product listing page.

![Coturn TURN Server product listing on GCP Marketplace](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-01.png)

### Step 2: Launch the Product

1.  Select your GCP project from the project selector at the top.
2.  Review the product description and pricing details.
3.  Click the **GET STARTED** button.
4.  Accept the terms and conditions and click **AGREE**.

![Coturn GCP Marketplace accept terms screen](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-02.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.

![Coturn GCP free trial terms acceptance](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-05.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. Fill in the fields across the following sections:

![Coturn GCP deployment configuration form](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-03.png)

#### General

-   **Deployment name** - A unique name for this deployment.
-   **Image version** - Leave as default (`coturn-4.12.0`).
-   **Machine type** - Default `e2-small` (1 vCPU, 2 GB RAM) works for most setups. Choose a larger type for high-traffic production use (minimum 1 vCPU, 1 GB RAM).
-   **Zone** - Select the GCP zone closest to your users.

#### Boot Disk

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

#### Networking

-   **Network name** - Leave as `default` unless you have a custom VPC.
-   **External IP** - Leave as `Ephemeral`. Select `None` only if you do not need public internet access (not recommended for a TURN server).
-   **Allow SSH (TCP port 22)** - Enabled by default. Restrict the source IP range if you want to limit SSH access to specific IPs.

![Coturn GCP networking configuration](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-04.png)

#### Application Settings

-   **Domain name** - The domain for your TURN server (e.g. `yourdomain.com`). Make sure to point your DNS A record to the instance IP before or shortly after deploying.
-   **Admin email** - Used for SSL certificate registration via Let's Encrypt.
-   **TURN static auth secret** - A long random string used to generate TURN credentials via HMAC-SHA1. Keep this secret secure.
-   **TURN realm** - Typically your base domain (e.g. `yourdomain.com`).

Click **DEPLOY** and wait a few minutes for the deployment to complete.

## Point DNS to the Server

### Step 1: Get the External IP

1.  Once deployment is complete, click the VM instance resource name in the deployment details.
2.  Copy the **External IP** from the Network interfaces section.

![Coturn VM instance external IP on GCP](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-06.png)

### Step 2: Create a DNS A Record

1.  Go to your DNS provider.
2.  Add an **A record** pointing your TURN domain (e.g. `yourdomain.com`) to the copied external IP.
3.  Wait for DNS propagation before proceeding (typically a few minutes to 1 hour).

## Generate SSL Certificate

DNS must propagate first

The SSL script uses Let's Encrypt, which verifies domain ownership over HTTP. Make sure your DNS A record is pointing to the server IP and has propagated before running the certificate script.

### Step 1: SSH into the Server

1.  Once deployment is complete, go to the VM instance page in the GCP console.
2.  Click **SSH** to open a browser-based terminal and authorize access.

![SSH into Coturn VM instance on GCP](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-07.png)

### Step 2: Run the Certificate Script

The image includes a pre-configured certificate script. Run it with:

```bash
sudo bash /root/certificate_generate_standalone.sh
```

This script runs certbot using the domain name and admin email you provided during deployment. Once it completes, restart Coturn:

```bash
sudo systemctl restart coturn
```

Coturn is Now Running with SSL

Your Coturn TURN server is live. STUN is available at `stun:yourdomain.com:3478` and TURN over TLS at `turns:yourdomain.com:5349`.

## Test the TURN Server

### Generate Test Credentials

Use the following commands on the server to generate temporary TURN credentials for testing:

```bash
SECRET="your-static-auth-secret"
USER=$(( $(date +%s) + 86400 )):testuser
PASS=$(echo -n $USER | openssl dgst -binary -sha1 -hmac $SECRET | openssl base64)
echo "Username: $USER"
echo "Password: $PASS"
```

![Generating TURN credentials on the server](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-08.png)

### Test with Trickle ICE

1.  Open [Trickle ICE](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) in your browser.
2.  Add the following ICE server URLs:
    -   STUN: `stun:yourdomain.com:3478`
    -   TURN UDP: `turn:yourdomain.com:3478`
    -   TURNS TLS: `turns:yourdomain.com:5349`
3.  Enter the generated username and password.
4.  Click **Gather candidates**. You should see `relay` type candidates appear, confirming TURN is working.

![Trickle ICE showing relay candidates for Coturn](https://meetrix.io/blog-images/paas-dev-guides/coturn-gcp/coturn-gcp-09.png)

## Manage the Server

### Check Coturn Status

```bash
sudo systemctl status coturn
```

### Stop and Start Coturn

```bash
sudo systemctl stop coturn
sudo systemctl start coturn
```

### 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 Coturn deployment.
3.  Click **Delete** to remove all associated resources.

## Troubleshoot

### Check Coturn Logs

```bash
sudo tail -f /var/log/turnserver.log
```

### Check Service Status

```bash
sudo systemctl status coturn
```

### Verify Firewall Ports

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

-   Port **3478** - UDP and TCP (STUN/TURN)
-   Port **5349** - TCP (TURNS/TLS)
-   Ports **49152-65535** - UDP (relay range)

### SSL Certificate Issues

If certbot fails, ensure DNS has propagated before running certbot and that port 80 is open on the firewall for the ACME HTTP challenge.

## 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 Coturn need open on GCP?

Coturn requires ports 3478 (UDP and TCP) for STUN/TURN, port 5349 (TCP) for TURNS over TLS, and the UDP relay range 49152-65535. The Meetrix GCP image configures these firewall rules automatically during deployment.

Can I use this Coturn server with Jitsi Meet?

Yes. Point your Jitsi Meet configuration to this Coturn server by setting the TURN server URL and static-auth-secret in your Jitsi prosody or config.js settings.

How do I add or rotate the TURN authentication secret?

Edit /etc/turnserver.conf and update the static-auth-secret value, then restart Coturn with: sudo systemctl restart coturn

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

The default configuration uses an e2-small instance (1 shared vCPU, 2 GB RAM). You can select a larger instance type during deployment in the GCP Marketplace configuration form.

How do I renew the SSL certificate?

SSL certificates issued by Let's Encrypt expire every 90 days. Run: sudo certbot renew && sudo systemctl restart coturn. You can also set up a cron job to auto-renew.

## Deploy Coturn TURN Server on GCP in Minutes

Launch a production-ready Coturn TURN/STUN server on Google Cloud with a pre-configured Meetrix image.

[Get Started on GCP Marketplace](https://console.cloud.google.com/marketplace/product/meetrix-public/coturn-turn-server)

Meetrix Store

Coturn

TURN/STUN for WebRTC, no per-minute relay fees

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

Meetrix Store New

Deploy what this guide covers, pre-configured.

-    [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/)
-    [Jitsi Meet Self-hosted video calls for 50 to 500 users](https://meetrix.io/store/jitsi-meet/)
-    [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/)
-    [Listmonk Newsletters with no per-subscriber fees](https://meetrix.io/store/listmonk/)
-    [Supabase Postgres, Auth, Storage and Realtime, self-hosted](https://meetrix.io/store/supabase/)

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