docker-apps/minecraft/stacks/compose.yml
2025-04-03 22:57:52 +02:00

73 lines
2.5 KiB
YAML

# NB! since udp routing cannot be made on hostnames, minecraft will have to be accessed as follows:
# minecraft-bedrock: minecraft.sthome.org:19132
# minecraft-java: minecraft.sthome.org:25565
name: minecraft
secrets:
mcjava_rcon_password:
file: ${SECRETSDIR}/mcjava_rcon_password
networks:
traefik-net:
external: true
services:
minecraft-bedrock:
image: itzg/minecraft-bedrock-server
hostname: ${MCBEDROCK_APP}
env_file: .minecraft-bedrock.env
tty: true
stdin_open: true
networks:
- traefik-net
volumes:
- /etc/localtime:/etc/localtime:ro
- "${DATADIR}/bedrock:/data"
restart: unless-stopped
# environment variables specified here overrides env_file
environment:
- GAMEMODE=survival
- DIFFICULTY=peaceful
#- DIFFICULTY=easy
labels:
- traefik.enable=true
- traefik.docker.network=traefik-net
- "traefik.udp.services.${MCBEDROCK_APP}-svc.loadbalancer.server.port=${MCBEDROCK_PORT}"
- "traefik.udp.routers.${MCBEDROCK_APP}-rtr.entrypoints=mc-bedrock"
- "traefik.udp.routers.${MCBEDROCK_APP}-rtr.service=${MCBEDROCK_APP}-svc"
minecraft-java:
image: itzg/minecraft-server
hostname: ${MCJAVA_APP}
env_file: .minecraft-java.env
tty: true
stdin_open: true
networks:
- traefik-net
volumes:
- /etc/localtime:/etc/localtime:ro
- "${DATADIR}/java:/data"
restart: unless-stopped
secrets:
- mcjava_rcon_password
# environment variables specified here override env_file
environment:
- SERVER_NAME=mc-java
- MODE=survival
- DIFFICULTY=easy
# - ENABLE_RCON=true # uncomment to enable RCON
labels:
- traefik.enable=true
- traefik.docker.network=traefik-net
# udp entrypoint routed to service port
- "traefik.udp.services.${MCJAVA_APP}-svc.loadbalancer.server.port=${MCJAVA_PORT}"
- "traefik.udp.routers.${MCJAVA_APP}-rtr.entrypoints=mc-java"
- "traefik.udp.routers.${MCJAVA_APP}-rtr.service=${MCJAVA_APP}-svc"
# tcp entrypoint routed to rcon port - unencrypted (unsafe, do not port forward router)
- "traefik.tcp.services.${MCJAVA_APP}-rcon-svc.loadbalancer.server.port=${MCJAVA_RCON_PORT}"
- "traefik.tcp.routers.${MCJAVA_APP}-rcon-rtr.rule=HostSNI(`*`)" # no matching possible without tls
- "traefik.tcp.routers.${MCJAVA_APP}-rcon-rtr.entrypoints=mc-java-rcon"
- "traefik.tcp.routers.${MCJAVA_APP}-rcon-rtr.service=${MCJAVA_APP}-rcon-svc"