Files
docker_stack/karylab-minecraft/minecraft.yml
2026-01-01 18:05:00 +08:00

166 lines
5.0 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" # 管理介面
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" # 訪問即可看到所有容器日誌
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- minecraft_net
deploy:
resources:
limits:
memory: 256M
# 4. GoEdge 管理後台 + API 節點 + MySQL
# 官方建議使用 goedgelabs/goedge-admin 映像,內建 MariaDB
goedge-admin:
image: goedgelabs/goedge-admin:latest
container_name: goedge_admin
restart: unless-stopped
environment:
- TZ=Asia/Taipei
volumes:
- goedge_admin_mysql:/var/lib/mysql # MySQL 資料庫
- goedge_admin_data:/usr/local/goedge/edge-admin # Admin 設定 + 日誌 + API 設定
ports:
- "8030:7788" # 管理後台登入端口 (預設 admin/123456)
networks:
- minecraft_net
# 5. GoEdge 邊緣節點 (實際負責轉發的 Proxy)
goedge-node:
image: goedgelabs/goedge-node:latest
container_name: goedge_node
restart: unless-stopped
environment:
- TZ=Asia/Taipei
volumes:
- goedge_node_data:/usr/local/goedge/edge-node
ports:
- "1110-1200:1110-1200" # 預留 1110 到 1200 之間的 90 個端口
networks:
- minecraft_net
depends_on:
- goedge-admin
# 6. 備份服務 (可選) - 自動備份到雲端或其他位置
# 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
# 7. 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:
goedge_admin_mysql: # MySQL 資料庫(單獨備份用)
goedge_admin_data: # Admin 所有資料(設定 + 日誌 + API
goedge_node_data: # Node 所有資料(設定 + 日誌)