Add minecraft server
This commit is contained in:
44
karylab-entrance/cloudflared+npm.yml
Normal file
44
karylab-entrance/cloudflared+npm.yml
Normal 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
|
||||
22
karylab-entrance/dashboard.yml
Normal file
22
karylab-entrance/dashboard.yml
Normal 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
|
||||
0
karylab-entrance/entrance-website.yml
Normal file
0
karylab-entrance/entrance-website.yml
Normal file
50
karylab-entrance/ghost-forum.yml
Normal file
50
karylab-entrance/ghost-forum.yml
Normal 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
|
||||
5
karylab-entrance/mail-service.yml
Normal file
5
karylab-entrance/mail-service.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# 1. 核心郵件伺服器(DMS v14+)
|
||||
mailserver:
|
||||
49
karylab-entrance/nextcloud.yml
Normal file
49
karylab-entrance/nextcloud.yml
Normal 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
|
||||
61
karylab-entrance/ollama-webui.yml
Normal file
61
karylab-entrance/ollama-webui.yml
Normal 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
|
||||
96
karylab-entrance/others/coolify-web.yml
Normal file
96
karylab-entrance/others/coolify-web.yml
Normal 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:
|
||||
53
karylab-entrance/others/ollama-webui.yml
Normal file
53
karylab-entrance/others/ollama-webui.yml
Normal 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
|
||||
65
karylab-entrance/others/vllm-webui.yml
Normal file
65
karylab-entrance/others/vllm-webui.yml
Normal 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.
|
||||
Reference in New Issue
Block a user