wiki:murmur

Version 25 (modified by https://id.mayfirst.org/jamie, 6 months ago) (diff)

--

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

  1. Install cython (python c bindings library) and python-dev and ffmpeg and python-protobuf
  2. In /usr/local/share, git clone both https://github.com/Robert904/pymumble and https://github.com/Robert904/mumblerecbot
  3. Pull in this change to mumblerecbot: https://github.com/Robert904/mumblerecbot/pull/10/files
    1. In /usr/local/share/mumblerecbot:
      1. git remote add jmcclelland https://github.com/jmcclelland/mumblerecbot.git
      2. git remote update jmcclelland
      3. git cherry-pick c5416a80fa278ff77b5f49d68856000089589dfc
  4. In /usr/local/share/pymumble/pycelt edit the Makefile:
    1. Comment out export PLATFORM = MINGW32 and uncomment #export PLATFORM = UNIX
    2. Comment out export CONFIGURE_OPTS = "" and uncoment #export CONFIGURE_OPTS = "--with-pic"
    3. Type: make
  5. In /usr/local/share/pymumble/pyopus edit the Makefile:
    1. Comment out export PLATFORM = MINGW32 and uncomment #export PLATFORM = UNIX
    2. Comment out export CONFIGURE_OPTS = "" and uncoment #export CONFIGURE_OPTS = "--with-pic" 1 Type: make
  6. In /usr/local/share/mumblerecbot/mumblerecbotfast edit the Makefile:
    1. Comment out: PLATFORM = MINGW32
    2. Write instead: PLATFORM = UNIX (ensure you have no trailing spaces)
    3. Type: make
  7. In /usr/local/share/mumblerecbot/, create a symlink to pymumble: ln -s ../pymumble
  8. Create /etc/mumblerecbot/{en-bot,es-bot, o-bot}
    1. Copied constant.py to config.py in each directory and edited
      1. 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"
        
    2. Create var for pid file and logs
  9. Create user mumblerecbot and chowned the var directory to this user
  10. 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 by cd mumble-web and npm install and npm 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.