version: '3.8' services: # 1. 遊戲管理中心 crafty: container_name: crafty_controller image: registry.gitlab.com/crafty-controller/crafty-4:latest restart: unless-stopped environment: - TZ=Asia/Taipei ports: - "8000:8443" # 管理介面 - "1110:1110" - "1120:1120" - "11100:11100" volumes: - /docker/minecraft/crafty/backups:/crafty/backups - /docker/minecraft/crafty/logs:/crafty/logs - /docker/minecraft/crafty/servers:/crafty/servers - /docker/minecraft/crafty/config:/crafty/app/config - /docker/minecraft/crafty/import:/crafty/import networks: - minecraft_net # 資源限制(避免單一伺服器吃光所有資源) deploy: resources: limits: memory: 24G reservations: memory: 8G # 保證最低 8GB,適合多伺服器同時運行 # 2. 全方位監控儀表板 (Netdata) netdata: image: netdata/netdata:latest container_name: netdata_minecraft hostname: minecraft-host # 便於識別 restart: unless-stopped ports: - "8010:19999" # 監控網頁介面 cap_add: - SYS_PTRACE - SYS_ADMIN security_opt: - apparmor:unconfined environment: - TZ=Asia/Taipei # 可選:Netdata Cloud 整合 - NETDATA_CLAIM_TOKEN=${NETDATA_CLAIM_TOKEN:-} # your-token-here - NETDATA_CLAIM_ROOMS=${NETDATA_CLAIM_ROOMS:-} # your-room-id-here # 數據保留設定 - NETDATA_DBENGINE_MULTIHOST_DISK_SPACE=5120 # 5GB 磁碟空間(保留 7 天) volumes: - netdataconfig:/etc/netdata - netdatalib:/var/lib/netdata # 時序資料庫存放位置,會成長到約 5GB - netdatacache:/var/cache/netdata - /etc/passwd:/host/etc/passwd:ro - /etc/group:/host/etc/group:ro - /proc:/host/proc:ro - /sys:/sys:ro - /etc/os-release:/host/etc/os-release:ro - /var/run/docker.sock:/var/run/docker.sock:ro # 關鍵:讓 Netdata 讀取 Docker 狀態 - /docker/minecraft/crafty/servers:/host/minecraft:ro # 監控 MC 伺服器目錄大小 networks: - minecraft_net deploy: resources: limits: memory: 512M reservations: memory: 256M # 3. 即時日誌瀏覽器 (Dozzle) - 看報錯用 dozzle: image: amir20/dozzle:latest container_name: dozzle_minecraft restart: unless-stopped environment: - TZ=Asia/Taipei - DOZZLE_LEVEL=info - DOZZLE_TAILSIZE=500 # 日誌顯示行數 - DOZZLE_FILTER=name=crafty*|name=minecraft* # 只顯示 MC 相關容器 ports: - "8020:8080" # 訪問 http://localhost:8020 即可看到所有容器日誌 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: - minecraft_net deploy: resources: limits: memory: 256M # 4. FRP 客戶端 (負責打通內網) # frpc: # image: snowdreamtech/frpc:latest # container_name: frpc_tunnel # restart: unless-stopped # 使用 host 模式,讓 frpc 能直接抓到 Crafty 開出的所有子伺服器 port # network_mode: "host" # volumes: # - /docker/minecraft/frpc/frpc.toml:/etc/frp/frpc.toml # 5. 備份服務 (可選) - 自動備份到雲端或其他位置 # duplicati: # image: lscr.io/linuxserver/duplicati:latest # container_name: minecraft_backup # restart: unless-stopped # environment: # - PUID=1000 # - PGID=1000 # - TZ=Asia/Taipei # ports: # - "8200:8200" # volumes: # - ./duplicati/config:/config # - ./crafty/backups:/backups:ro # - ./crafty/servers:/source:ro # networks: # - minecraft_net # 6. Watchtower - 自動更新容器映像檔(可選) # watchtower: # image: containrrr/watchtower:latest # container_name: watchtower_minecraft # restart: unless-stopped # environment: # - TZ=Asia/Taipei # - WATCHTOWER_CLEANUP=true # - WATCHTOWER_SCHEDULE=0 0 4 * * * # 每天凌晨 4 點檢查更新 # - WATCHTOWER_INCLUDE_STOPPED=false # volumes: # - /var/run/docker.sock:/var/run/docker.sock # networks: # - minecraft_net networks: minecraft_net: driver: bridge volumes: netdataconfig: netdatalib: netdatacache: