diff --git a/compose.yaml b/compose.yaml index e69de29..116246e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -0,0 +1,111 @@ +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 + depends_on: + - omb4 + environment: + TZ: Europe/Amsterdam + API_BINDING: ":25564" + MAPPING: | + mc.marijndoeve.nl=omb4:25565 + omb.marijndoeve.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: + - router + ports: + - "24454:24454/udp" # Voice mod + volumes: + - ./data:/data + - dynmap-data:/data/dynmap/web + environment: + EULA: "TRUE" + VERSION: 1.20.4 + TYPE: FABRIC + DIFFICULTY: hard + INIT_MEMORY: 1G + MEMORY: 6G + + ENABLE_AUTOPAUSE: true + + MAX_TICK_TIME: -1 + + REMOVE_OLD_DATAPACKS: true + VANILLATWEAKS_SHARECODE: "" + + MODRINTH_PROJECTS: | + fabric-api + view-distance-fix + simple-voice-chat + lithium + shulkerboxtooltip + audioplayer + phosphor + dynmap:3.7-beta-4 + no-trial-chambers + 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(`mc.marijndoeve.nl`, `omb.marijndoeve.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: + GATHER_INTERVAL: 10s + GATHER_SERVERS: omb4 + depends_on: + - omb4 + networks: + - internal + +networks: + internal: + internal: true + web: + external: true + +volumes: + dynmap-data: + db-data: