Der in dieser Anleitung verwendete Bot wird nicht mehr weiterentwickelt und es kann sein, dass die Anleitung nicht mehr funktioniert.
Es wird empfohlen, den Nachfolder des Bots zu verwenden. Eine Installationsanleitung dafür gibt es unter http://mumble-ruby-pluginbot.readthedocs.io/en/master/installation_howto.html.
Pro Mumble-Bot laufen je eine Instanz des MPD (Music Player Daemon), die Musik an eine Named Pipe schickt und ein Mumble-Ruby-Bot, der diesen Stream an den Mumble-Server sendet.
Das großartige daran ist, dass Mumble-Ruby seit kurzem Opus verwendet.
MPD spielt dabei eine definierte Playlist ab, die einzelne Stücke oder auch Radiosender enthalten kann.
Mit dem Programm mpc kann man MPD steuern.
Alternativ lässt sic zum Steuern von MPD z. B. der Web-Client Rompr verwenden, diese wird jedoch hier nicht behandelt.
Um direkt die Möglichkeit zu haben, mehrere Bots laufen zu lassen, läuft die Konfiguration nach folgendem Schema ab:
Folgende Verzeichnisstruktur wird es am Ende dieser Anleitung geben:
/home/botmaster/ ├── mpd1 │ ├── playlists │ ├── mpd1.log │ ├── mpd.conf │ ├── mpd.fifo │ ├── pid │ ├── state │ ├── sticker.sql │ └── tag_cache ├── mumble-ruby │ └── [...] ├── music ├── scripts │ ├── mumble-ruby-mpd-bot.rb │ ├── start-all-mpd.sh │ └── start-all-mumble-ruby-bots.sh ├── user_certificates │ └── bot1_test_cert [...]
Unter Debian müssen folgende Abhängigkeiten als root oder mit sudo installiert werden:
apt-get install mpd mpc tmux bzip2 patch
Die Meldung am Ende über die fehlende Datenbank „/var/lib/mpd/tag_cache“ kann man ignorieren, diese wird später automatisch angelegt.
Da der System-weit installierte MPD nicht benötigt wird, deaktiviert man ihn, indem man als root oder mittels sudo in in der Datei /etc/default/mpd
die Variable START_MPD
von true nach false ändert; somit wird der Dienst beim nächsten Systemstart nicht mehr gestartet.
Siehe unter Mumble-Ruby installieren.
Ausgehend von der oben genannten Anleitung zur Installation von Mumble-Ruby führt man noch folgende Kommandos zur Vorbereitung aus:
su - botmaster
source ~/.rvm/scripts/rvm
rvm use @bots
Nun installiert man die benötigte Ruby-Bibliothek, damit Mumble-Ruby mpd steuern kann:
rvm @bots do gem install ruby-mpd
mkdir /home/botmaster/scripts
mkdir /home/botmaster/music
mkdir /home/botmaster/user_certificates
Verzeichnisse für Bot 1 erstellen:
mkdir -p /home/botmaster/mpd1/playlists
Konfiguration für Bot 1 herunterladen und an den richtigen Ort ablegen:
wget https://github.com/Natenom/mumble-ruby-related/raw/master/configs/mpd.conf -O ~/mpd1/mpd.conf
Für Bot 1 sind keine Anpassungen notwendig, für jeden weiteren Bot muss jedes Vorkommen der Zahl „1“ durch „2“, usw. ersetzt werden.
Das folgende Script wird verwendet, um einen Bot auf den Server zu bringen und automatisch Musik von einer MPD-Instanz senden zu lassen.
Script herunterladen und am passenden Ort ablegen:
wget https://github.com/Natenom/mumble-ruby-related/raw/master/scripts/mumble-ruby-mpd-bot.rb -O ~/scripts/mumble-ruby-mpd-bot.rb
Das Script kann man hier ansehen. Es ist eine angepasste Version von einem der SuperTux's bots, die zusätzlich Parameter kennt.
Die Tastenkombination Strg+C beendet den Bot.
Syntax für das Script:
mumbleserver_host mumbleserver_port mumbleserver_username mumbleserver_userpassword mumbleserver_targetchannel quality_bitrate mpd_fifopath mpd_path mpd_host mpd_port
Für Bot 1:
ruby /home/botmaster/scripts/mumble-ruby-mpd-bot.rb mumble.natenom.com 64738 Bot1_Test "" "Sitzecke" 96000 /home/botmaster/mpd1/mpd.fifo localhost 7701
Ein Start würde jetzt natürlich noch nicht funktionieren, da MPD nicht läuft.
Vorsicht bei der Qualitätsangabe:
Wenn der Server nur eine beschränkte Bandbreite erlaubt 1), dann darf hier maximal die vom Mumble-Server erlaubte Qualität verwendet werden, denn Mumble-Ruby hält sich nicht an angegebene Beschränkungen und sendet mit eingestellter Bandbreite, was dann auf solchen Server dazu führt, dass die Bots beginnen zu stottern.
Erzeugtes Zertifikat:
Für jeden Benutzernamen wird beim Start des Scripts im aktuellen Arbeitspfad ein neues Verzeichnis namens BOTNAME_cert erstellt, welches das automatisch erstellte Client-Zertifikat des Bots enthält. Dieses Verzeichnis kann man nach dem Test löschen.
In die folgende Datei werden alle MPD-Instanzen eingetragen und dann gestartet:
Script herunterladen und am passenden Ort ablegen:
wget https://github.com/Natenom/mumble-ruby-related/raw/master/scripts/start-all-mpd.sh -O ~/scripts/start-all-mpd.sh
Dann muss man es noch ausführbar machen:
chmod u+x /home/botmaster/scripts/start-all-mpd.sh
Das folgende Bash-Script dient zum Starten aller Mumble-Ruby-Bots. Aufgrund der anfangs genannten Problematik, dass im Hintergrund gestartete Ruby-Scripte keine Musik senden, wird jeder Bot in einer eigenen TMUX-Sesssion gestartet.
Das Script herunterladen und am passenden Ort ablegen:
wget https://github.com/Natenom/mumble-ruby-related/raw/master/scripts/start-all-mumble-ruby-bots.sh -O /home/botmaster/scripts/start-all-mumble-ruby-bots.sh
Ansehen kann man das Script hier.
Es startet nur unseren ersten Bot 1; für weitere Bots einfach das Script entsprechend anpassen.
Das Script muss noch ausführbar gemacht werden:
chmod u+x /home/botmaster/scripts/start-all-mumble-ruby-bots.sh
Nun kann man alles testen, indem man beide Script nacheinander startet:
/home/botmaster/scripts/start-all-mpd.sh
/home/botmaster/scripts/start-all-mumble-ruby-bots.sh
Jetzt sollte sich auf dem Mumble-Server ein Bot befinden, der Musik von TheRadio.cc abspielt.
Vergiss nicht, im script „/home/botmaster/scripts/start-all-mumble-ruby-bots.sh“ die Daten für den Mumble-Server anzupassen, auch den Kanalnamen.
Damit bei einem Reboot alles automatisch startet, trägt man als root Folgendes in die /etc/rc.local ein:
su - botmaster -c "/home/botmaster/scripts/start-all-mpd.sh" & su - botmaster -c "/home/botmaster/scripts/start-all-mumble-ruby-bots.sh" &
Die Streams sind immer wieder abgebrochen, dies ist allerdings ein Problem von mpd; es hilft, wenn man in regelmäßigen Abständen per Cron einfach folgendes ausführt:
#!/bin/bash for i in $(seq 1 9); do mpc -p 770${i} play; done
In die crontab fügt man einfach folgende Zeile ein:
*/10 * * * * ./refreshmpd.sh
Keine Sorge, der Stream wird nicht neu gestartet, wenn man play ausführt, während der MPD sendet.