
Kürzlich hatte ich Gelegenheit, einen Mumble Server (aka „Murmur“) unter CentOS 6 aufzusetzen. Als Datenbank verwende ich MySQL und als Verwaltungsoberfläche das „MyMumb Panel“ (s. https://github.com/dieonar/MyMumb-Panel).
Nach der sehr einfachen Installation hat es beim Einrichten des init.d Scripts angefangen zu haken, weshalb meine Dokumentation (noch) etwas dünn ist. Ergänzungen folgen.
Vorbereitung
Murmur verwendet das nicht per default unter CentOS verfügbare „lsb“ Kommando beim starten des Dienstes. Da wir eine lästige Fehlermeldung und einen als „*defunct*“ markierten Prozess vermeiden wollen installieren wir das „redhat-lsb-core“ Paket:
yum install redhat-lsb-core
Installation & Konfiguration
Da ich erst mal keine Lust hatte, Murmur selbst zu kompilieren hab ich auf die „stable“ Binaries (s. http://sourceforge.net/projects/mumble/files/Mumble/) zurückgegriffen.
- Entpacken & Verzeichnisse erstellen
- MySQL Datenbank anlegen (oder die mitgelieferte .sqlite Datenbank verwenden)
- IPtables Portfreigabe: # Allow Mumble connections to Murmur server iptables -A INPUT -p udp –dport 64738 -j ACCEPT iptables -A INPUT -p tcp –dport 64738 -j ACCEPT
- Murmur.ini anpassen, dh. Zugangsdaten für die MySQL Datenbank hinterlegen, dBus deaktivieren, Pfade für Log- und PID-Dateien anpassen, etc.
- Ein init.d Startscript anlegen. (Beispiel weiter unten)
Bonus: MyMumb Management-Oberfläche mit ZeroC Ice einrichten
- (An dieser Stelle musste ich ZeroC Ice kompilieren, da keine passenden Binaries verfügbar waren – Anleitung folgt…)
- Aus dem Murmur Ice „slice“ die entsprechende php-Datei für MyMumb erzeugen… /opt/Ice-3.5.1/bin/slice2php -I/opt/Ice-3.5.1/slice Murmur.ice
- …und im MyMumb Verzeichnis ablegen mv Murmur.php /srv/www/mumble/htdocs/inc/
Beispiel fürs CentOS init.d Startup Script
#!/bin/bash # # /etc/rc.d/init.d/murmurd # # Murmur VoIP Server # # chkconfig: 345 70 30 # description: Murmur VoIP Server # processname: murmur.x86 # config: /etc/murmur.ini # pidfile: /var/run/murmur/murmur.pid # Source function library. . /etc/init.d/functions RETVAL=0 NAME=murmurd DESC="Murmur VoIP Server" PIDDIR=/var/run/$NAME PIDFILE=$PIDDIR/$NAME.pid INIFILE=/etc/murmur.ini LOCKFILE=/var/lock/subsys/murmur DAEMON=/usr/local/murmur/murmur.x86 DAEMON_OPTS="-ini $INIFILE" USER=murmur GROUP=murmur start() { echo -n "Starting $NAME: " daemon --user $USER $DAEMON $DAEMON_OPTS RETVAL=$? [ $RETVAL -eq 0 ] && touch $LOCKFILE echo return $RETVAL } stop() { echo -n "Shutting down $NAME: " killproc $DAEMON RETVAL=$? [ $RETVAL -eq 0 ] && rm -f $LOCKFILE echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; status) status murmur ;; restart|reload|condrestart) stop start ;; *) echo "Usage: $NAME {start|stop|status|reload|restart[|probe]" exit 1 ;; esac exit $RETVAL