3.9 KiB
Minecraft Cluster Deployment Using Docker Compose
This project sets up a cluster of Minecraft servers using Docker Compose. Each server is configured with FabricMC for mod support and uses the Holesail network for secure, peer-to-peer connections.
Features
- Cluster Deployment: Easily deploy multiple Minecraft servers.
- FabricMC Support: Automatically fetches and installs the latest FabricMC server version.
- Holesail Networking: Secure P2P connections with unique connection strings for each server.
- Mod Manager: Integrated mod manager for managing Minecraft mods.
- PM2 Management: Servers are monitored and managed using PM2 for stability and logging.
Directory Structure
.
├── docker-compose.yml # Docker Compose file for cluster deployment
├── mc-cluster-image/ # Minecraft cluster Docker image source
│ ├── pm2/ # PM2 configuration files
│ │ └── startServer.json # PM2 configuration for starting Minecraft server
│ ├── connection_manager.js # Handles Holesail connection initialization
│ ├── Dockerfile # Dockerfile for building the Minecraft server image
│ ├── get_latest_fabric_version.js # Script to fetch the latest FabricMC version
│ ├── mod-manager-installer.sh # Script to install the mod manager
│ ├── start.sh # Startup script for the container
│ ├── scripts/ # Additional utility scripts
│ │ └── init-mod-manager.sh # Script to initialize the mod manager
│ └── server.properties # Minecraft server configuration
└── README.md # Project documentation
Prerequisites
- Docker: Version 20.10 or higher
- Docker Compose: Version 1.29 or higher
- Node.js: Version 18 or higher (for FabricMC version scripts)
Setup Instructions
-
Clone the Repository:
git clone https://github.com/your-repo/minecraft-cluster.git cd minecraft-cluster
-
Build the Docker Image:
docker-compose build
-
Start the Cluster:
docker-compose up -d
-
Access Logs: View logs for all servers using PM2:
docker exec -it mc-server-1 pm2 log
-
Manage Mods: The mod manager initializes automatically. To manage mods:
docker exec -it mc-server-1 mod-manager add <mod_name>
Configuration
docker-compose.yml
Defines the cluster with unique CONNECTION_STRING environment variables for Holesail connections.
mc-cluster-image/Dockerfile
Builds the Minecraft server image with:
- FabricMC installation
- Mod manager setup
- PM2 for process management
connection_manager.js
Initializes Holesail P2P connections for secure server communication.
Scripts Overview
get_latest_fabric_version.js
: Fetches the latest FabricMC server version.mod-manager-installer.sh
: Installs and compiles the mod manager from the source.init-mod-manager.sh
: Ensures the mod manager is initialized and restarts the servers.
Managing the Cluster
Add/Remove Servers
To add or remove servers, edit docker-compose.yml
and modify the services
section. After making changes, restart the cluster:
docker-compose down
docker-compose up -d
Update FabricMC Version
Edit the RUN
command in the Dockerfile under get_latest_fabric_version.js
:
node /var/tools/scripts/get_latest_fabric_version.js <new_version>
Rebuild the Docker image:
docker-compose build
Restart the cluster:
docker-compose up -d
Troubleshooting
- Holesail Connection Error: Ensure
CONNECTION_STRING
is set and valid indocker-compose.yml
. - Mod Manager Issues: Check the initialization logs in
mod-manager.init
and reruninit-mod-manager.sh
.