> ## Content Index
> Fetch the complete content index at: https://www.process-one.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# eturnal v1.0.0: say hello to a new STUN/TURN server
- URL: https://www.process-one.net/blog/eturnal-v1-0-0-say-hello-to-a-new-stun-turn-server/
- Published: 2020-07-13T15:00:00.000Z
- Updated: 2024-09-16T15:01:20.000Z
- Author: ProcessOne

This is a guest post by [Holger Weiß](https://github.com/weiss?ref=process-one.net), the author of eturnal. Holger works as a professional server administrator at [Freie Universität Berlin](https://www.fu-berlin.de/en/?ref=process-one.net) and operates the [Conversations.im service](https://account.conversations.im/?ref=process-one.net)  
(together with [Daniel Gultsch](https://gultsch.de/?ref=process-one.net)). He’s a regular contributor to [ejabberd](https://www.process-one.net/en/ejabberd) and various other Open Source projects.

Today, we released version 1.0.0 of our new STUN/TURN server called [eturnal](https://eturnal.net/?ref=process-one.net)! It’s based on the STUN/TURN support that has been bundled and used successfully with the [ejabberd XMPP/MQTT/SIP server](https://www.ejabberd.im/?ref=process-one.net) for several years now. As WebRTC use cases continue to increase in popularity, we figured it makes sense to offer our STUN/TURN code to a broader audience by providing a stand-alone version.

Note that nothing changes for ejabberd users: STUN/TURN support will continue to be shipped as a built-in component with future ejabberd releases. Since both eturnal and ejabberd are now backed by the same [STUN/TURN library](https://github.com/processone/stun?ref=process-one.net), both will benefit from improvements to that library in the same way.

So what does eturnal have to offer? It’s a clean, straightforward piece of server software that fully supports the TURN features used by modern WebRTC applications such as [Jitsi Meet](https://jitsi.org/jitsi-meet/?ref=process-one.net), [Big Blue Button](https://bigbluebutton.org/?ref=process-one.net), [Nextcloud Talk](https://nextcloud.com/talk/?ref=process-one.net), [Movim](https://movim.eu/?ref=process-one.net), [Conversations](https://conversations.im/?ref=process-one.net), and many others (without carrying around a baggage of features no longer in use these days). TURN clients can connect using UDP, TCP, or TLS over IPv4 or IPv6\. [Relaying to IPv6 peers](https://www.rfc-editor.org/rfc/rfc6156.html?ref=process-one.net) is supported as well. Administrators can choose to [limit](https://eturnal.net/documentation/?ref=process-one.net#max%5Fbps) the bandwidth of TCP and TLS connections, and to [blacklist](https://eturnal.net/documentation/?ref=process-one.net#blacklist) specific networks (or individual IP addresses) altogether. Configuration and TLS certificate files can be reloaded without interrupting A/V calls. eturnal integrates nicely with systemd and offers admin-friendly logging, either to a file or to the systemd journal.

For TURN authentication, the mechanism described in the [REST API for Access to TURN Services](https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00?ref=process-one.net) specification is implemented. This is an IETF Draft that allows WebRTC services to easily generate short-lived TURN credentials without sharing any state with the TURN server. In a nutshell: If you’re creating your own WebRTC service, all you have to do is give your clients a username that’s comprised of the expiry timestamp and a password that’s derived from a secret [shared with eturnal](https://eturnal.net/documentation/?ref=process-one.net#secret). To generate the password, you perform a `Base64(HMAC-SHA1($secret, $timestamp))` operation, and eturnal does the same to verify the credentials. Depending on feedback, a future release of eturnal might even bundle a built-in REST interface that offers those credentials.

eturnal is freely available as Open Source software, [well-documented](https://eturnal.net/documentation/?ref=process-one.net) and easy to set up. To get started, just [grab](https://eturnal.net/download/package/?ref=process-one.net) the latest DEB or RPM package for Linux/x64 distributions (see the [README file](https://github.com/processone/eturnal/blob/master/README.md?ref=process-one.net#installation-on-linuxx64-systems) for other platforms), install the package (using `dpkg -i eturnal*.deb` or `rpm -i eturnal*.rpm`), and create an `/etc/eturnal.yml` file such as the following:

```yaml
eturnal:
  secret: "long-and-cryptic"     # Shared secret, change this!
  relay_ipv4_addr: "203.0.113.4" # The server's public IPv4 address.
  relay_ipv6_addr: "2001:db8::4" # The server's public IPv6 address (optional).

```

Run `systemctl reload eturnal` to activate the new configuration. Or, if the service wasn’t running yet:

```
$ sudo systemctl daemon-reload
$ sudo systemctl enable eturnal
$ sudo systemctl start eturnal

```

If you try it out and have any feedback or feature wishes, please [let us know](https://github.com/processone/eturnal/issues/new?ref=process-one.net)!