Johni0702 / mumble-web

An HTML5 Mumble client
681 stars 151 forks source link

docker-compose config #179

Closed wjtk4444 closed 2 years ago

wjtk4444 commented 3 years ago

Any chances of getting an example docker-compose config for murmur (optional), mumble-web and mumble-web-proxy? I'm trying to make it work, almost there I think, however, while it looks like it all works, web client doesn't send/receieve audio (even though voice activity indicators are working). Here's my setup (commented-out lines were attempts at making it work, failed ones):

EDIT: Fixed. Updated config files below in case someone might find them helpful:

version: '3'

services:
  murmur:
    image: mattikus/murmur
    restart: always
    ports:
      - <my_external_nondefault_port>:64738
      - <my_external_nondefault_port>:64738/udp
    volumes:
      - ./murmur/murmur.ini:/etc/murmur.ini
      - ./murmur/data:/data
      - /etc/letsencrypt/live/<mumble.my.domain>/fullchain.pem:/certs/fullchain.pem
      - /etc/letsencrypt/live/<mumble.my.domain>/privkey.pem:/certs/privkey.pem

  mumble-web-proxy:
    image: leoverto/mumble-web-proxy
    restart: always
    depends_on:
      - murmur
    ports: 
      - 127.0.0.1:64737:64737
      - 20000-20100:20000-20100
    environment:
      - MUMBLE_SERVER=<mumble.my.domain>:<my_external_nondefault_port>
      - ICE_PORT_MIN=20100
      - ICE_PORT_MIN=20100
      - ICE_IPV4=<mumble.my.domain's resolved ipv4 address>

  mumble-web:
    image: leoverto/mumble-web
    restart: always
    depends_on:
      - murmur
      - mumble-web-proxy
    ports: 
      - 127.0.0.1:8080:8080
    volumes:
      - ./mumble-web/config.local.js:/home/node/dist/config.local.js
    environment:
      - MUMBLE_SERVER=mumble-web-proxy:64737

config.local.js

let config = window.mumbleWebConfig 
config.defaults.address = 'mumble.<my.domain>/webrtc'
config.defaults.webrtc = true
config.defaults.port = 443

/etc/nginx/sites-enabled/mumble..conf

server {
   server_name mumble.<my.domain>;

   listen 80;
   listen [::]:80; 

   return 301 https://$host$request_uri;
}

server {
    server_name mumble.<my.domain>;

    listen 443 ssl http2;
    listen [::]:443 ssl http2; 

    root /var/www/html/mumble.<my.domain>;
    index index.html index.php;

    error_page 400 401 403 404 500 502 503 /error.html;
    location = /error.html {
        internal;
        ssi on;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

    location /web/ {
        proxy_pass http://localhost:8080/;
    }

    location /webrtc {
        proxy_pass http://localhost:64737;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    ssl_certificate /etc/letsencrypt/live/<my.domain>/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/<my.domain>/privkey.pem; # managed by Certbot
}