Files
minecraft_server/compose.yml
Kappeh b31876eb50
All checks were successful
Deploy / Deploy (push) Successful in 3m3s
Enable docker image update notifications
2026-02-20 21:00:58 +00:00

469 lines
12 KiB
YAML
Executable File

services:
velocity:
image: itzg/mc-proxy:java21-2025.1.0
user: 2015:2015 # minecraft_server:minecraft_server
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
luckperms:
condition: service_healthy
restart: true
fabric:
condition: service_healthy
restart: true
paper:
condition: service_healthy
restart: true
secrets:
- rcon_password
- forwarding_secret
- dclink_token
- luckperms_password
networks:
minecraft_server_network:
ipv4_address: "10.100.1.3"
ports:
- ${VELOCITY_PORT}:25565
volumes:
- velocity_data:/server:rw
- ./velocity/config:/config:ro
environment:
TYPE: VELOCITY
SERVER_NAME: Illegal Crime
MINECRAFT_VERSION: "1.21.3"
INIT_MEMORY: 512m
MAX_MEMORY: 1G
REPLACE_ENV_VARIABLES: true
ENV_VARIABLE_PREFIX: CFG_
ENABLE_RCON: true
RCON_PORT: 25575
RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_DCLINK_GUILD: ${DCLINK_GUILD}
CFG_DCLINK_CHANNEL: ${DCLINK_CHANNEL}
CFG_DCLINK_ROLE: ${DCLINK_ROLE}
CFG_DCLINK_TOKEN_FILE: /run/secrets/dclink_token
CFG_LUCKPERMS_PASSWORD_FILE: /run/secrets/luckperms_password
PLUGINS: |
https://github.com/dbkynd-minecraft/VelocityPlayerList/releases/download/v1.0/PlayerList-1.0.jar
MODRINTH_PROJECTS: |
dclink:EjvGsLkv
huskchat:SZxRjPf7
luckperms:vtXGoeps
signedvelocity:Jp1p9BHR
velocitab:TTtLPunq
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
bluemap:
image: ghcr.io/bluemap-minecraft/bluemap:v5.7
user: 2015:2015 # minecraft_server:minecraft_server
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
fabric:
condition: service_healthy
restart: true
paper:
condition: service_healthy
restart: true
command: -g -w
networks:
minecraft_server_network:
ipv4_address: "10.100.1.6"
ports:
- ${BLUEMAP_PORT}:8100
volumes:
- bluemap_data:/app/data:rw
- bluemap_web:/app/web:rw
- bluemap_maps:/app/web/maps:ro
- ./bluemap/config:/app/config:ro
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
paper:
image: itzg/minecraft-server:2025.3.0-java23
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
luckperms:
condition: service_healthy
restart: true
healthcheck:
test: mc-health
start_period: 5m
interval: 5s
retries: 20
secrets:
- rcon_password
- forwarding_secret
- luckperms_password
networks:
minecraft_server_network:
ipv4_address: "10.100.1.4"
volumes:
- paper_data:/data:rw
- schematics:/data/plugins/WorldEdit/schematics:rw
- bluemap_maps:/data/bluemap/web/maps:rw
- ./paper/config:/config:ro
- ./paper/plugins:/plugins:ro
- ./paper/data/bukkit.yml:/data/bukkit.yml:ro
- ./paper/data/commands.yml:/data/commands.yml:ro
- ./paper/data/spigot.yml:/data/spigot.yml:ro
environment:
UID: 2015 # minecraft_server
GID: 2015 # minecraft_server
EULA: true
TYPE: PAPER
SERVER_NAME: Illegal Crime Paper
MOTD: Best Redstone Server
VERSION: "1.21.3"
INIT_MEMORY: 512m
MAX_MEMORY: 6G
ENABLE_AUTOPAUSE: true
MAX_TICK_TIME: -1
JVM_DD_OPTS: "disable.watchdog:true"
ENFORCE_SECURE_PROFILE: false
SNOOPER_ENABLED: false
ENABLE_QUERY: false
BROADCAST_CONSOLE_TO_OPS: false
BROADCAST_RCON_TO_OPS: false
ONLINE_MODE: false
OP_PERMISSION_LEVEL: 2
MAX_PLAYERS: 50
DIFFICULTY: easy
LEVEL: survival
MODE: creative
LEVEL_TYPE: minecraft:normal
ENABLE_COMMAND_BLOCK: true
GENERATE_STRUCTURES: false
SPAWN_ANIMALS: false
SPAWN_MONSTERS: false
SPAWN_NPCS: false
SPAWN_PROTECTION: 0
USE_AIKAR_FLAGS: true
LOG_TIMESTAMP: true
REPLACE_ENV_IN_PLACE: true
REPLACE_ENV_DURING_SYNC: true
REPLACE_ENV_VARIABLE_PREFIX: CFG_
ENABLE_RCON: true
RCON_PORT: 25575
RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_FORWARDING_SECRET_FILE: /run/secrets/forwarding_secret
CFG_LUCKPERMS_PASSWORD_FILE: /run/secrets/luckperms_password
PLUGINS: |
https://github.com/EssentialsX/Essentials/releases/download/2.20.1/EssentialsX-2.20.1.jar
MODRINTH_PROJECTS: |
bluemap:NeDjOeW8
chunky:SmZRkQyR
freedomchat:NdbpBqOZ
luckperms:cfNN7sys
multiverse-core:jbQopAkk
multiverse-inventories:diNvP5DO
multiverse-netherportals:Dkyax1rl
signedvelocity:TKC72r9l
stfu-velocity:Y3nJXOQT
vaultunlocked:fC53e1Vr
worldedit:4jRlujfz
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
fabric:
image: itzg/minecraft-server:2025.3.0-java23
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
luckperms:
condition: service_healthy
restart: true
healthcheck:
test: mc-health
start_period: 5m
interval: 5s
retries: 20
secrets:
- rcon_password
- forwarding_secret
- luckperms_password
networks:
minecraft_server_network:
ipv4_address: "10.100.1.5"
volumes:
- fabric_data:/data:rw
- schematics:/data/config/worldedit/schematics:rw
- bluemap_maps:/data/bluemap/web/maps:rw
- ./fabric/config:/config:ro
environment:
UID: 2015 # minecraft_server
GID: 2015 # minecraft_server
EULA: true
TYPE: FABRIC
SERVER_NAME: Illegal Crime Fabric
MOTD: Best Redstone Server
VERSION: "1.21.3"
INIT_MEMORY: 512m
MAX_MEMORY: 4G
ENABLE_AUTOPAUSE: true
MAX_TICK_TIME: -1
ENFORCE_SECURE_PROFILE: false
SNOOPER_ENABLED: false
ENABLE_QUERY: false
BROADCAST_CONSOLE_TO_OPS: false
BROADCAST_RCON_TO_OPS: false
ONLINE_MODE: false
OP_PERMISSION_LEVEL: 2
MAX_PLAYERS: 50
DIFFICULTY: easy
LEVEL: world
MODE: creative
LEVEL_TYPE: minecraft:flat
ENABLE_COMMAND_BLOCK: true
GENERATE_STRUCTURES: false
SPAWN_ANIMALS: false
SPAWN_MONSTERS: false
SPAWN_NPCS: false
SPAWN_PROTECTION: 0
USE_AIKAR_FLAGS: true
LOG_TIMESTAMP: true
REPLACE_ENV_IN_PLACE: true
REPLACE_ENV_DURING_SYNC: true
REPLACE_ENV_VARIABLE_PREFIX: CFG_
ENABLE_RCON: true
RCON_PORT: 25575
RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_RCON_PASSWORD_FILE: /run/secrets/rcon_password
CFG_FORWARDING_SECRET_FILE: /run/secrets/forwarding_secret
CFG_LUCKPERMS_PASSWORD_FILE: /run/secrets/luckperms_password
MODRINTH_PROJECTS: |
axiom:8FfuXLhW
badpackets:hjhT2sMz
block-event-separator:R7hmJOUs
bluemap:Dr2hvJBc
carpet-extra:WDB4578I
carpet-tis-addition:znBCTqSr
cloth-config:FgXq8Sfo
collective:UqTBXnWC
capture-playback:YmnYuB3l
carpet:ZF8ufR9V
fabric-api:Ybg4nYGj
fabricproxy-lite:AQhF7kvw
fabric-language-kotlin:476dzMG5
g4mespeed:oPV7qsy2
krypton:Acz3ttTp
ksyxis:ueN87SNs
litematica-server-paster:LttjgeM4
lithium:W0Cc7ZVd
luckperms:S8033hpf
melius-essentials:VUp9aVl4
mods-command:1F0YwdWN
no-chat-reports:Cg7X9iDa
no-join-leave-messages:g3jqChgD
owo-lib:3Q7oLImc
packet-fixer:XBM9PO5r
random-dust:O4rsiuG0
redstone-helper:YqT7Ricu
redstone-multimeter:kTiP34Lj
servercore:PgKTFLEL
servux:u85kwLvC
signedvelocity:AusZl7xe
spark:rExumjPo
threadtweak:HV6EY0h3
vanilla-permissions:7awQNHzw
worldedit:3TQ8W0Ar
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
luckperms:
image: postgres:17.4
user: 2015:2015 # minecraft_server:minecraft_server
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
healthcheck:
test: ["CMD-SHELL", "pg_isready -U luckperms -d luckperms"]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s
secrets:
- luckperms_password
networks:
minecraft_server_network:
ipv4_address: "10.100.1.2"
ports:
- ${LUCKPERMS_PORT}:5432
volumes:
- luckperms_data:/var/lib/postgresql/data:rw
- backups:/backups:rw
- /etc/passwd:/etc/passwd:ro
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/luckperms_password
POSTGRES_USER: luckperms
POSTGRES_DB: luckperms
PGDATA: /var/lib/postgresql/data/pgdata
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
schematics:
image: registry.leaf.home.kappeh.org/kappeh/minecraft_schematics_web:latest
user: 2015:2015 # minecraft_server:minecraft_server
restart: unless-stopped
environment:
ADDRESS: 0.0.0.0
PORT: 80
SCHEM_DIR: /schematics
volumes:
- schematics:/schematics:rw
networks:
minecraft_server_network:
ipv4_address: "10.100.1.7"
ports:
- 25585:80
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
duplicati:
image: duplicati/duplicati:2.2.0.3
user: 2015:2015 # minecraft_server:minecraft_server
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
restart: true
env_file: ./.env
networks:
minecraft_server_network:
ipv4_address: "10.100.1.8"
ports:
- 8201:8200 # Web UI
volumes:
- duplicati_data:/data:rw
- backups:/source:ro
- /mnt/minecraft_server/backups:/dest:rw
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
# Helper for dumping sqlite databases during backups
sqlite_helper:
image: grepular/sqlite3:3.51.2
user: 0:0
restart: no
network_mode: none
volumes:
- backups:/backups:rw
- velocity_data:/velocity_data:ro
- paper_data:/paper_data:ro
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
init:
image: busybox:1.37.0
user: root:root
command: /init.sh
restart: no
network_mode: none
volumes:
- ./scripts/init.sh:/init.sh:ro
- backups:/backups:rw
# Used for resolving user and group names within the init script
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
# Mount all named volumes so they can be initialised
- velocity_data:/velocity_data:rw
- bluemap_data:/bluemap_data:rw
- bluemap_web:/bluemap_web:rw
- bluemap_maps:/bluemap_maps:rw
- schematics:/schematics:rw
- paper_data:/paper_data:rw
- fabric_data:/fabric_data:rw
- luckperms_data:/luckperms_data:rw
- duplicati_data:/duplicati_data:rw
labels:
diun.enable: "true"
diun.watch_repo: "true"
diun.include_tags: "latest"
networks:
minecraft_server_network:
name: minecraft_server_network
driver: bridge
ipam:
driver: default
config:
- subnet: "10.100.1.0/24"
gateway: "10.100.1.1"
secrets:
rcon_password:
environment: RCON_PASSWORD
forwarding_secret:
environment: FORWARDING_SECRET
dclink_token:
environment: DCLINK_TOKEN
luckperms_password:
environment: LUCKPERMS_PASSWORD
volumes:
backups:
bluemap_data:
bluemap_maps:
bluemap_web:
fabric_data:
luckperms_data:
paper_data:
schematics:
velocity_data:
duplicati_data: