From 00257f9ff05f70be864274992356ba8d4fb9fe7a Mon Sep 17 00:00:00 2001 From: ChenKaiLiuG Date: Fri, 26 Dec 2025 03:20:07 +0800 Subject: [PATCH] Add minecraft server --- .gitignore | 1 + .../cloudflared+npm.yml | 0 {stack => karylab-entrance}/dashboard.yml | 0 .../entrance-website.yml | 0 {stack => karylab-entrance}/ghost-forum.yml | 0 {stack => karylab-entrance}/mail-service.yml | 0 {stack => karylab-entrance}/nextcloud.yml | 0 {stack => karylab-entrance}/ollama-webui.yml | 0 .../others/coolify-web.yml | 0 .../others/ollama-webui.yml | 0 .../others/vllm-webui.yml | 0 karylab-minecraft/minecraft.yml | 139 ++++++++++++++++++ 12 files changed, 140 insertions(+) create mode 100644 .gitignore rename {stack => karylab-entrance}/cloudflared+npm.yml (100%) rename {stack => karylab-entrance}/dashboard.yml (100%) rename {stack => karylab-entrance}/entrance-website.yml (100%) rename {stack => karylab-entrance}/ghost-forum.yml (100%) rename {stack => karylab-entrance}/mail-service.yml (100%) rename {stack => karylab-entrance}/nextcloud.yml (100%) rename {stack => karylab-entrance}/ollama-webui.yml (100%) rename {stack => karylab-entrance}/others/coolify-web.yml (100%) rename {stack => karylab-entrance}/others/ollama-webui.yml (100%) rename {stack => karylab-entrance}/others/vllm-webui.yml (100%) create mode 100644 karylab-minecraft/minecraft.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b66020 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +karylab-minecraft/example-server/ \ No newline at end of file diff --git a/stack/cloudflared+npm.yml b/karylab-entrance/cloudflared+npm.yml similarity index 100% rename from stack/cloudflared+npm.yml rename to karylab-entrance/cloudflared+npm.yml diff --git a/stack/dashboard.yml b/karylab-entrance/dashboard.yml similarity index 100% rename from stack/dashboard.yml rename to karylab-entrance/dashboard.yml diff --git a/stack/entrance-website.yml b/karylab-entrance/entrance-website.yml similarity index 100% rename from stack/entrance-website.yml rename to karylab-entrance/entrance-website.yml diff --git a/stack/ghost-forum.yml b/karylab-entrance/ghost-forum.yml similarity index 100% rename from stack/ghost-forum.yml rename to karylab-entrance/ghost-forum.yml diff --git a/stack/mail-service.yml b/karylab-entrance/mail-service.yml similarity index 100% rename from stack/mail-service.yml rename to karylab-entrance/mail-service.yml diff --git a/stack/nextcloud.yml b/karylab-entrance/nextcloud.yml similarity index 100% rename from stack/nextcloud.yml rename to karylab-entrance/nextcloud.yml diff --git a/stack/ollama-webui.yml b/karylab-entrance/ollama-webui.yml similarity index 100% rename from stack/ollama-webui.yml rename to karylab-entrance/ollama-webui.yml diff --git a/stack/others/coolify-web.yml b/karylab-entrance/others/coolify-web.yml similarity index 100% rename from stack/others/coolify-web.yml rename to karylab-entrance/others/coolify-web.yml diff --git a/stack/others/ollama-webui.yml b/karylab-entrance/others/ollama-webui.yml similarity index 100% rename from stack/others/ollama-webui.yml rename to karylab-entrance/others/ollama-webui.yml diff --git a/stack/others/vllm-webui.yml b/karylab-entrance/others/vllm-webui.yml similarity index 100% rename from stack/others/vllm-webui.yml rename to karylab-entrance/others/vllm-webui.yml diff --git a/karylab-minecraft/minecraft.yml b/karylab-minecraft/minecraft.yml new file mode 100644 index 0000000..120d16a --- /dev/null +++ b/karylab-minecraft/minecraft.yml @@ -0,0 +1,139 @@ +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:8000" # 管理介面 + - "1110-2000:1110-2000" # 預留 MC 埠口 + - "11100-12000:11100-12000/udp" # 預留 Bedrock 埠口 + volumes: + - ./crafty/backups:/var/opt/crafty/backups + - ./crafty/db:/var/opt/crafty/db + - ./crafty/logs:/var/opt/crafty/logs + - ./crafty/servers:/var/opt/crafty/servers + - ./crafty/config:/var/opt/crafty/app/config + - ./crafty/import:/var/opt/crafty/import + networks: + - minecraft_net + # 資源限制(避免單一伺服器吃光所有資源) + deploy: + resources: + limits: + memory: 24G + reservations: + memory: 8G # 保證最低 8GB,適合多伺服器同時運行 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/api/v2/status"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + + # 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 狀態 + - ./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