Natenoms Wiki

Weil Teilen Spaß macht :)

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite:

Navigation



mumble:tools:mumo:mumo-installation

Installation von MuMo (MumbleModerator)

Ich habe diese Anleitung im März 2020 aktualisiert und auf einem aktuellen Debian 10.3 ausprobiert. MuMo funktioniert darauf ohne Probleme.

Was ist MuMo?

MuMo ist eine super Sache, vor allem weil es damit sehr einfach ist, eigene Module zu entwickeln um die Funktionalität eines Mumble-Servers zu erweitern.

Es gibt noch weitere Module für MuMo.

Voraussetzungen

  • Wir gehen von einem aktuellen Debian 10 aus; ab dem Punkt „MuMo einrichten“ spielt das System aber eher keine Rolle mehr.
  • Es sollte ein Mumble-Server auf derselben Maschine laufen; wie das geht, steht hier: Mumble-Server (Murmur) installieren.

Anleitung

Vorbereitung

Für die ersten Schritte benötigt man root-Rechte.

Benötigte Pakete (auf einem Debian 10):

  • python-zeroc-ice – Python-Bindings, damit man Ice in Python verwenden kann.
  • zeroc-ice-slice – Enthält die .ice-Dateien.
  • git-core – Damit holen wir uns die aktuelle Version von MuMo.
  • python-daemon – Damit MuMo später als Daemon laufen kann, muss dieses Paket installiert werden. Für die Verwendung der mumo.service ist das Paket nicht notwendig.

Man installiert alle Pakete mit:

apt-get install git-core python-zeroc-ice zeroc-ice-slice python-daemon

Schon der Sicherheit wegen legen wir einen neuen Benutzer an:

adduser mumo

Ice im Mumble-Server aktivieren

Um Ice im Mumble-Server zu aktivieren, muss man die Konfiguration des Mumble-Servers bearbeiten; als root. Auf Debian liegt sie in /etc/mumble-server.ini.

Dort muss man das #-Zeichen vor der Zeile ice=„tcp -h 127.0.0.1 -p 6502“ entfernen und den Mumble-Server neustarten mit systemctl restart mumble-server.

MuMo holen

Jetzt melden wir uns an dem neu angelegten Account an:

su - mumo

Und clonen uns die Projektdaten von MuMo auf die Platte:

git clone https://github.com/mumble-voip/mumo

Das Ergebnis landet im Unterordner mumo.

MuMo einrichten

Dorthin wechselt man nun:

cd mumo

Der folgende Abschnitt Info nur für Murmur <1.2.4 anzeigen ist nur notwendig, wenn man einen Mumble-Server verwendet, der älter ist als Version 1.2.4. Neuere Versionen des Mumble-Servers liefern die Ice-Schnittstellenbeschreibung direkt an MuMo. </WRAP>

Info nur für Murmur <1.2.4 anzeigen

Info nur für Murmur <1.2.4 anzeigen

Damit MuMo auch auf einem Mumble-Server <1.2.4 funktioniert, braucht es die Schnittstellenbeschreibung für den Mumble-Server (Murmur); diese befindet sich z. B. in Debian nach der Installation des Pakets mumble-server in /usr/share/slice/Murmur.ice.

Hat man jedoch nicht die Paketquellen verwendet, sondern sich eine Static-Version installiert, so sollte man die im Murmur-Archiv vorhandene Datei Murmur.ice z. B. nach /usr/share/slice/Murmur.ice kopieren.

In beiden Fällen muss man entsprechend in der Konfiguration von MuMo den Pfad anpassen:

sed -i 's#slice =.*#slice = /usr/share/slice/Murmur.ice#' mumo.ini



Module aktivieren

Die Liste aller verfügbaren Module findet man in mumo/modules-available/.

Um ein Modul zu aktivieren, wechselt man zuerst in das Verzeichnis mumo/modules-enabled und erstellt dann dort einen Symlink auf die .ini-Datei des jeweiligen Moduls in mumo/modules-available, z. B.:

cd modules-enabled && ln -s ../modules-available/onjoin.ini && cd -

Wenn das Verzeichnis mumo/modules-enabled nicht existiert, dann erstellt man es mit:

mkdir /home/mumo/mumo/modules-enabled

Icesecret

Wenn man zur Absicherung von Ice Murmur-seitig ein Passwort verwendet, so muss man dieses noch in der mumo.ini eintragen; es muss das Passwort verwendet werden, welches in der murmur.ini/mumble-server.ini als „icesecretwrite“ hinterlegt ist.
Anscheinend muss hier in jedem Fall ein Passwort hinterlegt werden, da MuMo sonst wohl nicht startet 1).

secret = deinpasswort

Beispiele

Hier als Beispiel eine komplette mumo.ini, anklicken zum Anzeigen:

Anklicken zum Anzeigen

Anklicken zum Anzeigen

;
;Ice configuration
;
[ice]

; Host and port of the Ice interface on
; the target Murmur server.

host = 127.0.0.1
port = 6502

; Slicefile to use (e.g. /etc/slice/Murmur.ice), 
; if empty MuMo will load the slice file from the
; target server at startup.

slice = 

; Semicolon seperated list of slice include directories
; to consider. This is only used on legacy platforms
; with old or broken Ice versions.
slicedirs = /usr/share/slice;/usr/share/Ice/slice

; Shared secret between the MuMo and the Murmur
; server. For security reason you should always
; use a shared secret.

secret =

;Check Ice connection every x seconds

watchdog = 15

[murmur]
; Comma seperated list of server ids to listen on (empty for all)
; note that if a server isn't listed here no events for it can
; be received in any module
servers = 

[modules]
mod_dir = modules/
cfg_dir = modules-enabled/
timeout = 2

[system]
pidfile = mumo.pid


; Logging configuration
[log]
; Available loglevels: 10 = DEBUG (default) | 20 = INFO | 30 = WARNING | 40 = ERROR

level =
file = mumo.log


[iceraw]
Ice.ThreadPool.Server.Size = 5



Und hier der Verzeichnisbaum einer MuMo-Installation mit den für die Module relevanten Teilen, anklicken zum Anzeigen:

Anklicken zum Anzeigen

Anklicken zum Anzeigen

/home/mumo
|-- modules
|   |-- antirec.py
|   |-- antirec.pyc
|   |-- bf2.py
|   |-- deaftoafk.py
|   |-- deaftoafk.pyc
|   |-- idlemove.py
|   |-- idlemove.pyc
|   |-- onjoin.py
|   |-- onjoin.pyc
|   |-- seen.py
|   |-- seen.pyc
|   |-- test.py
|   |-- test.pyc
|   |-- wrongversion.py
|   `-- wrongversion.pyc
|-- modules-available
|   |-- antirec.ini
|   |-- bf2.ini
|   |-- deaftoafk.ini
|   |-- idlemove.ini
|   |-- onjoin.ini
|   |-- seen.ini
|   |-- test.ini
|   `-- wrongversion.ini
|-- modules-enabled
|   |-- antirec.ini -> ../modules-available/antirec.ini
|   |-- deaftoafk.ini -> ../modules-available/deaftoafk.ini
|   |-- seen.ini -> ../modules-available/seen.ini
|   `-- wrongversion.ini -> ../modules-available/wrongversion.ini



MuMo starten

Nun kann man MuMo starten:

python mumo.py -a

Fertig :)

Mit Strg+C beendet man MuMo wieder.

Als Daemon laufen lassen

Hier gibt es drei Möglichkeiten, empfohlen wird die erste.

Systemd Service Script

Die folgende Datei legt man ab in /etc/systemd/system/.

mumo.service
[Unit]
Description=Mumble Moderator
After=network.target
 
[Service]
User=mumo
WorkingDirectory=/home/mumo/mumo/
#PIDFile=/home/mumo/FIXME
ExecStart=/usr/bin/python2.7 mumo.py -i mumo.ini --app
Restart=always
 
[Install]
WantedBy=multi-user.target

Dann führt man als root aus:

systemctl daemon-reload

gefolgt von

systemctl enable mumo.service

System V Init-Script

In diesem Abschnitt muss man mit root-Rechten arbeiten oder mit sudo unter Ubuntu.

Das Init-Script wird in MuMo mitgeliefert. 2)

Man kopiert das Script nach /etc/init.d/mumo.

Es ist noch notwendig, den Arbeitspfad im Script an unseren anzupassen, aus

WORKDIR=/opt/mumo

wird

WORKDIR=/home/mumo/mumo

Jetzt macht man das Script ausführbar mit

chmod a+x /etc/init.d/mumo

Und nun aktiviert man es für die entsprechenden Runlevel mittels:

update-rc.d mumo defaults

Beim nächsten Systemstart startet MuMo nun automatisch mit. Um es direkt zu aktivieren, startet man es mit:

/etc/init.d/mumo start

MuMo manuell starten

Damit MuMo als Daemon läuft und sich direkt in den Hintergrund verabschieded, startet man MuMo mit dem Parameter -d:

python mumo.py -d

Weitere Module

Weitere Module für MuMo gibt es z. B. hier: Module für MuMo.

Probleme

Lockfile

Wenn MuMo nicht als Daemon startet und im Logfile z. B. Folgendes steht:

Traceback (most recent call last):
File “mumo.py”, line 535, in
context.__enter__()
File “/usr/lib/pymodules/python2.7/daemon/daemon.py”, line 352, in __enter__
self.open()
File “/usr/lib/pymodules/python2.7/daemon/daemon.py”, line 344, in open
self.pidfile.__enter__()
File “/usr/lib/pymodules/python2.7/lockfile.py”, line 223, in __enter__
self.acquire()
File “/usr/lib/pymodules/python2.7/daemon/pidlockfile.py”, line 109, in acquire
super(TimeoutPIDLockFile, self).acquire(timeout, *args, **kwargs)
File “/usr/lib/pymodules/python2.7/daemon/pidlockfile.py”, line 59, in acquire
super(PIDLockFile, self).acquire(*args, **kwargs)
File “/usr/lib/pymodules/python2.7/lockfile.py”, line 261, in acquire
raise LockTimeout
lockfile.LockTimeout

Dann muss man im MuMo Hauptordner die Datei mumo.pid.lock löschen, dann geht es wieder.

mumble/tools/mumo/mumo-installation.txt · Zuletzt geändert: 2020/06/01 23:14 (Externe Bearbeitung)