# Minecraft Cluster Deployment with Velocity Proxy and Holesail Integration This master README consolidates all parts of the Minecraft Cluster setup using Docker. It includes deploying a Minecraft server cluster, configuring Velocity Proxy, and integrating Holesail for secure peer-to-peer connections. --- ## Overview This project enables seamless deployment of a Minecraft server cluster with the following features: - **Clustered Minecraft Servers:** Deployed using Docker Compose with FabricMC mod support. - **Velocity Proxy:** Lightweight and flexible proxy for managing player connections. - **Holesail Networking:** Secure peer-to-peer networking for connecting servers. - **Mod Management:** Integrated mod management system for Minecraft servers. - **PM2 Orchestration:** Manages processes and ensures stability. --- ## Prerequisites - **Docker:** Version 20.10 or higher. - **Docker Compose:** Version 1.29 or higher. - **Node.js:** Version 18 or higher (for FabricMC version scripts and Holesail). - **Basic Knowledge:** Understanding of Docker, Minecraft server administration, and basic Linux commands. --- ## Setup Instructions ### 1. Minecraft Host Node Setup This step sets up the Minecraft cluster, consisting of multiple FabricMC servers. 1. **Clone the Repository:** ```bash git clone https://git.ssh.surf/snxraven/mc-cluster.git cd mc-cluster/mc-cluster-image ``` 2. **Build the Minecraft Cluster Image:** ```bash docker build . -t mc:cluster ``` 3. **Navigate Back to the Main Directory:** ```bash cd .. ``` 4. **Start the Minecraft Cluster:** ```bash docker-compose up -d ``` This will deploy a cluster of 4 Minecraft servers with unique Holesail connection strings. --- ### 2. JUMP Node Setup The JUMP node hosts the Velocity proxy, managing player connections and routing traffic to the Minecraft cluster. 1. **Clone the Repository:** ```bash git clone https://git.ssh.surf/snxraven/mc-cluster.git cd mc-cluster/velocity-image ``` 2. **Build the Velocity Proxy Image:** ```bash docker build . -t velocity:proxy ``` 3. **Start the Velocity Proxy:** ```bash docker-compose up -d ``` --- ## Configuration ### Holesail Connection Strings To customize the Holesail connection strings: 1. **Edit the `pm2-setup.sh` File:** ```bash cd mc-cluster/holesail-connector nano pm2-setup.sh ``` Update the `connections` array with your desired connection strings and ports. Example: ```bash connections=( ["mc-server-1"]="5000" ["mc-server-2"]="5001" ) ``` 2. **Modify the Docker Compose File:** ```bash cd mc-cluster nano docker-compose.yml ``` Update the `CONNECTION_STRING` and `PORT` environment variables for each Minecraft server. --- ## Managing the Cluster ### Logs and Debugging - **View PM2 Logs for Minecraft Servers:** ```bash docker exec -it mc-server-1 pm2 logs ``` - **View Velocity Proxy Logs:** ```bash docker exec -it velocity-proxy pm2 logs ``` ### Add or Remove Minecraft Servers 1. Edit the `docker-compose.yml` file in the root directory to add or remove server configurations. 2. Restart the cluster: ```bash docker-compose down docker-compose up -d ``` --- ## Notes 1. **Ports and Connection Strings:** Ensure no conflicts with other services when configuring ports. 2. **Security:** Update `forwarding.secret` in the Velocity Proxy setup for secure player forwarding. 3. **Default Passwords:** Change the default root password (`noshallpass`) for better security. --- ## Directory Structure Overview ```plaintext mc-cluster/ ├── mc-cluster-image/ │ ├── Dockerfile │ ├── pm2/ │ ├── scripts/ │ ├── server.properties │ ├── get_latest_fabric_version.js │ ├── mod-manager-installer.sh │ └── start.sh ├── velocity-image/ │ ├── Dockerfile │ ├── velocity.toml │ ├── pm2/startServer.json │ ├── start.sh │ └── forwarding.secret ├── holesail-connector/ │ ├── Dockerfile │ └── pm2-setup.sh └── docker-compose.yml ``` --- ## Future Extensions - **Additional Nodes:** Add more Minecraft servers or JUMP nodes to scale the deployment. - **Mod Automation:** Enhance the mod manager for auto-updating and downloading new mods. - **Monitoring Tools:** Integrate monitoring tools like Netdata for better visibility into server performance.