Files
docker_stack/karylab-minecraft/minecraft.yml
2025-12-31 23:25:24 +08:00

132 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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:11100" # Minecraft 統一連接埠
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. 備份服務 (可選) - 自動備份到雲端或其他位置
# 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
# 5. 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: