services: velocity: image: itzg/mc-proxy:java25-2026.9.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 VELOCITY_VERSION: "4.1.1" SERVER_NAME: Illegal Crime MINECRAFT_VERSION: "1.21.11" 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 https://github.com/MiniPlaceholders/LuckPerms-Expansion/releases/download/2.1.0/LuckPerms-Expansion-2.1.0.jar MODRINTH_PROJECTS: | dclink:czEQjfwR carbon:yGY2bbis luckperms:tamnmXad miniplaceholders:Kpbing8i signedvelocity:OxMy0xf6 velocitab:aWnzUwbr labels: diun.enable: "true" diun.watch_repo: "true" diun.include_tags: "stable" bluemap: image: ghcr.io/bluemap-minecraft/bluemap:v5.20 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:2026.9.0-java25 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.11" 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.22.0/EssentialsX-2.22.0.jar MODRINTH_PROJECTS: | bluemap:Vb2ZE8bR chunky:P3y2MXnd freedomchat:NsY1L3hZ luckperms:b0mk8uS6 multiverse-core:YZ2Ji4IS multiverse-inventories:BuvLmql9 multiverse-netherportals:RRa80eDI signedvelocity:rrIsooky stfu-velocity:Y3nJXOQT vaultunlocked:cLNipSgw worldedit:F5ea2ov3 labels: diun.enable: "false" diun.watch_repo: "true" diun.include_tags: "latest" fabric: image: itzg/minecraft-server:2026.9.0-java25 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.11" 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: | adventure-platform-mod:kuv2yi7X axiom:SAOZ8jry badpackets:SZTlaMHp block-event-separator:sqitifh7 bluemap:TROfpX7m carpet-extra:aQr1yD5l carpet-tis-addition:pCFzPqgG cloth-config:xuX40TN5 collective:e4SDY5SX capture-playback:x6HoAPQ6 carpet:HzPcczDK fabric-api:6qAuTtLR fabricproxy-lite:nR8AIdvx fabric-language-kotlin:eRRZzGMc g4mespeed:aOjO3CsD krypton:O9LmWYR7 ksyxis:kL32PN9Q litematica-server-paster:NxXeWjl7 lithium:Ow7wA0kG luckperms:CzCJJMuo melius-essentials:kVtUvNhZ mods-command:kr5sf0TO no-chat-reports:rhykGstm no-join-leave-messages:OM515qUi owo-lib:33Ei8Thm packet-fixer:XsMMpmvW random-dust:AbuWUjFU redstone-multimeter:9s5DeFH4 servercore:zg8VIycZ servux:9041JwWA signedvelocity:oX5sjplv spark:gonLOAU1 threadtweak:9t60vZ1h vanilla-permissions:hA27RLKS worldedit:oY3E2pzA 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: "false" 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: "false" diun.watch_repo: "true" diun.include_tags: "latest" duplicati: image: duplicati/duplicati:2.3.0.0 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.53.0 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: