Murmur
murmur is the server components for using our mumble chat/VOIP service.
Our murmur server is running on toussaint.
SuperUser
To have full admin access, login with the username: SuperUser
You will be prompted for a password (which is in keyringer).
If you ever need to change the password, run:
murmurd -ini /etc/mumble-server.ini -supw <password>
Registered users
Anyone can freely join the the mumble chat without a password or pre-approval.
However, there is no guarantee they will be allowed to use the same username unless they register their username by right clicking on their username and choosing to register.
This registration process associates their username with the key generated by their client - and the username and key fingerprint are stored on the server. They will now always be logged in with this username no matter what they enter when they initially join the chat.
Unless... they login as the SuperUser with the right password.
If you login as the SuperUser, you can select Server -> Registered Users to see a list of users who have chosen to register.
Admin Group
Members of the admin group can:
- Drag people into a room
- Mute/Deafen and kick/ban people
- Make a permanent channel
To add a user to the admin group.
- Login with the new username.
- Right click on your username and click register.
- Login as the SuperUser.
- Then right click on Root and select Edit.
- Click Groups.
- Type: admin and hit enter
- Type a new username and click add.
More on ACLs
Settting ACLs is very complicated and powerful.
The full documentation is available.
In short:
- Login as SuperUser
- Right Click on root channel and click Edit
- Click ACL tab
- You will see a list of groups on the left
- Click on each group to see their permissions
- The first "all" group shows the default permissions for everyone. You can't edit those.
- The second "all" groups shows the added permissions we have added to all users (the ability to register themselves and make temporary channels)
- The next "admin" group shows the extra permissions we have given to people in the admin group
Broadcast Bots
Overview
Our murmur server comes with three broadcast bots: en-bot, es-bot and o-bot
These bots are designed to allow listeners to follow the conversations via a web site. They each broadcast portions of a meeting, via icecast, to https://participate.mayfirst.org/ and they save a recording.
The bots are installed on toussaint (same server that murmur is installed on).
They broadcast to b.stream.mayfirst.org (aka sankara). They recordings are also saved on sankara (in /srv/icecast and configured via the dump-file icecast.xml directive).
For mono-lingual meetings, you only need o-bot (original language bot). Just turn it on and you are done.
If you have a meeting with interpretation, then you will need to use en-bot and es-bot.
How to use them
Everytime icecast2 is restarted on sankara or murmur is restarted on toussaint, the bots will drop out and need to be restarted.
To restart, login to toussaint and use systemctl (e.g.systemctl restart o-bot; systemctl restart o-bot
)
Once started,they should appear in mumble in the "Meeting" room and the "Meeting/Interpret" room.
By default, they are not broadcasting to icecast2 - you should instead hear the "fallback" music.
To begin broadcast and recording, send a private message to each both with: "/start". You can stop recording with: "/stop".
en-bot should be dragged into the main room when English is spoken, and into the Interpretation room when Spanish is spoken so that it always broadcast in English. An administrator is responsible for moving this bot during the meeting.
es-bot should be dragged into the main room when Spanish is spoken, and into the Interpretation room when English is spoken so that it always broadcast in Spanish. An administrator is responsible for moving this bot during the meeting.
Administrators can drag and the bots to whatever channel you like.
Installation
- Install cython (python c bindings library) and python-dev and ffmpeg and python-protobuf
- In /usr/local/share, git clone both https://github.com/Robert904/pymumble and https://github.com/Robert904/mumblerecbot
- Pull in this change to mumblerecbot: https://github.com/Robert904/mumblerecbot/pull/10/files
- In /usr/local/share/mumblerecbot:
git remote add jmcclelland https://github.com/jmcclelland/mumblerecbot.git
git remote update jmcclelland
git cherry-pick c5416a80fa278ff77b5f49d68856000089589dfc
- In /usr/local/share/mumblerecbot:
- In /usr/local/share/pymumble/pycelt edit the Makefile:
- Comment out
export PLATFORM = MINGW32
and uncomment#export PLATFORM = UNIX
- Comment out
export CONFIGURE_OPTS = ""
and uncoment#export CONFIGURE_OPTS = "--with-pic"
- Type:
make
- Comment out
- In /usr/local/share/pymumble/pyopus edit the Makefile:
- Comment out
export PLATFORM = MINGW32
and uncomment#export PLATFORM = UNIX
- Comment out
export CONFIGURE_OPTS = ""
and uncoment#export CONFIGURE_OPTS = "--with-pic"
1 Type:make
- Comment out
- In /usr/local/share/mumblerecbot/mumblerecbotfast edit the Makefile:
- Comment out:
PLATFORM = MINGW32
- Write instead:
PLATFORM = UNIX
(ensure you have no trailing spaces) - Type:
make
- Comment out:
- In /usr/local/share/mumblerecbot/, create a symlink to pymumble:
ln -s ../pymumble
- Create /etc/mumblerecbot/{en-bot,es-bot, o-bot}
- Copied constant.py to config.py in each directory and edited
- For ENCODER, use (change en-bot to o-bot or es-bot as needed):
ENCODER = "ffmpeg -f s16le -ar 48000 -ac 2 -i - -codec:a libmp3lame -b:a 16k -ac 1 -ar 22050 -content_type audio/mpeg -f mp3 icecast://en-bot:XXXXXXXXXXXXXX@b.stream.mayfirst.org:8000/en-bot.mp3 -c:a libvorbis -content_type audio/webm -f webm icecast://en-bot:XXXXXXXXXXXXXXXXXXXX@b.stream.mayfirst.org:8000/en-bot.webm"
- For ENCODER, use (change en-bot to o-bot or es-bot as needed):
- Create var for pid file and logs
- Copied constant.py to config.py in each directory and edited
- Create user
mumblerecbot
and chowned the var directory to this user - Created /etc/systemd/system/{en-bot,es-bot, o-bot}.service files and enabled them
Music Bot
In addition, we have a music-bot that plays music in the channel. It usually hangs out in the dance-party channel.
This bot is useful for webinars. You can place the broadcast bots in the danceparty channel, along with the music bot, about 15 minutes before the webinar starts. Then, start the broadcast bots.
When you are ready to start the webinar, pull the broadcast bots into your channel.
Then, the listeners experience an immediately transition from the music to the start of the webinar.
Using the music bot
Play music by sending the music-bot the command: !play luna
(luna can be replaced with any of the streams listed in /usr/local/share/MumbleRadioBot/configuration.ini or an URL to a live radio station).
Stop music by sending: !stop.
Installation, Upgrade, and admin
The music bot is installed on toussaint via the music-bot systemd service file:
systemctl start music-bot
The music bot was installed via:
apt-get install python3-pip cd /usr/local/share git clone --recurse-submodules https://github.com/azlux/MumbleRadioPlayer.git cd ./MumbleRadioPlayer pip3 install -r requirements.txt chmod +x ./mumbleRadioPlayer.py
It can be upgrade via:
cd /usr/local/share/MumbleRadioBot git pull
Access Mumble via the web
NOTE: The audio quality is bad and this client should not be used.
You can now access mumble via the web:
https://mumble.mayfirst.org/?address=mumble.mayfirst.org&port=443/mumble
The following steps were taken to make this possible:
websockify
was installed via apt-get. I added a user websockify and the following systemd file in /etc/systemd/system/websockify.service:[Unit] Description=Websockify provides a wss communications layer between the web client and mumble. [Service] ExecStart=/usr/bin/websockify --ssl-target 64737 localhost:64738 User=websockify Group=websockify [Install] WantedBy=multi-user.target
- I created a mumble-web user
- I installed the latest stable releases of node/npm via the upstream web site and unpacked them in /home/mumble-web/bin
- I created a /srv/mumble-web directory and symlinked to /home/mumble-web/mumble-web
- I ran
git clone https://github.com/johni0702/mumble-web /srv/mumble-web/
followed bycd mumble-web
andnpm install
andnpm run build
- I added an nginx configuration file.
Modifications
See: https://github.com/Johni0702/mumble-web/issues/26
Upgrading
Upgrades to websockify should happen automatically via debian.
To upgrade to the latest mumble-web code, run the following as the mumble-web user:
cd /srv/mumble-web git pull node install node build run
See above for modifications that have been made.