Installationsschritte
Ö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
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
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.
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
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!
Die folgenden drei Schritte sind nur notwendig, wenn du eine dynamische DNS-Domain über DuckDNS verwenden möchtest.
Registriere dich auf
duckdns.org und erstelle eine Subdomain:
Subdomain: YOUR_DOMAIN.duckdns.org
Token: YOUR_TOKEN
WICHTIG: Wenn der Server neu aufgesetzt werden muss, muss die Domain einmal gelöscht und neu angelegt werden.
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
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 + O → Enter → Strg + X
Container starten:
docker-compose up -d
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
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.
Starte NGINX neu, damit die Änderungen wirksam werden:
sudo systemctl start nginx
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.
Der OpenTAKServer ist nun mit gültigem TLS-Zertifikat erreichbar. Alle Clients können sich über die konfigurierte Domain verbinden.
Übersicht aller Ports, die für den OpenTAKServer benötigt werden:
| Port |
Komponente |
Protokoll |
Schnittstelle |
Beschreibung |
| 80 | Nginx | TCP | Alle | Web-UI und Proxy für HTTP-API-Anfragen an OpenTAKServer Port 8081 |
| 443 | Nginx | TCP | Alle | Web-UI und Proxy für HTTPS-Anfragen an OpenTAKServer Port 8081 |
| 1883 | RabbitMQ | TCP | Alle | Unverschlüsselter MQTT-Port für Meshtastic |
| 1935 | MediaMTX | TCP | Alle | RTMP-Videostreams veröffentlichen und ansehen |
| 1936 | MediaMTX | TCP | Alle | RTMPS-Videostreams veröffentlichen und ansehen |
| 5672 | RabbitMQ | TCP | Alle | AMQP-Clients – externer Zugriff sollte gesperrt werden |
| 6502 | Mumble | TCP | Loopback | Mumble ICE-Server für OpenTAKServer-Authentifizierung |
| 8000 | MediaMTX | UDP | Alle | RTP-Videostreams veröffentlichen und ansehen |
| 8001 | MediaMTX | UDP | Alle | RTCP-Videostreams veröffentlichen und ansehen |
| 8080 | Nginx | TCP | Alle | Web-UI und Proxy für HTTP-API-Anfragen an OpenTAKServer Port 8081 |
| 8081 | OpenTAKServer | TCP | Loopback | OTS HTTP(S)-Anfragen (nur Loopback-Schnittstelle) |
| 8088 | OpenTAKServer | TCP | Alle | TCP CoT Streaming-Port |
| 8089 | OpenTAKServer | TCP | Alle | SSL CoT Streaming-Port |
| 8189 | MediaMTX | UDP | Alle | WebRTC |
| 8322 | MediaMTX | TCP | Alle | RTSP(S)-Videostreams veröffentlichen und ansehen |
| 8443 | Nginx | TCP | Alle | Web-UI und Proxy für HTTPS-API-Anfragen an OpenTAKServer Port 8081 |
| 8446 | Nginx | TCP | Alle | Web-UI und Proxy für Zertifikatsregistrierung an OpenTAKServer Port 8081 |
| 8554 | MediaMTX | TCP/UDP | Alle | RTSP-Videostreams veröffentlichen und ansehen |
| 8883 | RabbitMQ | TCP | Alle | Verschlüsselter MQTT-Port für Meshtastic |
| 8888 | MediaMTX | TCP | Alle | HLS-Videostreams ansehen |
| 8889 | MediaMTX | TCP | Alle | WebRTC-Streams veröffentlichen und anzeigen |
| 8890 | MediaMTX | UDP | Alle | SRT-Streams veröffentlichen und anzeigen |
| 9997 | MediaMTX | TCP | Loopback | MediaMTX-API |
| 25672 | RabbitMQ | TCP | Alle | RabbitMQ Federation – externer Zugriff sollte gesperrt werden |
| 64738 | Mumble | TCP/UDP | Alle | Sprachstreams des Mumble-Servers |