OpenTAKServer – Installations- und Konfigurationsanleitung

Installation und Grundkonfiguration eines OpenTAKServers auf einem VPS inkl. optionalem Docker, DuckDNS und Let's Encrypt Zertifikaten

Installationsschritte

1
Fernzugriff per SSH (Windows)
Öffne ein Terminal (Windows: Win+R → cmd) und verbinde dich mit deinem Server:
Optional: Alte SSH-Einträge entfernen (z.B. nach Neuinstallation)
notepad C:\Users\YOUR_USER\.ssh\known_hosts
Verbindung herstellen
ssh root@YOUR_SERVER_IP
Passwort
YOUR_PASSWORD
System aktualisieren
sudo apt update && sudo apt upgrade -y
2
Benutzer anlegen
Erstelle einen eigenen Benutzer für den TAK-Server und gib ihm sudo-Rechte:
adduser YOUR_USER
Passwort
YOUR_PASSWORD
sudo usermod -aG sudo YOUR_USER su - YOUR_USER sudo apt update && sudo apt upgrade -y
3
OpenTAKServer Installation
Installiere den OpenTAKServer mit dem offiziellen Installer-Skript:
Ubuntu
curl -s -L https://i.opentakserver.io/ubuntu_installer | bash -
Raspberry Pi OS
curl -s -L https://i.opentakserver.io/raspberry_pi_installer | bash -
Hinweis: Nach der Installation läuft der Server intern auf Port 8081. Die Web-Oberfläche ist über https://YOUR_SERVER_IP/ erreichbar.
4
ZeroTier Konfiguration (Optional)
Für VPN-Zugriff über ZeroTier: Erstelle ein Netzwerk unter central.zerotier.com und verbinde deine Geräte.
Netzwerk-ID: YOUR_ZEROTIER_ID ZeroTier Central: https://central.zerotier.com/network/YOUR_ZEROTIER_ID
Zugangsdaten
Benutzer: YOUR_USER Passwort: YOUR_PASSWORD
5
ATAK Weboberfläche
Nach der Installation erreichst du die Weboberfläche unter:
URL: https://YOUR_SERVER_IP/ Benutzer (Standard): administrator Passwort (Standard): password Zertifikat-Passwort: atakatak
Wichtig: Ändere das Standard-Passwort nach dem ersten Login!

Punkte 6–8: Nur wenn DuckDNS genutzt wird
Die folgenden drei Schritte sind nur notwendig, wenn du eine dynamische DNS-Domain über DuckDNS verwenden möchtest.
6
DuckDNS Einrichtung
Registriere dich auf duckdns.org und erstelle eine Subdomain:
Subdomain: YOUR_DOMAIN.duckdns.org Token: YOUR_TOKEN
DuckDNS Dashboard
WICHTIG: Wenn der Server neu aufgesetzt werden muss, muss die Domain einmal gelöscht und neu angelegt werden.
7
Docker Installation
Installiere Docker und die benötigten Abhängigkeiten:
sudo apt update sudo apt install git net-tools unzip zip -y git clone https://github.com/Cloud-RF/tak-server.git cd tak-server # Docker GPG-Schlüssel und Repository hinzufügen sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian \ bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update # Docker Engine installieren sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Benutzer zur Docker-Gruppe hinzufügen sudo groupadd docker sudo usermod -aG docker YOUR_USER
Hinweis: Wechsle danach zum Root-Benutzer (exit) und teste Docker mit: docker run hello-world
8
DuckDNS via Docker Compose
Erstelle einen DuckDNS-Container für das automatische DNS-Update:
mkdir duckdns cd duckdns sudo apt install docker-compose nano docker-compose.yml
📄 docker-compose.yml
services: duckdns: image: lscr.io/linuxserver/duckdns:latest container_name: duckdns network_mode: host environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin - SUBDOMAINS=YOUR_DOMAIN - TOKEN=YOUR_TOKEN - UPDATE_IP=ipv4 - LOG_FILE=false volumes: - /home/YOUR_USER/tak-server/duckdns-config:/config restart: unless-stopped
Speichern: Strg + OEnterStrg + X
Container starten:
docker-compose up -d

9
Let's Encrypt Zertifikat (Certbot)
Erstelle ein kostenloses TLS-Zertifikat für deine Domain:
sudo apt install certbot sudo systemctl stop nginx sudo certbot certonly --standalone --preferred-challenges http -d YOUR_DOMAIN
10
NGINX Zertifikate anpassen
Passe die NGINX-Konfiguration an, um die Let's Encrypt Zertifikate zu verwenden:
Zum Root-Benutzer wechseln:
su root cd
Datei 1: /etc/nginx/sites-enabled/ots_certificate_enrollment
sudo nano /etc/nginx/sites-enabled/ots_certificate_enrollment
SSL-Zeilen ersetzen durch:
ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem;
Datei 2: /etc/nginx/sites-enabled/ots_https
sudo nano /etc/nginx/sites-enabled/ots_https
Die gleichen zwei SSL-Zeilen im Serverblock für Port 443 anpassen.
Achtung: Die Zertifikate im Serverblock für Port 8443 nicht ändern! Diese verwenden die vom OpenTAKServer generierten Client-Zertifikate.
11
NGINX neu starten
Starte NGINX neu, damit die Änderungen wirksam werden:
sudo systemctl start nginx

Optimierung: EUD-Handler & PostgreSQL Verbindungslimit
Verbindungsabbrüche und Instabilitäten bei hoher EUD-Anzahl (ca. 30 Geräte) können aufgrund von Datenbank-Limitierungen und Speicherfehlern auftreten. Erhöhe das PostgreSQL-Verbindungslimit von 100 auf 500 parallele Verbindungen:
Datei: /etc/postgresql/16/main/postgresql.conf
sudo nano /etc/postgresql/16/main/postgresql.conf
Parameter anpassen:
max_connections = 500
Dienste neu starten:
sudo systemctl restart postgresql sudo reboot
Hinweis: Der Standardwert ist 100 Verbindungen. 500 reicht für die meisten TAK-Deployments aus.
Installation abgeschlossen
Der OpenTAKServer ist nun mit gültigem TLS-Zertifikat erreichbar. Alle Clients können sich über die konfigurierte Domain verbinden.

📋
Port-Übersicht
Übersicht aller Ports, die für den OpenTAKServer benötigt werden:
Port Komponente Protokoll Schnittstelle Beschreibung
80NginxTCPAlleWeb-UI und Proxy für HTTP-API-Anfragen an OpenTAKServer Port 8081
443NginxTCPAlleWeb-UI und Proxy für HTTPS-Anfragen an OpenTAKServer Port 8081
1883RabbitMQTCPAlleUnverschlüsselter MQTT-Port für Meshtastic
1935MediaMTXTCPAlleRTMP-Videostreams veröffentlichen und ansehen
1936MediaMTXTCPAlleRTMPS-Videostreams veröffentlichen und ansehen
5672RabbitMQTCPAlleAMQP-Clients – externer Zugriff sollte gesperrt werden
6502MumbleTCPLoopbackMumble ICE-Server für OpenTAKServer-Authentifizierung
8000MediaMTXUDPAlleRTP-Videostreams veröffentlichen und ansehen
8001MediaMTXUDPAlleRTCP-Videostreams veröffentlichen und ansehen
8080NginxTCPAlleWeb-UI und Proxy für HTTP-API-Anfragen an OpenTAKServer Port 8081
8081OpenTAKServerTCPLoopbackOTS HTTP(S)-Anfragen (nur Loopback-Schnittstelle)
8088OpenTAKServerTCPAlleTCP CoT Streaming-Port
8089OpenTAKServerTCPAlleSSL CoT Streaming-Port
8189MediaMTXUDPAlleWebRTC
8322MediaMTXTCPAlleRTSP(S)-Videostreams veröffentlichen und ansehen
8443NginxTCPAlleWeb-UI und Proxy für HTTPS-API-Anfragen an OpenTAKServer Port 8081
8446NginxTCPAlleWeb-UI und Proxy für Zertifikatsregistrierung an OpenTAKServer Port 8081
8554MediaMTXTCP/UDPAlleRTSP-Videostreams veröffentlichen und ansehen
8883RabbitMQTCPAlleVerschlüsselter MQTT-Port für Meshtastic
8888MediaMTXTCPAlleHLS-Videostreams ansehen
8889MediaMTXTCPAlleWebRTC-Streams veröffentlichen und anzeigen
8890MediaMTXUDPAlleSRT-Streams veröffentlichen und anzeigen
9997MediaMTXTCPLoopbackMediaMTX-API
25672RabbitMQTCPAlleRabbitMQ Federation – externer Zugriff sollte gesperrt werden
64738MumbleTCP/UDPAlleSprachstreams des Mumble-Servers