From 55bf89d2767c2fb798d48ec2e52a064b9aaf9b54 Mon Sep 17 00:00:00 2001 From: ChenKaiLiuG Date: Wed, 31 Dec 2025 23:25:24 +0800 Subject: [PATCH] Fix local problem --- karylab-minecraft/master-minecraft.yml | 132 +++++++++++++++++++++++++ karylab-minecraft/minecraft.yml | 35 ++----- karylab-minecraft/velocity-config.toml | 54 +++++++--- 3 files changed, 182 insertions(+), 39 deletions(-) create mode 100644 karylab-minecraft/master-minecraft.yml diff --git a/karylab-minecraft/master-minecraft.yml b/karylab-minecraft/master-minecraft.yml new file mode 100644 index 0000000..0b6be7b --- /dev/null +++ b/karylab-minecraft/master-minecraft.yml @@ -0,0 +1,132 @@ +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 Velocity 代理 + 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: \ No newline at end of file diff --git a/karylab-minecraft/minecraft.yml b/karylab-minecraft/minecraft.yml index fe3d316..786ccff 100644 --- a/karylab-minecraft/minecraft.yml +++ b/karylab-minecraft/minecraft.yml @@ -1,25 +1,6 @@ version: '3.8' services: - # 0. Velocity - Minecraft 代理伺服器(群組架構核心) - velocity: - image: itzg/bungeecord:latest - container_name: velocity_proxy - restart: unless-stopped - environment: - - TYPE=VELOCITY - - TZ=Asia/Taipei - - MEMORY=1G - ports: - - "1110:25577" # 對外唯一端口 - volumes: - - /docker/minecraft/velocity:/server - networks: - - minecraft_net - # 玩家透過不同網域連線,Velocity 自動路由到對應後端伺服器 - # parkour.domain.com -> crafty:11110 - # survival.domain.com -> crafty:11120 - # 1. 遊戲管理中心 crafty: container_name: crafty_controller @@ -28,14 +9,14 @@ services: environment: - TZ=Asia/Taipei ports: - - "8000:8443" # 管理介面 + - "8000:8443" # 管理介面 + - "1110:11100" # Minecraft 統一連接埠 volumes: - - /docker/minecraft/crafty/backups:/var/opt/crafty/backups - - /docker/minecraft/crafty/db:/var/opt/crafty/db - - /docker/minecraft/crafty/logs:/var/opt/crafty/logs - - /docker/minecraft/crafty/servers:/var/opt/crafty/servers - - /docker/minecraft/crafty/config:/var/opt/crafty/app/config - - /docker/minecraft/crafty/import:/var/opt/crafty/import + - /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 # 資源限制(避免單一伺服器吃光所有資源) @@ -87,7 +68,7 @@ services: reservations: memory: 256M - # 3. 即時日誌瀏覽器 (Dozzle) - 非常推薦,看報錯超方便 + # 3. 即時日誌瀏覽器 (Dozzle) - 看報錯用 dozzle: image: amir20/dozzle:latest container_name: dozzle_minecraft diff --git a/karylab-minecraft/velocity-config.toml b/karylab-minecraft/velocity-config.toml index d211418..0d8eaa5 100644 --- a/karylab-minecraft/velocity-config.toml +++ b/karylab-minecraft/velocity-config.toml @@ -1,24 +1,54 @@ # Velocity 配置檔範例 # 啟動容器後會自動生成在 /docker/minecraft/velocity/velocity.toml -# 以下是關鍵設定說明 + +# Config version. Do not change this +config-version = "2.7" # 綁定地址和端口 -bind = "0.0.0.0:25577" +bind = "0.0.0.0:11100" -# 強制主機域名路由(關鍵!) -[forced-hosts] -"parkour.您的網域.com" = ["parkour"] -"survival.您的網域.com" = ["survival"] -"lobby.您的網域.com" = ["lobby"] +# 伺服器列表 MOTD +motd = "Karylab Minecraft Network" + +# 最大顯示玩家數 +show-max-players = 100 + +# 正版驗證 +online-mode = false + +# 防止透過代理/VPN連線 (會踢掉使用VPN的玩家,建議關閉) +prevent-client-proxy-connections = false + +# 如果有相同玩家嘗試重複登入,是否踢掉已在線的玩家 +kick-existing-players = true # 後端伺服器列表 [servers] -parkour = "crafty_controller:11110" -survival = "crafty_controller:11120" -lobby = "crafty_controller:11130" +parkour-spiral = "127.0.0.1:1110" +parkour-volcano = "127.0.0.1:1120" -# 預設進入的伺服器(玩家直接用IP連線時) -try = ["lobby"] +# 強制主機域名路由(關鍵!) +[forced-hosts] +"parkour-spiral.karylab.uk" = ["parkour-spiral"] +"parkour-volcano.karylab.uk" = ["parkour-volcano"] # 啟用 modern forwarding (讓後端伺服器知道玩家真實IP) player-info-forwarding-mode = "modern" + +# 是否宣告伺服器支援 Forge 模組 (原版伺服器設為 false) +announce-forge = false + +# 伺服器列表 Ping 穿透設定 (當玩家在 Minecraft 多人遊戲列表看到伺服器時,顯示的資訊從哪來) +ping-passthrough = "DISABLED" + +# 轉發密鑰檔案 +forwarding-secret-file = "forwarding.secret" + +[advanced] +# 壓縮閾值 +compression-threshold = 256 +compression-level = -1 +login-ratelimit = 3000 + +# 是否在日誌記錄玩家 IP +enable-player-address-logging = true