Mediatomb

Dieser Artikel wurde fĂŒr die folgenden Ubuntu-Versionen getestet:

Hinweis:

Seit 2013 ruht die Entwicklung von Mediatomb. Ein fork ist Gerbera 🇬🇧

Zum VerstÀndnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

  4. Root-Rechte

  5. Apt-Pinning

Inhaltsverzeichnis
  1. Installation
    1. Bis Ubuntu 17.10
    2. Ab Ubuntu 18.04
  2. Einstellungen
    1. Server starten/stoppen
  3. Bedienung
    1. Programmaufruf
    2. Anzeigemodus Database
    3. Anzeigemodus Filesystem
  4. Problembehebung
    1. OpenVPN
    2. Firewall
    3. Darstellung von Umlauten
    4. Fehlermeldungen bezĂŒglich der Datenbank
    5. DLNA TVs (z.B. Samsung)
  5. Links
    1. Intern
    2. Extern

/MT_logo.png MediaTomb ist ein freier UPnP-Medienserver (Universal Plug and Play), der es erlaubt, Mediendaten wie Filme und Musik ĂŒber das Netzwerk an UPnP-fĂ€hige GerĂ€te zu verteilen. Dazu zĂ€hlen auch GerĂ€te, die als DLNA-fĂ€hig gekennzeichnet sind. Da in letzter Zeit vermehrt DLNA-fĂ€hige GerĂ€te wie Fernseher, Internetradios oder Spielekonsolen (z.B. PS3), auf den Markt kommen, bietet MediaTomb eine komfortable Lösung zur Übertragung von Musik oder Filmen vom Computer auf das jeweilige GerĂ€t.

Installation¶

Bis Ubuntu 17.10¶

MediaTomb befindet sich bis Ubuntu 17.10 in den offiziellen Paketquellen. Folgende Pakete mĂŒssen installiert werden[1]:

Paketliste zum Kopieren:

sudo apt-get install mediatomb 

Oder mit apturl die Pakete installieren. Link: apt://mediatomb

Ab Ubuntu 18.04¶

Ab Ubuntu 18.04 wurde MediaTomb in den offiziellen Paketquellen durch Gerbera 🇬🇧 ersetzt. Allerdings kann Gerbera mit den meisten Samsung-TV ĂŒber DLNA nicht kommunizieren, weil Gerbera eine andere als Mediatomb Bibliothek libupnp benutzt, die keine custom-http-headers unterstĂŒtzt.

Falls man MediaTomb weiterhin nutzen möchte, kann man ihn manuell installieren. Dabei muss man beachten, dass Gerbera und MediaTomb sich nicht vertragen: wenn MediaTomb drauf ist und man noch Gerbera installiert, wird MediaTomb deinstalliert.

Es gibt zwei möglichkeiten MediaTomb manuell zu installieren:

  1. Man kann die alten Pakete herunterladen und installieren, dabei bekommt man Probleme mit den AbhĂ€ngigkeiten, die irgendwie manuell aufgelöst werden mĂŒssen.

  2. Man kann aber MediaTomb aus den offiziellen Paketquellen von Ubuntu 16.04 installieren, dabei werden die AbhÀngigkeiten automatisch aufgelöst.

Hier wird die 2. Variante beschrieben, fĂŒr die die Technik Apt-Pinning angewendet wird.

Es werden zwei Dateien angelegt:

mit den Namen (frei wÀhlbar) /etc/apt/preferences.d/xenial-mediatomb

Package: mediatomb
Pin: release v=16.04, b=amd64
Pin-Priority: 500

Package: mediatomb-daemon
Pin: release v=16.04, b=amd64
Pin-Priority: 500

Package: mediatomb-common
Pin: release v=16.04, b=amd64
Pin-Priority: 500

Package: mediatomb-dbg
Pin: release v=16.04, b=amd64
Pin-Priority: 500

Package: *
Pin: release v=16.04, l=Ubuntu
Pin-Priority: -2

und /etc/apt/sources.list.d/xenial_mediatomb.list

deb http://de.archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://de.archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb http://de.archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb http://de.archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse

MediaTomb Installieren:

sudo apt-get update
sudo apt-get install mediatomb 

Die offiziellen Paketquellen von Ubuntu 16.04 in der /etc/apt/sources.list.d/xenial_mediatomb.list deaktivieren (man kann die Datei einfach löschen):

#deb http://de.archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
#deb http://de.archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
#deb http://de.archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
#deb http://de.archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse

und die Paketquellen neu einlesen:

sudo apt-get update 

Einstellungen¶

Die Einstellungen des Servers lassen sich mit einen Editor bearbeiten. Eine Anpassung kann nötig sein, wenn es zu Problemen mit der Verbindung UPnP-GerÀten kommt. Dazu muss man mit einem Editor[3] mit Root-Rechten[4] die Datei /etc/mediatomb/config.xml editieren.

Bei Ubuntu 16.04 muss die Netzwerkschnittstelle MT_INTERFACE in der Datei /etc/default/mediatomb angepasst werden:

## Network interface on which the server will run, you need to edit this!
#MT_INTERFACE="lo"
MT_INTERFACE="enp0s25" #or whatever you external interface is

Server starten/stoppen¶

Nach der Installation wird MediaTomb automatisch beim Hochfahren des Computers gestartet.

Hinweis:

Der Server verfĂŒgt ĂŒber einen integrierten Dateisystem-Browser in der BenutzeroberflĂ€che, d.h. jeder, der Zugriff auf die MediaTomb-WeboberflĂ€che hat, kann das Dateisystem durchsuchen (mit Benutzerberechtigungen, unter denen der Server lĂ€uft) und auch Daten herunterladen. Falls Sie die maximale Sicherheit wĂŒnschen - deaktivieren Sie die BenutzeroberflĂ€che vollstĂ€ndig.

Eine Konto-Authentifizierung bietet zwar einen einfachen Schutz, der z.B. Kinder zurĂŒckhalten könnte, aber es ist nicht sicher genug fĂŒr einen Einsatz in einer nicht vertrauenswĂŒrdigen Umgebung.

Da der Server in einer Home-LAN-Umgebung verwendet werden soll, ist die BenutzeroberflÀche normalerweise aktiviert und eine Konto-Authentifizierung deaktiviert, so dass jeder in Ihrem Netzwerk eine Verbindung zur BenutzeroberflÀche herstellen kann.

Deswegen ist ratsam, den Server nicht permanent sondern nur dann laufen lassen, wenn er tatsĂ€chlich benötigt wird. DafĂŒr soll man ihn dauerhaft deaktivieren:

sudo systemctl disable mediatomb.service 

PrĂŒfen, ob der Server deaktiviert ist:

systemctl is-enabled mediatomb.service 

Falls die Ausgabe "disabled" lautet, ist der Server tatsÀchlich dauerhaft deaktiviert.
Mann kann auch den Status abfragen:

systemctl status mediatomb.service 

Bei deaktivierten Server sieht dann die Status-Ausgabe so aus:

● mediatomb.service - UPnP MediaServer
   Loaded: loaded (/lib/systemd/system/mediatomb.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Mit dem Befehl kann der MediaTomb-Daemon wieder dauerhaft aktiviert werden:

sudo systemctl enable mediatomb.service 

Manuelles Starten:

Dies lĂ€ĂŸt sich automatisieren, indem die entsprechenden Programmstarter ins Verzeichnis /usr/share/applications/ (systemweit) bzw. ~/.local/share/applications/ (fĂŒr den lokalen Benutzer) platziert werden:

/usr/share/applications/mediatomb-server-start.desktop

[Desktop Entry]
Name=MediaTomb server start
Comment=Starts MediaTomb server
Exec=sudo systemctl start mediatomb.service
Terminal=true
Icon=mediatomb.png
Type=Application
Categories=AudioVideo;

/usr/share/applications/mediatomb-server-stop.desktop

[Desktop Entry]
Name=MediaTomb server stop
Comment=Stop MediaTomb server
Exec=sudo systemctl stop mediatomb.service
Terminal=true
Icon=mediatomb.png
Type=Application
Categories=AudioVideo;

Dann lĂ€ĂŸt sich der MediaTomb-Server ĂŒber den MenĂŒeintrag "Anwendungen -> Multimedia -> MediaTomb server start" starten und ĂŒber den MenĂŒeintrag "Anwendungen -> Multimedia -> MediaTomb server stop" stoppen (im aufpoppenden Terminal-Fenster muss noch ein Benutzer-Passwort fĂŒr den Befehl sudo eingegeben werden).

Bedienung¶

Programmaufruf¶

Nach erfolgreichem Start des Servers kann man das Programm ĂŒber den MenĂŒpunkt "Anwendungen -> Multimedia -> MediaTomb" aufrufen. Daraufhin startet ein Browser und öffnet die WeboberflĂ€che von MediaTomb. Alternativ erreicht man das auch durch Aufruf der Adresse http://localhost:49152 (der Standard-Port 49152 kann angepasst werden; z.B. 50500 bei Ubuntu 16.04).

ErhÀlt man die Meldung

"MediaTomb UI is disabled. Check your configuration."

muss in der Datei /etc/mediatomb/config.xml der Eintrag ui enabled="no" auf "yes" gesetzt werden. In den Zeilen darunter lÀsst sich festlegen, ob der Zugang nur per Benutzernamen und Passwort möglich sein soll. Dazu wird "accounts enabled" auf "yes" gesetzt und bei "user" und "password" entsprechend ein Benutzername und ein Passwort eingesetzt.

Dem MenĂŒeintrag "Anwendungen -> Multimedia -> MediaTomb" entspricht der Programmstarter /usr/share/applications/mediatomb.desktop:

[Desktop Entry]
Name=MediaTomb
Comment=MediaTomb UPnP MediaServer web user interface.
Exec=/usr/bin/x-www-browser /var/lib/mediatomb/mediatomb.html
Icon=mediatomb.png
Terminal=false
Type=Application
Categories=AudioVideo;

Der Link /usr/bin/x-www-browser zeigt auf einen Browser (standardmĂ€ĂŸig auf den Firefox). Möchte man einen anderen Browser fĂŒr die MediaTomb-BenutzeroberflĂ€che nutzen, korrigiert man die Exec-Zeile des systemweiten Programmstarter /usr/share/applications/mediatomb.desktop (kann aber bei einem Update ĂŒberschrieben werden) oder legt einen lokalen Programmstarter ~/.local/share/applications/mediatomb.desktop an:

/MT_03.png
BenutzeroberflÀche von MediaTomb
[Desktop Entry]
Name=MediaTomb
Comment=MediaTomb UPnP MediaServer web user interface
Exec=chromium-browser --incognito /var/lib/mediatomb/mediatomb.html
Icon=mediatomb.png
Terminal=false
Type=Application
Categories=AudioVideo;

Die OberflĂ€che ist in 3 Bereiche aufgeteilt. Links oben kann man zwischen den Anzeigemodi "Database" und "Filesystem" wechseln. Links unten findet man eine Verzeichnisstruktur in Baumdarstellung. Der große Bereich rechts beinhaltet die jeweiligen Inhalte und die SchaltflĂ€chen zur Interaktion mit dem Programm.

Anzeigemodus Database¶

/MT_04.png
Anzeigemodus Database

In diesem Modus werden alle freigegebenen Objekte angezeigt. Auf diese kann nun mit einem UPnP-fĂ€higen GerĂ€t ĂŒber das Netzwerk zugegriffen werden.

Zur Interaktion mit dem Programm stehen verschiedene SchaltflĂ€chen zur VerfĂŒgung. Die wichtigsten sind:

Anzeigemodus Filesystem¶

/MT_05.png
Anzeigemodus Filesystem

Dieser Modus zeigt das Dateisystem des verwendeten Computers an. Über die Baumstruktur kann man zu den Objekten navigieren, die freigegeben werden sollen. Dabei können sowohl einzelne Dateien oder auch ganze Ordner freigegeben werden. FĂŒr die Ordnerfreigabe besteht zusĂ€tzlich die Möglichkeit, eine automatische Aktualisierung des Inhalts zu aktivieren (autoscan). Dadurch wird der Inhalt des betroffenen Ordners innerhalb eines frei definierbaren Zeitintervalls auf VerĂ€nderungen ĂŒberprĂŒft.

Folgende SchaltflĂ€chen stehen zur VerfĂŒgung:

Problembehebung¶

OpenVPN¶

Unter UmstĂ€nden kann es zu Problemen kommen, wenn Mediatomb und OpenVPN gleichzeitig installiert sind. Das Problem Ă€ußert sich darin, dass die WeboberflĂ€che von Mediatomb zwar erreichbar ist, der eigentliche UPNP-Service aber nicht. Die Ursache ist hierfĂŒr, dass Mediatomb den UPNP-Service scheinbar an die Netzwerkschnittstelle tun0, welche von OpenVPN angelegt wird, bindet. Stattdessen soll Mediatomb sich an die ĂŒbliche Netzwerkschnittstelle binden, normalerweise also eth0 oder wlan0. Ein einfacher Eingriff in der Datei /etc/default/mediatomb löst das Problem:

...
# The network interface for MediaTomb to bind to and for which the multicast
# routing entry should be added; "" if the route shouldn't be added at all.
# For example: INTERFACE="eth0"
INTERFACE="eth0"
...

Firewall¶

NetzwerkgerĂ€te machen ihren UPnP-Dienst via UDP ĂŒber die Multicast-Adresse 239.255.255.250:1900 auf Basis des Simple Service Discovery Protocol (SSDP) bekannt. Von daher muss sichergestellt werden, dass die Firewall den UDP-Port 1900 nicht blockiert. Außerdem wird MediaTomb standardmĂ€ĂŸig fĂŒr die Kommunikation einen freien Port wĂ€hlen (ab 49152).

Die Ports fĂŒr MediaTomb können bei Verwendung von ufw auf folgende Weise zugelassen werden:

sudo ufw allow 1900/udp
sudo ufw allow 49152/tcp
sudo ufw allow 49152/udp 

UnabhÀngig davon, ob eine Firewall benutzt wird oder nicht, kann es sinnvoll sein, einen Zugang zur MediaTomb-Steuerung von anderen Rechnern im LAN zu verbieten. Ansonsten kann man das lokale Dateisystem via MediaTomb-GUI durchstöbern (http://SERVER-IP:49152). Man kann auch die Media-Dateien nur auf den bestimmten NetzwerkgerÀten abspielen zu lassen.

Hier ist ein Beispiel, wie sich solche Logik auf der Basis vom IP-Paketfilter iptables implementieren lĂ€ĂŸt.

Beispiel-IP-Adressen:

Regeln fĂŒr die Datei /etc/iptables.rules:

*filter
-A INPUT -s 192.168.0.111/32 -p tcp -m tcp --dport 49152 -j ACCEPT
-A INPUT -s 192.168.0.111/32 -p udp -m udp --dport 49152 -j ACCEPT
-A INPUT -s 192.168.0.100/32 -p tcp -m tcp --dport 49152 -j ACCEPT
-A INPUT -s 192.168.0.100/32 -p udp -m udp --dport 49152 -j ACCEPT
-A INPUT ! -s 127.0.0.1/32 -p tcp -m tcp --dport 49152 -j DROP
-A INPUT ! -s 127.0.0.1/32 -p udp -m udp --dport 49152 -j DROP
-A OUTPUT ! -d 239.255.255.250 -p udp -m udp --dport 1900 -j DROP
COMMIT

Darstellung von Umlauten¶

Dieses Problem resultiert daher, dass standardmĂ€ĂŸig kein erweiterter Zeichensatz spezifiziert ist. Das kann man durch folgende Schritte beheben.

Falls MediaTomb gerade lĂ€uft, sollte der Server zunĂ€chst gestoppt werden. Anschließend muss man mit einem Editor[3] mit Root-Rechten[4] die Datei /etc/mediatomb/config.xml editieren. Nun sucht man sich folgende Zeile heraus:

<import hidden-files="no"> 

Unterhalb dieser Zeile, fĂŒgt man folgende zwei xml-Knoten ein:

<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>

Nach dem Speichern der Datei und dem Start von MediaTomb, mĂŒssen die betreffenden Dateien einmal neu eingelesen werden. Dazu werden diese aus der Freigabeliste entfernt und neu hinzugefĂŒgt. Jetzt sollten die Umlaute korrekt dargestellt werden.

Fehlermeldungen bezĂŒglich der Datenbank¶

Es kann von Zeit zu Zeit vorkommen, dass die Datenbank-Datei fehlerhaft ist. Das macht sich z.B. durch Fehlermeldungen wie diese bemerkbar:

"error: database disk image is malformed"

Um dieses Problem zu beheben, muss MediaTomb gestoppt und die fehlerhafte Datenbank gelöscht werden:

sudo rm /var/lib/mediatomb/mediatomb.db 

Bei dem nĂ€chsten Start wird automatisch eine neue Datei angelegt. Zu beachten ist allerdings, dass auch sĂ€mtliche Freigaben neu angelegt werden mĂŒssen.

DLNA TVs (z.B. Samsung)¶

Einige FernsehgerÀte brauchen einen speziellen Abschnitt in der Datei /etc/mediatomb/config.xml, um die Inhalte vom Media-Server wiedergeben zu können:

1
2
3
4
5
6
7
<protocolInfo extend="yes"/><!-- For PS3 support change to "yes" -->
 
<custom-http-headers>
  <!-- Samsung needs it -->
  <add header="transferMode.dlna.org: Streaming"/>
  <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"/>
</custom-http-headers>

Intern¶

Extern¶