Skip to content

DNS and firewall ​

Do this before you run the installation. The Let's Encrypt certificates are only issued once the names point at the server and ports 80 and 443 are reachable from the internet.

The examples use the domain example.se and the public address 203.0.113.10.

DNS records ​

All names are A records pointing at the server's public IPv4 address.

NameNeededUsed for
app.example.seAlwaysThe app
api.example.seAlwaysThe API used by the app and the admin portal, and the SSO sign-in callback
admin.example.seAlwaysThe admin portal and Grafana (/grafana)
meet.example.seAlwaysMeeting links and guests
turn.example.seWhen features.video is on (default)The TURN/STUN server for calls. Clients are given the address turn.example.se:3478.
office.example.seWhen features.office is onDocument editing (Collabora)
grafana.example.seWhen monitoring.grafana_public: trueGrafana on its own name
text
app.example.se.     IN A  203.0.113.10
api.example.se.     IN A  203.0.113.10
admin.example.se.   IN A  203.0.113.10
meet.example.se.    IN A  203.0.113.10
turn.example.se.    IN A  203.0.113.10
office.example.se.  IN A  203.0.113.10

Check before you install

bash
for h in app api admin meet turn; do dig +short $h.example.se; done

Every line should show the server's public address.

Keep the default names

The admin portal works out the addresses of the API and the app by replacing admin. with api. and app.. So do not change app, api and admin under subdomains in the configuration.

A single name ​

With routing: single and hostname: eurion.example.se (see The configuration file) you only need one A record and one certificate:

text
eurion.example.se.  IN A  203.0.113.10

The TURN server for calls is reached on the same name, port 3478. The ports are the same as below. If you use e-mail in Eurion (features.mail), the mail server needs a name of its own in mail.hostname, with an MX record.

Inbound ports ​

These must be open from the internet to the server, in an external firewall or as port forwarding in the router.

PortProtocolNeededFor
80TCPAlwaysTraefik: Let's Encrypt validation and redirect to HTTPS
443TCPAlwaysTraefik: all web traffic (app, API, admin, meetings, Office)
3478TCP and UDPWhen features.video is onTURN/STUN (coturn)
49152–65535UDPWhen features.video is onTURN-relayed media streams (coturn)
10000–10100UDPWhen features.video is onMedia streams straight to the meeting server (mediasoup)
22TCPFor administrationSSH. Preferably restrict it to your own addresses.

All other services (PostgreSQL, Redis, Kafka, MinIO, search, Grafana, Prometheus and the services' own ports) listen only on 127.0.0.1 or inside Docker's internal network and must not be opened.

The server's own firewall

The kit configures ufw (or firewalld) with 22, 80, 443, 3478 TCP/UDP, 5349 TCP and 49152–65535 UDP. Ports 10000–10100 UDP are published by Docker, which lets them through past ufw. In an external firewall you must open them yourself, otherwise calls work poorly or not at all.

Why 5349 is not in the table

The kit opens 5349 (TURN over TLS) in the server's firewall, but in 1.6.4 the TURN server gets no certificate for that port. Clients use 3478. You do not need to open 5349 in an external firewall.

Server behind NAT ​

If the server has a private address and is reached via port forwarding:

  • server.host in the configuration is the server's private address and server.public_ip the public one. The TURN server and the meeting server announce the public address to clients.
  • Forward every port in the table above, with the same port number, to the server's private address.
  • Users on the internal network must be able to reach app.example.se and the other names. Use internal DNS that points at the private address, or NAT reflection in the router.

Outbound traffic ​

The server needs to reach the following over HTTPS:

WhatWhen
Ubuntu/Debian package repositories and download.docker.comThe installation
Docker Hub and ghcr.io (third-party images)The installation, and updates that add a new third-party service
Let's EncryptCertificates are issued and renewed
updates.eurion.seChecking for and downloading updates (can be switched off, see Updates)
ClamAV's signature databaseVirus scanning downloads new signatures (when features.virus_scan is on)
registry.ollama.aiLanguage models for AI (when features.ai is on)
huggingface.coSpeech model for transcription (when features.transcription is on)
Your SMTP serverOutgoing e-mail, see Outgoing e-mail
Microsoft's sign-inIf you use Microsoft Entra ID

Checklist ​

  • [ ] A records for app, api, admin, meet (and turn, office if used) point at the public address
  • [ ] 80/TCP and 443/TCP open from the internet
  • [ ] 3478/TCP+UDP, 49152–65535/UDP and 10000–10100/UDP open (calls)
  • [ ] SSH open only to your administrators
  • [ ] The server can reach the internet outbound
  • [ ] SMTP details ready

Eurion — communication that runs on your own server.