Minecraft
Minecraft can be easily hosted on docker using the excellent work of itzg .
This config shows how to host private minecraft server and optionally setup web-rcron to manage it.
File: Docker Compose
# Filename: /srv/mc.exampale.com/docker-compose.yaml
# docker-compose file to start minecraft
#
# Changes required:
# OPS: TODO_PLAYER1,TODO_PLAYER2
# RCON_PASSWORD: TODO_MC_RCON_PASSWORD
# RWA_USERNAME: TODO_RCRON_WEB_ADMIN_USERNAME
# RWA_PASSWORD: TODO_RCRON_WEB_ADMIN_PASSWORD
name: mc-example-com
services:
mc:
image: itzg/minecraft-server
container_name: mc.example.com
restart: unless-stopped
environment:
EULA: "TRUE"
TYPE: FORGE
OPS: TODO_PLAYER1,TODO_PLAYER2
MEMORY: 10G
ONLINE_MODE: "FALSE"
REMOVE_OLD_MODS: "TRUE"
VERSION: 1.20.1
SEED: 65434353559200
USE_SIMD_FLAGS: "TRUE"
ENABLE_RCON: TRUE
RCON_PASSWORD: TODO_MC_RCON_PASSWORD
tty: true
# MC server runs on non-standard port 65535
# MC-rcon runs on 25575, use it via itzg/rcon
ports:
- 65535:25565
- 25575:25575
volumes:
- ./data:/data
# - ./plugins:/plugins:ro
# - ./mods-forge:/mods:ro
- ./mods-forge-lite:/mods:ro
- ./extras:/extras:ro
mem_limit: 11G
labels:
- com.centurylinklabs.watchtower.enable=true
# Optionally run itzg/rcron behind traefik
mc-rcon:
image: itzg/rcon:latest
container_name: mc-rcon.example.com
restart: unless-stopped
ports:
- 4326:4326
- 4327:4327
environment:
RWA_ENV: 'TRUE'
#RWA_WEB_RCON: 'TRUE'
RWA_USERNAME: TODO_RCRON_WEB_ADMIN_USERNAME
RWA_PASSWORD: TODO_RCRON_WEB_ADMIN_PASSWORD
RWA_ADMIN: 'TRUE'
RWA_RCON_HOST: mc
RWA_RCON_PASSWORD: TODO_MC_RCON_PASSWORD
RWA_RCON_PORT: 25575
RWA_WEBSOCKET_URL_SSL: "wss://mc-rcon.example.com/ws"
RWA_WEBSOCKET_URL: "ws://mc-rcon.example.com/ws"
labels:
- com.centurylinklabs.watchtower.enable=true
- traefik.enable=true
# Rules for rcon web
- traefik.http.routers.mc-rcon.rule=Host(`mc-rcon.example.com`)
- traefik.http.routers.mc-rcon.tls=true
- traefik.http.routers.mc-rcon.tls.certresolver=lets-encrypt
- traefik.http.routers.mc-rcon.service=mc-rcon
- traefik.http.services.mc-rcon.loadbalancer.server.port=4326
# Rules for rcon websocket
- traefik.http.routers.mc-rcon-ws.rule=Host(`mc-rcon.example.com`) && Path(`/ws`)
- traefik.http.routers.mc-rcon-ws.tls=true
- traefik.http.routers.mc-rcon-ws.tls.certresolver=lets-encrypt
- traefik.http.routers.mc-rcon-ws.service=mc-rcon-ws
- traefik.http.services.mc-rcon-ws.loadbalancer.server.port=4327