Springe zum Inhalt

Jamulus-Server einrichten

Hier wird die Einrichtung eines solchen Servers umrissen, mit besonderem Augenmerk auf die Zielgruppe Chor.

zurück zum Beitrag „Gemeinsam musizieren mit Jamulus“

Der Betrieb der Jamulus-Software erfordert einen Server, mit dem sich alle Teilnehmer („Klienten“) verbinden. Hier wird die Einrichtung eines solchen Servers umrissen, mit besonderem Augenmerk auf die Zielgruppe Chor.

Warum ein heimischer Server keine gute Idee ist

Nun könnte man einen zuhause herumstehenden Computer als Server verwenden, z. B. ein altes Laptop oder einen RaspberryPi. Die Hardware-Anforderungen sind nicht besonders hoch. Die Anforderungen an die Netzwerkverbindung schon.

Heimische Internetanschlüsse teilen die Bandbreite zwischen Senden und Empfangen von Daten nicht gleichmäßig auf. Der typische Kunde empfängt ja auch viel mehr Daten aus dem Internet als er sendet.

Film auf Netflix anfordern:0,001 MB Upload
Film anschauen:4000 MB Download
Beispiel, weswegen private Internet-Anschlüsse asymmetrisch ausgelegt sind.

Ein typischer Internet-Anschluss hat eine Bandbreite von 100 MBit/s für den Download, aber nur 10 MBit/s für den Upload. Unser Jamulus-Server muss jeden Klienten mit etwa 0,4 MBit/s versorgen. 10 : 0,4 = 25, das wäre die maximale Anzahl von Klienten. Da eine Internetverbindung aber selten die versprochene Leistung liefert — typisch sind 70-80% — und eventuelle Mitbewohner, Smartphones und Smart-Home-Geräte ebenfalls im Netz sind, sinkt die Anzahl versorgbarer Klienten eher auf die Hälfte. Das kann schnell zum Nadelöhr werden.

Der heimische Server muss von außen, von jenseits des Routers erreichbar sein. Jamulus nutzt das IPv4-Protokoll. Nicht jeder Internet-Anbieter garantiert die Erreichbarkeit über dieses Protokoll, gerade Kabelanbieter tricksen oft mit DS-Lite-Verfahren. (Die Details würden hier den Rahmen sprengen.)

Ein lokaler Server macht eigentlich nur dann Sinn, wenn es um eine Vernetzung im Haus geht, also ohne Internet, z. B. innerhalb einer Musikhochschule.

Damit kein falscher Eindruck entsteht:

Die Bandbreite ist nicht das größte Problem! Viel wichtiger ist die Pünktlichkeit des Datenstroms. Anders gesagt: Wenn die Daten eine Sekunde lang stocken, ist es egal, mit welch hoher Geschwindigkeit sie nachgeliefert werden: Sie werden einen halben Takt zu spät sein (bei Tempo 120) und deshalb von Jamulus verworfen werden. So entsteht das typische Blubbern. Die Lücke bleibt.

Drei Möglichkeiten, an einen Server zu kommen

Der einfachste Weg: ein öffentlicher Server

Die Gemeinde der Jamulus-Anwender stellt zahlreiche öffentliche Server zur Verfügung. (Sie werden beim Programmstart angezeigt.) Diese kann man nutzen. Natürlich ist die Probe dann nicht privat, jeder kann zuhören. Die maximale Teilnehmerzahl entspricht leider oft der Voreinstellung zehn.

Wenigstens kann man Zuhörer stummschalten, sollten sie falsch mitsingen.

Jamulus zeigt öffentliche Server an

Vorkonfigurierten Server stundenweise mieten

Es gibt Dienstleister, die Jamulus-Server stundenweise zur Verfügung stellen, z. B. Melomax oder koord.live. Teilweise ist das sogar kostenlos. Klarer Vorteil: Man muss sich nicht um die technischen Details kümmern.

Eigenen Server im Rechenzentrum anmieten

Meiner Meinung nach die beste Lösung! Ein solcher Server steht mitten im Internet und nicht an einem Endpunkt wie dem eigenen Wohnzimmer. Server kann man schon ab 5€/Monat mieten (z. B. bei IONOS, die hier verlinkte Konfiguration ist für 40 Probenteilnehmer auf jeden Fall ausreichend). Es macht Sinn, einen nahegelegenen Server zu suchen, denn der Ping hängt davon ab, wieviele Schaltstellen sich zwischen Client und Server befinden. Eine große Festplatte ist nicht notwendig, es sei denn, man will aufnehmen. Übertrieben viel RAM braucht man ebenfalls nicht.

Server nutzen typischerweise das Betriebssystem Linux und werden ohne grafische Benutzeroberfläche über eine Kommandozeile verwaltet.

Installation eines Jamulus-Servers unter Linux

Die nun folgende Beschreibung wird recht technisch und ist nur etwas für Menschen, die sich mit Servern auskennen.

Ich bin gerne bei der Ersteinrichtung behilflich.

Server und Client sind das gleiche Programm. Der Vorgang ist hier auf der Jamulus-Homepage gut beschrieben, allerdings werden dort vorgefertigte Distributionen verlinkt, die nicht für jeden Anwender funktioniert haben.

Update 2022: Mittlerweile sind die o. g. Distributionen von solcher Qualität, dass die im folgenden beschriebene Installation from source nur in Ausnahmefällen notwendig sein wird. Sie funktioniert aber nach wie vor, deshalb lasse ich diese historische Beschreibung aus dem Jahr 2020 unverändert stehen — außerdem sind die Statistiken zum Resourcenverbrauch auch jetzt noch interessant und zutreffend. Die Installation selbst geht mittlerweile einfacher.

Ich empfehle die Installation from source. Da wir nur die Serverfunktionen brauchen, können wir bestimmte Bibliotheken weglassen. Für die Linux-Distribution Ubuntu habe ich dazu folgendes Skript geschrieben:

Dieses Skript kann man entpacken, als Datei in sein Heimatverzeichnis auf seinem Server hochladen, mit sudo chmod +x install_jamulus ausführbar machen und mit sudo ./install_jamulus starten.

Dann sollte man Jamulus testweise starten. (Zum Beenden: Strg-C)

Jamulus -s

Das Starten des Programms im Alltag überlässt man, zumindest unter Ubuntu 20, am besten systemd. Dazu kopiert man folgendes Startup-Skript nach /etc/systemd/system/jamulus.service und setzt die Berechtigungen mit sudo chmod 644 /etc/systemd/system/jamulus.service.

Falls man Jamulus nicht selbst kompiliert, sondern aus einer Distro installiert hat, muss man den Pfad hinter ExecStart evtl. anpassen. Im Zweifelsfall hilft whereis Jamulus weiter.

Die Willkommensnachricht kann natürlich angepasst werden und darf HTML enthalten. Man kann sie auch in eine Datei auslagern (die für den User jamulus lesbar sein muss), z.B. /home/jamulus/welcome.html.

Die hier beschriebene Technik zum Autostart eines Services wurde unter Ubuntu 20 entwickelt und funktioniert auf anderen Linuces evtl. anders.

Nun kann man das Programm bequem mit systemctl start jamulus starten, mit systemctl stop jamulus beenden und mit systemctl status jamulus den Status abfragen. Damit es beim Systemstart automatisch gestartet wird, verwendet man systemctl enable jamulus. Das kann mit systemctl disable jamulus rückgängig gemacht werden.

Falls der Server durch eine Firewall geschützt wird, muss man dort den Port 22124/UDP freigeben. (IONOS-vServer werden durch eine Hardware-Firewall geschützt, die man nicht über den Server, sondern über die Server-Kontroll-Seite im Kundenbereich der IONOS-Homepage konfiguriert.)

Das Jamulus-Serverprogramm wird über folgende Kommandozeilenoptionen gesteuert. Typisch wäre

jamulus -s -n -T -u 20

Die Option -s lässt das Programm im Server-Modus starten, -n deaktiviert die Benutzeroberfläche, die wir auf dem Server nicht benötigen, -T aktiviert Multithreading. -u gibt die max. Anzahl der Clienten an, die sich verbinden dürfen.

Es existiert eine Option -F Fastupdate, die die internen Puffer serverseitig auf 64 samples verkleinert. (Um das zu nutzen, muss in den Einstellungen des Klienten die Option Aktiviere kleine Netzwerkpuffer gewählt werden.) Das kann die Latenz etwas verbessern — um den Preis einer höheren Serverlast. Bei mehr als 10 Teilnehmern würde ich es nicht empfehlen.

Serverlast

Hier die Netzlast einer Chorprobe mit 37 Teilnehmern:

Spitzenlast: 14MBit/s jeweils in/out

Hier die CPU-Last der gleichen Probe:

155% Last (von max. 400% bei 4 CPUs)

Ein Low-Latency-Kernel bringt uns nichts. Er würde zwar die Latenz einer Audio-Ausgabe direkt am Server verbessern, aber auch die CPU-Last erhöhen. (Der Server steht typischerweise im Rechenzentrum, dort hört selten jemand zu. 😉)

Die Festplatte des Servers wird quasi nicht benutzt, es sei denn, man nimmt auf:

Aufzeichnung der Probe

Der Server kann die Sitzung aufzeichnen, und zwar jede Spur einzeln. Man könnte also im Nachhinein einen Mix erstellen. Da unkomprimiert im WAV-Format aufgezeichnet wird, muss man genügend Speicherplatz vorhalten: 5,5 MB pro Minute ergeben bei einer zweistündigen Probe mit 37 Teilnehmern ca. 24,4 GB.

Um aufzunehmen, reicht es, die Kommandozeile zur Steuerung um den Parameter -R zu ergänzen, gefolgt vom Pfad für die Aufnahmen, also z.B.

-R /home/jamulus/recording/

Der Pfad muss natürlich existieren. Zu den Audiodateien erstellt Jamulus Audioprojekte im Format der Programme Reaper und Audacity.


Diese Anleitung wird laufend ergänzt. Ich freue mich über Feedback!

10 Gedanken zu „Jamulus-Server einrichten

  1. Harald Schrödter

    Super hilfreich, da werden mehr Fragen beantwortet als erwrtet 🙂
    Sehr guter Tipp ist IONOS, das sind wirklich hifsbereite nette Leute.
    Eigentlich war ich auf der Suche nach Hilfe zur Einrichtung eines privaten Jamulus-Servers mit WIN10 (inzwischen habe ich das hingekriegt).
    Leider umsonst, wie ich dank dieser Ausführungen gelernt und dank deiner verständlichen und nachvollziehbaren Erklärungen auch verstehen konnte.
    Vielen Dank für diese aufschlussreiche und sehr nützliche Veröffentlichung ...

    Antworten
  2. Uwe Bering

    Super Tutorial, jede Zeile verständlich und zutreffend.
    Ich habe einen vServer bei deinserverhost.de gemietet und wollte dort meinen JamServer laufen lassen.
    Nachdem ich mich am jamulus-headless.deb-Paket abgearbeitet habe, es aber immer nur mit Fehlermeldungen beim Start gab, habe ich Deinen Weg des neucompilierens probiert. Du hast mir jede Menge Sucharbeit erspart (die nötige Software zu installieren usw.) und es hat genau so funktioniert, wie Du es geschrieben hast.
    Danke für die Arbeit, die Du Dir gemacht hast!

    Antworten
  3. Uwe Mattes

    Hallo Joe,
    Vielen Dank für diese Anleitung.
    Besser geht es nicht !
    Anhand deiner Beschreibung und Skripts war die Installation und Inbetriebnahme unseres Bandservers ein Kinderspiel.
    Läuft sehr stabil und performant.
    Groovige Grüße
    Uwe

    Antworten
  4. Torsten Schönwitz

    Vielen Dank Joe, dass du mir kurzfristig per Email geholfen hast. Den Rest macht die hervorragende Anleitung. Grob läuft die Sache schon. Es folgt das Fine-Tuning 🙂
    Gruß, Torsten.

    Antworten
  5. Ralf Müller (Gitarrenverein Nordrach)

    Hallo Joe,
    sehr gelungene Beschreibung, die mir weitergeholfen hat. Jamulus läuft jetzt auch problemlos auf dem von mir angemieteten Cloud-Server bei IONOS unter Debian 11. Allerdings sind die Latenzen bei der Verbindung mit einem Jamulus-Client für ein gemeinsames Musizieren viel zu hoch (>80ms). Der Ping scheint mit 13-20ms in Ordnung. Der Port 22124/UDP ist offen. Vielleicht hast Du ja eine Idee, auf was ich noch achten müsste bzw. was ich optimieren könnte.
    Viele Grüße
    Ralf

    Antworten
  6. Hanne Hübener

    Der Server läuft, und wir sind begeistert! VIELEN DANK für deine engagierte Arbeit, Joe!
    Von der ersten Jamulus-Fortbildung bis zur Einrichtung des eigenen Servers eine umfangreiche Unterstützung und unfassbar schnelle und gründliche Beantwortung von Fragen!

    Antworten
  7. Harald Christophels

    Hallo Joe,
    ich kann mich meinen "Vorrednern" nur anschließen: Klasse! Hat mir nun zum dritten Mal geholfen, meinen gemieteten Server zügig und problemlos neu aufzusetzen.
    Herzlichen Dank dafür!

    P.S.
    Anfänglich hohe Latenzen konnte ich deutlich verringern, indem ich WLAN komplett abgeschaltet und durch kabelgebundene Verbindung zu meinem Router ersetzt habe.

    Antworten

Schreibe einen Kommentar zu Harald Christophels Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert