[How-to] Host FiveM's voice chat (mumble) in another server

Hello,

This tutorial covers a short step by step explanation on “how to host fivem’s voice chat in another server”. It could be relevant for you to run the voice chat outside of FXServer for several reasons: performance, DDoS protection. In this tutorial, we aim to deploy the voice server in Linux, but it should be the same steps with Windows.

Requirements

  • Docker
  • Go

Setup

IT MAY BE BETTER TO USE MURMUR INSTEAD OF GRUMBLE FOR STABILITY REASON

We are going to use Grumble. Grumble is an implementation of a server for the Mumble voice chat system. It is an alternative to Murmur, the typical Mumble server.

Installation

git clone https://github.com/mumble-voip/grumble.git
cd grumble
go get mumble.info/grumble/cmd/grumble
docker build -t mumble-voip/grumble .

Deploy with docker

docker run \
  -v $HOME/.grumble:/data \
  -p 64738:64738 \
  -p 64738:64738/udp \
  mumble-voip/grumble

If you want to deploy the voice chat on another port with the same IP you also need to change the default port of grumble in cmd/grumble/server.go.

Join the server

A new native has been introduced MUMBLE_SET_SERVER_ADDRESS to set the server the user should join. This means that you can use and deploy multiple servers.

Example

MumbleSetServerAddress('127.0.0.1', 64738)
return MumbleIsConnected()

This will be supported by FiveM once https://github.com/citizenfx/fivem/pull/498 is merged.

9 Likes

Love it!

Great work, will definitely try it :slight_smile:

Awesome !

Hello I’ve successfully implemented this but for some reason when some people join this error happens on grumble, I’ve tried googling it but no success in finding the solution.

No idea yet, do you have some way to reproduce it?

Sure, I’ve implemented a reconnect feature and that triggers it way more than usual. Just use the native MumbleIsConnected to check the connection in a thread, if its not connected set it to connect again with the native. (Have to be a certain amount of players for it work, sometimes it worked with 2, other times with 8 and more, worked with 2 when second player joined after me.) @PichotM

why are you doing that, there is already a reconnecting feature in fivem

I’m no longer doing that because I saw that it auto reconnects, I’m just saying that if you do that it will trigger this error easier than normally. Even without this eventually at some point this error happens and crashes grumble.

Another crash.

So i was setting this up and what i get to know that in grumble user can create the channels then how it gonna work if you know how to fix their ALC then pls help me

It’s not working for me, i’m using mumble-voip resource by Frazzle, it’s working perfect without external voice server, but when i config the external server i can’t hear anyone.

This is how voice server console look (btw i’m using Ubuntu 20.04, i also tried on Ubuntu 19.04)

I tried to just use default voice-chat and just use these lines in client-side

MumbleSetServerAddress('51.68.173.254', 64738)
return MumbleIsConnected() -- it's returning: 1 (number)

Same result ! I can’t hear anyone, they appear in voice server console.

Configuration in mumble-voip:
image

I tested it on artifact 2430 ( recomended until yesterday ), and on artifact 2947. both windows.
I’m using it with onesync Infinity.

Any advices ?

So I was able to implement this and it seems to be working fine. The only issue we are seeing are the phone calls can be listener by nearby players to the one speaking on the phone and viseversa.

Also the grumble server seems to be really unstable so I have been trying to get murmur(mumble-server) to work instead since it runs native and not trough docker but im ghetting this on the client when trying to connect. Anyone knows how I could resolve this TLS issue?

Watch the new fxserver. Mumble updated.

Will do, thanks

Good job guys I got it working with murmur
@PichotM MumbleCreateChannel is not working when using an external server right?
Also MumbleIsConnected is still returning 1 if I shutdown murmur, is it intended?
Thank :slight_smile:

Anyone looking to make it work with murmur - just change the accepted username pattern to pass spaces:

username=[ -=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+

eventually just accept anything:

username=(.*)+

If anyone could make a guide for windows that would be swell ^^

Also, does anyone have an idea or know how many players the normal mumble can hold, and if there is any (100 players = Mute all) like on ts, and if so, how to disable it (Both standard and external answers could be awesome, to guide most amount of people)

I highly recommend to don’t use this for these reasons:

  1. It’s unstable and there is a possibility of a crash
  2. It’s not secured and it does not require any kind of authentication so whoever dumps your server and gain access to that IP and Port can connect to your mumble-server
  3. MumbleIsConnected still return true when you close the mumble server
1 Like

ok lmao

btw use murmur directly it is more stable than grumble