<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded" -->

---
title: Building a Globally Distributed WebRTC Service with Elixir…
description: A detailed walkthrough of building a globally distributed WebRTC live streaming service using Elixir WebRTC, STUNner (a Kubernetes-native TURN server), and...
canonical: https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building a Globally Distributed WebRTC Service with Elixir… | daily.dev
og:description: A detailed walkthrough of building a globally distributed WebRTC live streaming service using Elixir WebRTC, STUNner (a Kubernetes-native TURN server), and...
og:url: https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded
og:image: https://api.daily.dev/og/posts/tASwGadeD.png
og:image:alt: Building a Globally Distributed WebRTC Service with Elixir…
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a Globally Distributed WebRTC Service with Elixir…

**[Software Mansion](https://daily.dev/sources/swmansion)** · 22 min read · 0 upvotes · 0 comments

## Summary

A detailed walkthrough of building a globally distributed WebRTC live streaming service using Elixir WebRTC, STUNner (a Kubernetes-native TURN server), and Cilium Cluster Mesh. The setup deploys the Broadcaster application across three Kubernetes clusters in Germany, Singapore, and the US West Coast, using DNS-based geo-routing via Azure Traffic Manager to direct users to the nearest cluster. Elixir's Erlang Distribution Protocol keeps all nodes synchronized across clusters. The post covers provisioning VMs on Hetzner Cloud, installing k3s without a CNI provider, configuring Cilium Cluster Mesh for cross-cluster endpoint slice synchronization, deploying Broadcaster as a StatefulSet behind STUNner, and validating the system with stream quality benchmarks showing significantly lower RTT and fewer freezes when connecting to the nearest cluster.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://swmansion.com/blog/building-a-globally-distributed-webrtc-service-with-elixir-webrtc-stunner-and-cilium-cluster-mesh-54553bc066ad>

## Similar posts on daily.dev

- [Exploring Distributed Elixir](https://daily.dev/posts/exploring-distributed-elixir-iyxsm4dkt) · ElixirStatus · 0 upvotes · 0 comments
- [How WebRTC Scales: Signaling, NAT Traversal, and the Mesh/SFU/MCU Tradeoff](https://daily.dev/posts/how-webrtc-scales-signaling-nat-traversal-and-the-mesh-sfu-mcu-tradeoff-muxbaugy1) · freeCodeCamp · 0 upvotes · 0 comments
- [Live Streaming Test Runs with WebRTC](https://daily.dev/posts/live-streaming-test-runs-with-webrtc-ba86c8ksp) · QA Wolf · 0 upvotes · 0 comments
- [Erlang Solutions Webinar Round-Up](https://daily.dev/posts/erlang-solutions-webinar-round-up-6istivct1) · Erlang Solutions · 0 upvotes · 0 comments
- [Build an Elixir App with Cowboy](https://daily.dev/posts/build-an-elixir-app-with-cowboy-cbg2oram6) · AppSignal · 3 upvotes · 0 comments

---

Tags: [#kubernetes](https://daily.dev/tags/kubernetes), [#elixir](https://daily.dev/tags/elixir), [#distributed-systems](https://daily.dev/tags/distributed-systems), [#webrtc](https://daily.dev/tags/webrtc), [#cilium](https://daily.dev/tags/cilium)

[View this post on daily.dev](https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building a Globally Distributed WebRTC Service with Elixir…","url":"https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded"},"datePublished":"2026-08-02T07:15:25.559Z","dateModified":"2026-08-02T07:40:08.806Z","description":"A detailed walkthrough of building a globally distributed WebRTC live streaming service using Elixir WebRTC, STUNner (a Kubernetes-native TURN server), and...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2b0158a6f96c5467517b02379547354b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2b0158a6f96c5467517b02379547354b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Software Mansion","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Software Mansion","logo":"https://media.daily.dev/image/upload/s--sOx0vaVZ--/f_auto,q_auto/v1785654908/logos/swmansion?_a=BAMAMicg0","url":"https://daily.dev/sources/swmansion"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-a-globally-distributed-webrtc-service-with-elixir--taswgaded","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes,elixir,distributed-systems,webrtc,cilium","timeRequired":"PT22M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Software Mansion","item":"https://daily.dev/sources/swmansion"},{"@type":"ListItem","position":3,"name":"Building a Globally Distributed WebRTC Service with Elixir…"}]}
```

