Add minecraft server

This commit is contained in:
ChenKaiLiuG
2025-12-26 03:20:07 +08:00
parent 2f01362e68
commit 00257f9ff0
12 changed files with 140 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
version: "3.9"
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel --no-autoupdate run --token ${CLOUDFLARE_TOKEN}
networks:
- cloudflare_network
volumes:
- /opt/cloudflare/cloudflared:/etc/cloudflared
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
networks:
- cloudflare_network
- webproxy
volumes:
- /opt/cloudflare/npm/data:/data
- /opt/cloudflare/npm/letsencrypt:/etc/letsencrypt
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
restart: unless-stopped
ports:
- "18080:80"
networks:
- cloudflare_network
volumes:
- /opt/cloudflare/files:/srv
networks:
cloudflare_network:
driver: bridge
webproxy:
external: true

View File

@@ -0,0 +1,22 @@
version: "3.8"
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- /mnt/data/External/dashboard/configs:/app/data/configs
- /mnt/data/External/dashboard/icons:/app/public/icons
- homarr_data:/data
ports:
- "9070:7575"
networks:
- webproxy
volumes:
homarr_data:
networks:
webproxy:
external: true

View File

View File

@@ -0,0 +1,50 @@
version: '3.9'
services:
ghost:
image: ghost:5-alpine
container_name: ghost
restart: always
environment:
url: ${GHOST_URL}
database__client: mysql
database__connection__host: db
database__connection__user: root
# 從 .env 檔案中讀取密碼
database__connection__password: ${MYSQL_ROOT_PASSWORD}
database__connection__database: ghost
mail__transport: SMTP
mail__options__service: Gmail
mail__options__auth__user: ${MAIL_ADDRESS} # 你的郵箱@gmail.com
mail__options__auth__pass: ${MAIL_PASSWORD} # 應用程式專用密碼
# NODE_ENV: production
TRUST_PROXY: 1 # ← 告訴 Ghost 代理存在,使用 X-Forwarded-Proto 判斷 HTTPS
networks:
- ghost_network
- webproxy
volumes:
- /mnt/data/External/ghost_forum_data/content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8.0
container_name: ghost_db
restart: always
environment:
# 從 .env 檔案中讀取密碼
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ghost
networks:
- ghost_network
volumes:
- ghost_forum_db:/var/lib/mysql
volumes:
ghost_forum_db:
networks:
ghost_network:
driver: bridge
webproxy:
external: true

View File

@@ -0,0 +1,5 @@
version: '3.8'
services:
# 1. 核心郵件伺服器DMS v14+
mailserver:

View File

@@ -0,0 +1,49 @@
version: '3.8'
services:
db:
image: mariadb:10.6
container_name: nextcloud_db
restart: unless-stopped
networks:
- nextcloud_network
volumes:
- nextcloud_db:/var/lib/mysql
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
app:
image: nextcloud:latest
container_name: nextcloud_app
restart: unless-stopped
ports:
- "6900:80" # HTTP (內網)
- "6950:443" # HTTPS (供反向代理用,可透過 cert 處理)
networks:
- nextcloud_network
- webproxy
volumes:
- /mnt/data/External/Nextcloud_files:/var/www/html/data
- nextcloud_data:/var/www/html/
environment:
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- NEXTCLOUD_ADMIN_USER=karylab
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
depends_on:
- db
volumes:
nextcloud_db:
nextcloud_data:
networks:
nextcloud_network:
driver: bridge
webproxy:
external: true

View File

@@ -0,0 +1,61 @@
version: '3.8'
services:
ollama:
container_name: ollama
image: ollama/ollama:latest
restart: always
volumes:
- ollama-data:/root/.ollama
- /mnt/data/External/ollama_model:/ollama_models
ports:
- "11434:11434"
networks:
- llama_network
environment:
- OLLAMA_BASE_URL=http://ollama:11434
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
open-webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
restart: always
volumes:
- open-webui-data:/app/backend/data
ports:
- "9060:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
networks:
- llama_network
- webproxy
ollama-monitor:
image: docker:cli
container_name: ollama-monitor
restart: always
networks:
- llama_network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/data/External/ollama_monitor/monitor.sh:/monitor.sh:ro
entrypoint: ["/bin/sh", "/monitor.sh"]
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:
networks:
llama_network:
driver: bridge
webproxy:
external: true

View File

@@ -0,0 +1,96 @@
version: '3.8'
services:
# --- Coolify 核心管理服務 ---
coolify:
image: ghcr.io/coollabsio/coolify:latest
container_name: coolify
restart: always
environment:
- APP_ID=core
- APP_ENV=production
- APP_NAME=Coolify
- APP_KEY=${MY_APP_KEY}
- DB_HOST=coolify-db
- DB_PORT=5432
- DB_USERNAME=coolify
- DB_PASSWORD=${MY_DB_PASS}
- DB_DATABASE=coolify
- REDIS_HOST=coolify-redis
- REDIS_PASSWORD=${MY_REDIS_PASS}
# 重要:開啟調度器,確保它能管理 Docker
- COOLIFY_SCHEDULER_ENABLED=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/data/External/coolify_web/coolify_data:/data/coolify
- /mnt/data/External/coolify_web/coolify_ssh:/var/www/html/storage/app/ssh
ports:
# 這是 Coolify 的管理後台 UI
# 為了安全,我們這裡只映射到宿主機的高位端口,或者您可以註解掉,完全走 NPM
- "7900:8080"
depends_on:
- coolify-db
- coolify-redis
networks:
- coolify-infra
- webproxy # 加入您的跨 Stack 網橋
# --- Coolify 內建代理 (Traefik) ---
# 我們手動定義它,是為了強制它加入 webproxy 網路,並且不讓它佔用宿主機 80/443
coolify-proxy:
image: traefik:latest
container_name: coolify-proxy
restart: always
command:
- "--api.dashboard=true"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
# 關鍵Traefik 在容器內部監聽 80但不映射到宿主機
- "--entrypoints.web.address=:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- coolify-infra
- webproxy # 這樣 NPM 才能轉發流量給它
ports:
# 這裡故意不映射 80:80 和 443:443
# 只映射一個監控面板 port 供 debug (可選)
- "7800:8080"
# --- 資料庫依賴 ---
coolify-db:
image: postgres:15-alpine
container_name: coolify-db
restart: always
environment:
- POSTGRES_USER=coolify
- POSTGRES_PASSWORD=${MY_DB_PASS}
- POSTGRES_DB=coolify
volumes:
- coolify-db-data:/var/lib/postgresql/data
networks:
- coolify-infra
coolify-redis:
image: redis:alpine
container_name: coolify-redis
restart: always
command: redis-server --requirepass ${MY_REDIS_PASS}
volumes:
- coolify-redis-data:/data
networks:
- coolify-infra
# --- 網路設定 ---
networks:
coolify-infra:
driver: bridge
webproxy:
external: true
name: webproxy
# --- 數據卷 ---
volumes:
coolify-db-data:
coolify-redis-data:

View File

@@ -0,0 +1,53 @@
version: '3.8'
services:
ollama:
container_name: ollama
image: ollama/ollama:latest
restart: always
volumes:
- ollama-data:/root/.ollama
- /mnt/970_Containers/ollama_model:/ollama_models #主機的實體路徑(資料夾)
ports:
- "11434:11434"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 2 #視顯卡數量修改
capabilities: [gpu]
open-webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
restart: always
volumes:
- open-webui-data:/app/backend/data
ports:
- "9070:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
networks:
- stack_bridge
ollama-monitor:
image: docker:cli
container_name: ollama-monitor
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/data/External/ollama_monitor/monitor.sh:/monitor.sh:ro
entrypoint: ["/bin/sh", "/monitor.sh"]
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:
networks:
stack_bridge:
external: true

View File

@@ -0,0 +1,65 @@
version: '3.8'
services:
vllm:
container_name: vllm
image: vllm/vllm:latest
restart: always
volumes:
- vllm-data:/root/.vllm
- /mnt/970_Containers/ollama_model:/models
# Persist only conversation logs to a host folder (example relative path)
- ./data/vllm_convos:/root/.vllm/conversations
# Default HTTP port for the vllm server - adjust if your image uses a different port
ports:
- "8000:8000"
environment:
# Informational env for other services; change if your webui expects a different var
- VLLM_API_URL=http://vllm:8000
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 2 # adjust to your GPU count
capabilities: [gpu]
open-webui:
container_name: open-webui
image: ghcr.io/open-webui/open-webui:main
restart: always
volumes:
- open-webui-data:/app/backend/data
ports:
- "9070:8080"
# Many web frontends accept a backend URL env; adjust the variable name if needed.
environment:
- VLLM_BASE_URL=http://vllm:8000
networks:
- stack_bridge
vllm-monitor:
image: docker:cli
container_name: vllm-monitor
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/data/External/ollama_monitor/monitor.sh:/monitor.sh:ro
entrypoint: ["/bin/sh", "/monitor.sh"]
depends_on:
- vllm
volumes:
vllm-data:
open-webui-data:
networks:
stack_bridge:
external: true
# NOTES:
# - This compose file is a starting point. It assumes the vllm image exposes an HTTP API on port 8000
# and that conversation logs live under /root/.vllm/conversations inside the container.
# - If the real vllm image uses different paths or ports, update the paths/ports accordingly.
# - Keep the named volume `vllm-data` to hold other vllm internal state; the host mount
# ./data/vllm_convos will persist conversations specifically on the host.