Deployment Overview of MCSManager and Palworld Server on Server¶
Prerequisites and Basic Requirements¶
-
Operating System: Ubuntu (compatible with
aptpackage manager). -
Privileges: Root access or
sudoprivileges are required to install Docker and manage system services. -
Domain: A valid domain name (
panel_domain) is required for the reverse proxy and SSL certificate generation. -
Ports:
-
Port 80 (HTTP) and 443 (HTTPS) for the Nginx proxy.
-
Port 23333 for the MCSManager web interface (internal).
-
Port 24444 for the MCSManager daemon (internal).
-
Port 8211 (UDP) for the Palworld game server.
-
Port 25575 (TCP) for RCON (Remote Console) access.
File and Directory Structure¶
The deployment utilizes the following directory structure for configuration, data, and certificates:
-
/opt/mcsm/daemon/data: Stores data for the MCSManager daemon. -
/opt/mcsmanager-web-data: Stores data for the MCSManager web interface. -
{{ proxy_base_dir }}/nginx/conf.d: Contains Nginx configuration files for HTTP and HTTPS. -
{{ proxy_base_dir }}/letsencrypt: Stores Let's Encrypt SSL certificates. -
{{ proxy_base_dir }}/www: Webroot directory used by Certbot for ACME challenges. -
{{ palworld_data_dir }}: Persistent storage location for the Palworld server data.
Application Installation Process¶
The system installs Docker and required dependencies before deploying the application components.
-
Docker Installation: The Docker engine and
docker-compose-pluginare installed via theaptpackage manager. -
MCSManager Daemon:
-
Image:
ngc7331/mcsmanager-daemon:latest -
Container Name:
mcsm-daemon -
The daemon is configured to restart unless stopped and maps port 24444.
-
MCSManager Web Interface:
-
Image:
ngc7331/mcsmanager-web:latest -
Container Name:
mcsm-web -
The web interface is configured to restart unless stopped and maps port 23333.
-
Palworld Server:
-
The Palworld instance is created dynamically via the MCSManager API.
-
Image:
kagurazakanyaa/palworld:latest -
Container Name:
palworld-{{ server_id }} -
The instance is configured as a Docker process type within the MCSManager panel.
Docker Containers and Their Deployment¶
The deployment utilizes Docker containers for the management panel, proxy, and game server.
MCSManager Containers
-
The
mcsm-daemoncontainer mounts/opt/mcsm/daemon/dataand the Docker socket (/var/run/docker.sock). -
The
mcsm-webcontainer mounts/opt/mcsmanager-web-datato/opt/mcsm/web/data.
Proxy Containers The proxy stack is managed via a docker-compose.yml file located in {{ proxy_base_dir }}.
-
Nginx:
-
Image:
nginx:alpine -
Container Name:
palworld-proxy -
Network Mode:
host -
Volumes:
-
{{ proxy_base_dir }}/nginx/conf.dmounted to/etc/nginx/conf.d(read-only). -
{{ proxy_base_dir }}/letsencryptmounted to/etc/letsencrypt. -
{{ proxy_base_dir }}/wwwmounted to/var/www/certbot.
-
-
Certbot:
-
Image:
certbot/certbot -
Container Name:
palworld-certbot -
Volumes:
-
{{ proxy_base_dir }}/letsencryptmounted to/etc/letsencrypt. -
{{ proxy_base_dir }}/wwwmounted to/var/www/certbot.
-
Palworld Container Configuration The Palworld server container is configured with the following environment variables:
-
PORT: 8211 -
PLAYERS: 16 -
MULTITHREADING: true -
SERVER_NAME: Palworld-{{ server_id }} -
SERVER_DESCRIPTION: Auto deployed -
ADMIN_PASSWORD: Set to the system password. -
SERVER_PASSWORD: Set to the system password. -
RCON_ENABLED: true -
RCON_PORT: 25575 -
TZ: UTC (default)
Proxy Servers¶
Nginx acts as a reverse proxy for both the MCSManager panel and the daemon, handling SSL termination via Let's Encrypt.
SSL Certificate Management
-
Certificates are obtained using Certbot via the HTTP-01 challenge.
-
The certificate is requested for
{{ panel_domain }}. -
If a certificate already exists in
{{ proxy_base_dir }}/letsencrypt/live/{{ panel_domain }}/fullchain.pem, the process skips generation.
Nginx Configuration
-
HTTP Redirect: Port 80 listens for
{{ panel_domain }}and redirects all traffic to HTTPS (301). It also serves the ACME challenge directory at/.well-known/acme-challenge/. -
HTTPS Panel: Port 443 listens for
{{ panel_domain }}with SSL enabled. -
Certificates are loaded from
/etc/letsencrypt/live/{{ panel_domain }}/. -
Traffic is proxied to
http://127.0.0.1:{{ internal_port }}(MCSManager web). -
Headers
Host,X-Real-IP,X-Forwarded-For, andX-Forwarded-Protoare preserved. -
WebSocket upgrades are supported.
-
HTTPS Daemon: A separate server block listens on
{{ daemon_external_port }}with SSL. -
Traffic is proxied to
http://127.0.0.1:{{ daemon_internal_port }}(MCSManager daemon). -
WebSocket upgrades are supported.
Access Rights and Security¶
-
Firewall: The system exposes ports 80, 443, 8211 (UDP), and 25575 (TCP) for external access. Internal ports 23333 and 24444 are bound to localhost (
127.0.0.1) and accessed only through the Nginx proxy. -
Authentication:
-
The MCSManager panel is initialized with a default administrator account.
-
Username:
admin -
Password: Set to the system SSH password (
{{ ansible_ssh_pass }}). -
Daemon Connection: The daemon is registered with the panel using a unique API key generated in
/opt/mcsm/daemon/data/Config/global.json. -
Palworld Security: The game server requires a password for both player access and RCON administration, both set to the system password during deployment.
Starting, Stopping, and Updating¶
-
Service Management:
-
The Nginx proxy container (
palworld-proxy) is managed via Docker Compose. -
The MCSManager containers (
mcsm-daemon,mcsm-web) are managed directly via Docker with a restart policy ofunless-stopped. -
The Palworld server instance is managed through the MCSManager web interface API.
-
Initialization:
-
The deployment script waits for the web panel to become available on port 23333.
-
It automatically creates the admin user via the
/api/auth/installendpoint. -
It logs in to obtain an authentication token.
-
It registers the local daemon with the panel using the
/api/service/remote_serviceendpoint. -
It creates the Palworld instance via the
/api/instanceendpoint and starts it via/api/protected_instance/open. -
Updates:
-
To update the application, pull the latest images for
ngc7331/mcsmanager-daemon,ngc7331/mcsmanager-web, andkagurazakanyaa/palworld. -
Restart the containers to apply changes.