services: router: image: itzg/mc-router container_name: mc-router restart: unless-stopped ports: - "25565:25565" # bind the API port to only loopback to avoid external exposure - "127.0.0.1:25564:25564" networks: - internal environment: TZ: Europe/Amsterdam API_BINDING: ":25564" MAPPING: | omb4.marijndoeve.nl=omb4:25565 harmitcraft.nl=omb4:25565 10.0.0.21=omb4:25565 omb4: image: docker.io/itzg/minecraft-server container_name: mc-omb4 restart: unless-stopped tty: true stdin_open: true depends_on: - db - router ports: - "24454:24454/udp" # Voice mod volumes: - /srv/omb4/data:/data - dynmap-data:/data/dynmap/web environment: EULA: "TRUE" VERSION: 1.20.4 TYPE: FABRIC DIFFICULTY: hard INIT_MEMORY: 1G MEMORY: 6G SEED: "-1412583731547517931" ENABLE_AUTOPAUSE: true MAX_TICK_TIME: -1 REMOVE_OLD_DATAPACKS: true VANILLATWEAKS_SHARECODE: "4T4SXc,4SfBGs,ABZj2f" MODRINTH_PROJECTS: | fabric-api view-distance-fix:beta simple-voice-chat lithium shulkerboxtooltip audioplayer:alpha dynmap:beta no-trial-chambers shulker+:4WoxRZtH MODRINTH_DOWNLOAD_DEPENDENCIES: required web: image: gitea.marijndoeve.nl/harmitcraft/dynmap-web:latest restart: unless-stopped container_name: mc-web volumes: - dynmap-data:/var/www/html:ro depends_on: - db networks: - web - internal labels: - traefik.enable=true - traefik.http.routers.ombweb.rule=Host(`omb4.marijndoeve.nl`, `harmitcraft.nl`) - traefik.http.routers.ombweb.entrypoints=websecure - traefik.http.routers.ombweb.tls.certresolver=marijndoeve db: image: postgres:16 container_name: mc-db environment: TZ: Europe/Amsterdam POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - db-data:/var/lib/postgresql/data restart: unless-stopped networks: - internal monitor: image: itzg/mc-monitor container_name: mc-monitor command: export-for-prometheus restart: unless-stopped environment: EXPORT_SERVERS: mc-omb4 depends_on: - omb4 networks: - internal - web networks: internal: internal: true web: external: true volumes: dynmap-data: db-data: