fix(security): 收紧默认部署暴露面
Test deployment public URL (Linux) / test-linux (push) Canceled after 0s
Test start.ps1 (Windows) / test-windows (push) Canceled after 0s

This commit is contained in:
2026-09-12 21:56:37 +08:00
parent 40732c011b
commit f4e7b9b461
9 changed files with 504 additions and 115 deletions
+20 -18
View File
@@ -10,7 +10,7 @@ services:
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${WEB_PORT}:3010"
- "${EASYAI_PROXY_BIND_IP:-127.0.0.1}:${WEB_PORT}:3010"
# read_only: true
networks:
easyai:
@@ -55,11 +55,12 @@ services:
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${SERVER_HTTP_BIND_IP:-127.0.0.1}:${SERVER_HTTP_PORT}:3001" # 域名/本机部署默认仅回环;IP/LAN 模式由启动脚本显式设为 0.0.0.0
- "${SERVER_HTTP_BIND_IP:-127.0.0.1}:${SERVER_HTTP_PORT}:3001" # Linux Nginx 部署默认仅回环;Windows/LAN 直连由启动脚本显式覆盖
# read_only: true
networks:
easyai:
ipv4_address: 172.21.0.6
sandbox-network:
depends_on:
- mongo
- redis
@@ -120,7 +121,8 @@ services:
- ASG_TCP_PORT=4003
# ws-gateway 转发客户端命令到 easyai-server(画布协作等),对应主服务 3001
- GATEWAY_INBOUND_ENABLED=${GATEWAY_INBOUND_ENABLED:-true}
- GATEWAY_INBOUND_TCP_LISTEN_HOST=${GATEWAY_INBOUND_TCP_LISTEN_HOST:-0.0.0.0}
# 仅监听主业务网络固定地址,避免沙箱网络访问内部 TCP 命令入口
- GATEWAY_INBOUND_TCP_LISTEN_HOST=${GATEWAY_INBOUND_TCP_LISTEN_HOST:-172.21.0.6}
- GATEWAY_INBOUND_TCP_PORT=${GATEWAY_INBOUND_TCP_PORT:-4001}
# Agent 记忆服务 TCP 连接(来自 .env)
- MEMORY_TCP_HOST=${MEMORY_TCP_HOST:-agent-memory}
@@ -149,7 +151,7 @@ services:
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${CONFIG_WS_PORT:-3002}:3002" # ws-gateway WebSocket 对外端口映射
- "${EASYAI_PROXY_BIND_IP:-127.0.0.1}:${CONFIG_WS_PORT:-3002}:3002" # Linux IP/域名模式默认仅供同机 Nginx 访问
read_only: true
networks:
- easyai
@@ -195,10 +197,9 @@ services:
image: ${MONGO_IMAGE:-registry.cn-shanghai.aliyuncs.com/comfy-ai/mongo-aliyun:latest}
container_name: mongo
restart: unless-stopped
privileged: true
# 生产环境建议不要暴露
ports:
- ${MONGO_PORT+${MONGO_PORT}:27017}
- "${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${MONGO_PORT:-27017}:27017"
networks:
easyai:
ipv4_address: 172.21.0.3
@@ -257,8 +258,8 @@ services:
RABBITMQ_DEFAULT_USER: ${CONFIG_MQ_USER} # 登录用户名
RABBITMQ_DEFAULT_PASS: ${CONFIG_MQ_PASSWORD} # 登录密码
ports:
- "${CONFIG_MQ_PORT}:${CONFIG_MQ_PORT}" # 应用连接端口 (AMQP)
- "${CONFIG_MQ_ADMIN_PORT}:15672" # Web 管理界面
- "${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${CONFIG_MQ_PORT}:${CONFIG_MQ_PORT}" # 应用连接端口 (AMQP)
- "${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${CONFIG_MQ_ADMIN_PORT}:15672" # Web 管理界面
volumes:
- rabbitmq_data:/var/lib/rabbitmq # 持久化数据
networks:
@@ -268,10 +269,8 @@ services:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/watchtower-aliyun:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --debug --http-api-update
command: --debug
restart: always
environment:
- WATCHTOWER_HTTP_API_TOKEN=sk-ofJoA4atj9dki6AvDtI1qwxdcejjDQ
labels:
- "com.centurylinklabs.watchtower.enable=false"
# ports:
@@ -295,7 +294,7 @@ services:
volumes:
- ./data/videoedit/temp:/app/temp
ports:
- '${VIDEO_EDIT_PORT}:8000'
- '${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${VIDEO_EDIT_PORT}:8000'
env_file:
- .env.tools
environment:
@@ -328,13 +327,12 @@ services:
image: registry.cn-shanghai.aliyuncs.com/easyaigc/dozzle:latest
environment:
DOZZLE_BASE: /logs-web
# DOZZLE_AUTH_PROVIDER: simple
DOZZLE_AUTH_TTL: 72h
DOZZLE_ENABLE_DOWNLOAD: "false"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
ports:
- "${DOZZLE_PORT:-8080}:8080"
- "${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${DOZZLE_PORT:-8080}:8080"
restart: unless-stopped
logging:
driver: "json-file"
@@ -345,7 +343,7 @@ services:
image: registry.cn-shanghai.aliyuncs.com/easyaigc/sandbox:latest
container_name: sandbox
networks:
- easyai
- sandbox-network
# 不映射宿主机端口,仅允许 Docker 内网中的 easyai-server 访问
labels:
- "com.centurylinklabs.watchtower.enable=true"
@@ -422,7 +420,7 @@ services:
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${ASG_PORT:-3003}:3003"
- "${EASYAI_PROXY_BIND_IP:-127.0.0.1}:${ASG_PORT:-3003}:3003"
networks:
easyai:
ipv4_address: 172.21.0.14
@@ -453,7 +451,7 @@ services:
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${AMS_PORT:-3004}:3004"
- "${EASYAI_INFRA_BIND_IP:-127.0.0.1}:${AMS_PORT:-3004}:3004"
environment:
- MEMORY_DATABASE_URL=${MEMORY_DATABASE_URL:-postgresql://easyai:easyai2025@easyai-pgvector:5432/easyai_memory}
networks:
@@ -530,3 +528,7 @@ networks:
config:
- subnet: 172.21.0.0/16
gateway: 172.21.0.1
# 仅 easyai-server 与 sandbox 共享,阻断沙箱横向访问数据库、缓存、MQ 与治理服务。
# 保持普通 bridge 以允许用户脚本按业务需要访问外网。
sandbox-network:
driver: bridge