Deployment Overview of Mumble on Server¶
Prerequisites and Basic Requirements¶
The following requirements must be met on the target server to ensure a successful deployment of the Mumble voice server:
-
Operating System: Ubuntu (Linux)
-
Privileges: Root access or equivalent
sudoprivileges -
Docker Engine: Must be installed and running to manage containerized services
-
Domain Configuration: The server must be configured to resolve the
hostkey.indomain -
Network Ports:
-
TCP Port
443for HTTPS traffic -
TCP Port
64738for Mumble voice connections -
UDP Port
64738for Mumble voice connections
FQDN of the Final Panel¶
The public-facing Fully Qualified Domain Name (FQDN) for accessing the Mumble service on the hostkey.in domain follows the standard structure. The specific address is determined by the server identifier:
mumble<Server ID>.hostkey.in:443
Note: The Mumble application itself is accessed directly via the voice protocol port 64738, while the domain mumble<Server ID>.hostkey.in on port 443 is configured for the Nginx proxy layer.
File and Directory Structure¶
The application stores its persistent data and configuration files in specific locations on the host filesystem. The structure is as follows:
-
Mumble Data Directory:
/opt/mumble/data -
This directory serves as the primary storage volume for Mumble server data, including user accounts and voice settings.
-
Nginx Configuration Directory:
/root/nginx -
Contains the Docker Compose definition for the reverse proxy.
-
Nginx User Configuration:
/data/nginx/user_conf.d -
Holds specific configuration files for the Mumble domain within the Nginx proxy environment.
Application Installation Process¶
The Mumble voice server is deployed using Docker. The installation process involves pulling a specific container image and running it with persistent volume mapping.
-
Docker Installation: Ensure the Docker Engine is installed on the Ubuntu host.
-
Directory Creation: The data directory
/opt/mumble/datais created to persist application state. -
Image Retrieval: The container image is pulled from the Docker registry using the name
ajmandourah/mumble. -
Container Initialization: The container is launched with the following specifications:
-
Name:
mumble -
Restart Policy:
always(ensures the service restarts automatically after a reboot or crash) -
Volume Mapping: The host directory
/opt/mumble/datais mounted to the container path/data.
-
Docker Containers and Their Deployment¶
The deployment consists of two distinct containerized components: the Mumble server and the Nginx reverse proxy with Certbot.
Mumble Container¶
The Mumble container is managed directly via the Docker API or CLI. It exposes the voice service ports to the host.
-
Image:
ajmandourah/mumble -
Container Name:
mumble -
Port Mappings:
-
Host Port
64738(TCP) mapped to Container Port64738 -
Host Port
64738(UDP) mapped to Container Port64738 -
Volumes:
-
/opt/mumble/data:/data
Nginx and Certbot Container¶
The reverse proxy is deployed using a Docker Compose stack to handle SSL certificates and routing.
-
Compose File Location:
/root/nginx/compose.yml -
Service Name:
nginx -
Image:
jonasal/nginx-certbot:latest -
Restart Policy:
unless-stopped -
Environment Variables:
-
CERTBOT_EMAIL:[email protected] -
Network Mode:
host -
Volumes:
-
nginx_secrets(external) mounted at/etc/letsencrypt -
Host directory
/data/nginx/user_conf.dmounted at/etc/nginx/user_conf.d
To start or update the proxy stack, the docker compose up -d command is executed within the /root/nginx directory.
Proxy Servers¶
The infrastructure includes an Nginx reverse proxy to manage SSL/TLS termination and domain routing.
-
Proxy Software: Nginx running within a Docker container (
jonasal/nginx-certbot:latest). -
SSL/Certification: Managed automatically by Certbot integrated within the Nginx container.
-
Domain Configuration:
-
The proxy listens on port
443. -
Configuration files for specific domains are located in
/data/nginx/user_conf.d. -
The Nginx configuration is dynamically updated to include a
proxy_passdirective pointing to the internal service.
Available Ports for Connection¶
The following ports are exposed on the host server for external connections:
-
Port 443 (TCP): Used for HTTPS traffic to the Nginx proxy.
-
Port 64738 (TCP/UDP): Used for direct Mumble voice server connections.
Starting, Stopping, and Updating¶
Service management is handled through Docker commands.
Managing the Mumble Container¶
-
Start/Restart: Use
docker start mumbleordocker restart mumble. -
Stop: Use
docker stop mumble. -
Remove: Use
docker rm mumble. -
Update Image:
-
Pull the new image:
docker pull ajmandourah/mumble -
Recreate the container:
docker rm mumble && docker run -d --name mumble -v /opt/mumble/data:/data -p 64738:64738 -p 64738:64738/udp ajmandourah/mumble
Managing the Nginx Proxy Stack¶
-
Start/Update: Navigate to the compose directory and run the update command:
-
Stop:
-
View Logs:
Permission Settings¶
File and directory permissions are configured as follows during the deployment process:
-
Data Directory (
/opt/mumble/data): -
Owner:
root -
Group:
root -
Mode:
0755 -
Nginx Configuration Directory (
/root/nginx): -
Owner:
root -
Group:
root -
Mode:
0755 -
Nginx Compose File (
/root/nginx/compose.yml): -
Owner:
root -
Group:
root -
Mode:
0644