mc-cluster/mc-cluster-image
2024-12-06 07:32:43 -05:00
..
pm2 first commit 2024-12-06 05:52:08 -05:00
scripts update 2024-12-06 07:17:22 -05:00
connection_manager.js first commit 2024-12-06 05:52:08 -05:00
Dockerfile update 2024-12-06 07:32:43 -05:00
eula first commit 2024-12-06 05:52:08 -05:00
FabricProxy-Lite.toml update 2024-12-06 07:32:43 -05:00
get_latest_fabric_version.js first commit 2024-12-06 05:52:08 -05:00
mod-manager-installer.sh first commit 2024-12-06 05:52:08 -05:00
README.md update 2024-12-06 06:38:37 -05:00
server.properties first commit 2024-12-06 05:52:08 -05:00
start.sh first commit 2024-12-06 05:52:08 -05:00

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

  1. Clone the Repository:

    git clone https://github.com/your-repo/minecraft-cluster.git
    cd minecraft-cluster
    
  2. Build the Docker Image:

    docker-compose build
    
  3. Start the Cluster:

    docker-compose up -d
    
  4. Access Logs: View logs for all servers using PM2:

    docker exec -it mc-server-1 pm2 log
    
  5. 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 in docker-compose.yml.
  • Mod Manager Issues: Check the initialization logs in mod-manager.init and rerun init-mod-manager.sh.