{"id":17569449,"url":"https://github.com/processone/eturnal","last_synced_at":"2025-06-15T10:09:20.223Z","repository":{"id":39644998,"uuid":"272381104","full_name":"processone/eturnal","owner":"processone","description":"STUN / TURN standalone server","archived":false,"fork":false,"pushed_at":"2025-04-28T14:00:10.000Z","size":1160,"stargazers_count":270,"open_issues_count":20,"forks_count":23,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-04-28T15:22:12.050Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://eturnal.net","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/processone.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-15T08:18:37.000Z","updated_at":"2025-04-28T14:00:13.000Z","dependencies_parsed_at":"2024-11-15T14:27:23.814Z","dependency_job_id":"5083b8bc-24b2-4aa6-a181-7e0767301613","html_url":"https://github.com/processone/eturnal","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/processone/eturnal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Feturnal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Feturnal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Feturnal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Feturnal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/processone","download_url":"https://codeload.github.com/processone/eturnal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Feturnal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259957280,"owners_count":22937549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-21T18:00:35.265Z","updated_at":"2025-06-15T10:09:20.212Z","avatar_url":"https://github.com/processone.png","language":"Erlang","readme":"# eturnal TURN Server\n\n\u003cp align=\"left\"\u003e\u003cimg src=\"https://eturnal.net/hello.png\" height=\"180\"\u003e\u003c/p\u003e\n\n[![CI](https://github.com/processone/eturnal/actions/workflows/ci.yml/badge.svg)][1]\n\n[eturnal][2] is a modern, straightforward STUN and TURN server. For\nauthentication, the mechanism described in the [REST API for Access to TURN\nServices][3] specification is implemented. The server can easily be tested [in a\nLinux shell][4] or [using Docker][5]. For a persistent installation, see the\nfollowing section.\n\n## Installation\n\n\u003e _Note:_ Running eturnal in **container environments** such as Docker or\n\u003e Kubernetes is described on a [separate documentation][6] page.\n\nOn **APT-based** Linux distributions, run:\n\n```shell\nsudo apt install extrepo\nsudo extrepo enable eturnal\nsudo apt update\nsudo apt install eturnal\n```\n\nOn **DNF5-based** Linux distributions, run:\n\n```shell\nsudo dnf config-manager addrepo --from-repofile=https://eturnal.net/eturnal.repo\nsudo dnf install eturnal\nsudo systemctl --now enable eturnal\n```\n\nOn **DNF4-based** Linux distributions, run:\n\n```shell\nsudo dnf config-manager --add-repo https://eturnal.net/eturnal.repo\nsudo dnf install eturnal\nsudo systemctl --now enable eturnal\n```\n\nOn **YUM-based** Linux distributions, run:\n\n```shell\nsudo yum-config-manager --add-repo https://eturnal.net/eturnal.repo\nsudo yum install eturnal\nsudo systemctl --now enable eturnal\n```\n\nOn **SUSE** Linux Enterprise and openSUSE systems, [distribution\nrepositories][7] can be used instead. There's also an official **Alpine**\n[package][8]. **Gentoo** users may install eturnal using the [GURU overlay][9].\nOn **other Linux systems**, the binary release can be installed as\n[described][10] in the reference documentation. On **FreeBSD**, the official\n[port][11] can be used. For **Windows**, an installer is [available][12].\n\nOn **macOS**, homebrew can be used like this:\n\n```shell\nbrew tap processone/eturnal https://github.com/processone/eturnal\nbrew install processone/eturnal/eturnal\n```\n\nOn **other platforms**, eturnal is [built from source][13].\n\n## Configuration\n\nThe eturnal server is configured by editing the `/etc/eturnal.yml` file. This\nfile uses the (indentation-sensitive!) [YAML][14] format. For TURN relaying to\nwork, you'll have to specify the [shared authentication][3] `secret` and (if\nautodetection fails) also the `relay_ipv4_addr` option, which should be set to\nthe server's _external_ IPv4 address. As an example, a configuration for\noffering STUN and TURN services on port 3478 (UDP and TCP) might look like\nthis:\n\n```yaml\neturnal:\n  secret: \"long-and-cryptic\"     # Shared secret, CHANGE THIS.\n  relay_ipv4_addr: \"203.0.113.4\" # The server's public IPv4 address.\n  relay_ipv6_addr: \"2001:db8::4\" # The server's public IPv6 address (optional).\n```\n\nA more detailed, commented [example configuration][15] is shipped with the\neturnal server.\n\n## Running eturnal\n\nOn Linux systems, the eturnal server is usually invoked by [systemd][16]. For\nnon-systemd platforms, example [init][17] and [OpenRC][18] scripts are shipped\nbelow the `etc` directory.\n\nFor controlling eturnal, the `eturnalctl` command can be used; see:\n\n```shell\neturnalctl help\n```\n\n## Logging\n\nIf eturnal was started by systemd, log files are written into the\n`/var/log/eturnal` directory by default. In order to log to the [journal][19]\ninstead, the `log_dir` option can be set to `stdout` in the configuration file.\n\n## Documentation\n\nFor a detailed description of eturnal's configuration options and the\n`eturnalctl` tool, see the [reference documentation][20]. For notable changes\nbetween eturnal releases, see the [change log][21].\n\n## Feedback/Support\n\nPlease use [our issue tracker][22] for bug reports and feature requests. Feel\nfree to (ab)use it for usage questions as well. If you happen to be using\n[XMPP][23], you could also join our public room\n`eturnal@conference.process-one.net`. Otherwise, just use the [web client][24].\nAs an alternative, there's an `#eturnal` channel [on Slack][25].\n\n [1]: https://github.com/processone/eturnal/actions/workflows/ci.yml\n [2]: https://eturnal.net/\n [3]: https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00\n [4]: https://eturnal.net/doc/quick-test.html\n [5]: https://eturnal.net/doc/container-quick-test.html\n [6]: https://eturnal.net/doc/container.html\n [7]: https://software.opensuse.org/download/?package=eturnal\u0026project=devel:languages:erlang\n [8]: https://pkgs.alpinelinux.org/packages?name=eturnal\n [9]: https://gpo.zugaina.org/net-im/eturnal\n[10]: https://eturnal.net/doc/#Installation\n[11]: https://www.freshports.org/net/eturnal/\n[12]: https://eturnal.net/windows/\n[13]: https://eturnal.net/doc/install.html\n[14]: https://en.wikipedia.org/wiki/YAML\n[15]: https://github.com/processone/eturnal/blob/1.12.2/config/eturnal.yml\n[16]: https://www.freedesktop.org/software/systemd/man/systemctl.html\n[17]: https://github.com/processone/eturnal/blob/1.12.2/overlay/init/sysv/eturnal\n[18]: https://github.com/processone/eturnal/blob/1.12.2/overlay/init/openrc/eturnal.initd\n[19]: https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html\n[20]: https://eturnal.net/doc/\n[21]: https://github.com/processone/eturnal/blob/1.12.2/CHANGELOG.md\n[22]: https://github.com/processone/eturnal/issues\n[23]: https://xmpp.org\n[24]: https://eturnal.net/chat/\n[25]: https://erlef.org/slack-invite/erlanger\n","funding_links":[],"categories":["Stun \u0026 Turn"],"sub_categories":["C/C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprocessone%2Feturnal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprocessone%2Feturnal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprocessone%2Feturnal/lists"}