166 lines
5.0 KiB
YAML
166 lines
5.0 KiB
YAML
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 所有資料(設定 + 日誌) |