Moon Bridge Docker 部署笔记(DeepSeek + MiniMax 双模型
字段即可切换,无需改 Moon Bridge。
·
1. 基本信息
| 项目 | 说明 |
|---|---|
| 项目 | Moon Bridge — Go 实现的协议转换代理 |
| 仓库 | https://github.com/ZhiYi-R/moon-bridge |
| 部署目标 | 192.168.109.200:22 (root) |
| 部署路径 | /home/wucf/docker/codex-bridge/ |
| 监听端口 | 4446 |
| 上游模型 | DeepSeek V4 Pro + MiniMax M1 |
2. 架构
本地 Codex (Windows) 远程服务器 (192.168.109.200)
┌───────────────────────┐ HTTP ┌──────────────────────────────────┐
│ config.toml │────────────▶│ Docker: moonbridge │
│ base_url: 192.168. │ │ - 4446:4446 │
│ 109.200:4446/v1 │ │ Transform 模式自动路由: │
│ │ │ │
│ model: deepseek-v4-pro │────────────▶│ deepseek → api.deepseek.com │
│ model: MiniMax-M2.7-highspeed │────────────▶│ minimax → api.minimax.chat │
└───────────────────────┘ └──────────────────────────────────┘
Codex 端改 model 字段即可切换,无需改 Moon Bridge。
3. 配置文件
3.1 config.yml
mode: "Transform"
log:
level: "info"
format: "text"
server:
addr: "0.0.0.0:4446"
persistence:
active_provider: db_sqlite
extensions:
deepseek_v4:
config:
reinforce_instructions: true
db_sqlite:
enabled: true
config:
path: /app/data/moonbridge.db
wal: true
busy_timeout_ms: 5000
max_open_conns: 1
metrics:
enabled: true
config:
default_limit: 100
max_limit: 1000
cache:
mode: "explicit"
ttl: "5m"
prompt_caching: true
defaults:
model: "deepseek-v4-pro"
max_tokens: 65536
models:
deepseek-v4-pro:
context_window: 262144
max_output_tokens: 384000
display_name: "DeepSeek V4 Pro"
extensions:
deepseek_v4:
enabled: true
MiniMax-M2.7-highspeed:
context_window: 262144
max_output_tokens: 65536
display_name: "MiniMax M1"
providers:
deepseek:
base_url: "https://api.deepseek.com/v1"
api_key: "sk-xxxxxxx"
protocol: "openai-chat"
minimax:
base_url: "https://api.minimax.chat/v1"
api_key: "sk-xxxxx"
protocol: "openai-chat"
routes:
deepseek-v4-pro:
model: deepseek-v4-pro
provider: deepseek
MiniMax-M2.7-highspeed:
model: MiniMax-M2.7-highspeed
provider: minimax
3.2 docker-compose.yml
services:
moonbridge:
build:
context: .
dockerfile: Dockerfile
image: moonbridge:latest
container_name: moonbridge
restart: unless-stopped
command:
- -config
- /app/config.yml
- -addr
- 0.0.0.0:4446
ports:
- "4446:4446"
volumes:
- /home/wucf/docker/codex-bridge/config.yml:/app/config.yml:ro
- /home/wucf/docker/codex-bridge/data:/app/data
- /home/wucf/docker/codex-bridge/logs:/app/logs
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "/app/moonbridge", "-config", "/app/config.yml", "-print-addr"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
3.3 Dockerfile
FROM golang:1.25-bookworm AS builder
ENV GOPROXY=https://goproxy.cn,direct
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/moonbridge ./cmd/moonbridge
FROM alpine:3.21
RUN apk add --no-cache ca-certificates tzdata
WORKDIR /app
COPY --from=builder /out/moonbridge /app/moonbridge
EXPOSE 4446
#RUN adduser -D -u 1000 moonbridge
USER nobody
ENTRYPOINT ["/app/moonbridge"]
CMD ["-config", "/app/config.yml", "-addr", "0.0.0.0:4446"]
4. 部署
4.1 首次部署
# 1. 上传项目
scp -r E:/usr/data/AppData/.codex/moon-bridge/ root@192.168.109.200:/home/wucf/docker/codex-bridge/
# 2. 确保 config.yml 填好了 MiniMax API Key(见 3.1)
### 4.2 验证
```bash
docker compose ps
curl http://127.0.0.1:4446/health
curl http://127.0.0.1:4446/v1/models # 应列出 deepseek-v4-pro 和 MiniMax-M2.7-highspeed
4.3 仅更新配置
scp config.yml root@192.168.109.200:/home/wucf/docker/codex-bridge/
ssh root@192.168.109.200 'cd /home/wucf/docker/codex-bridge && docker compose restart'
5. 运维
cd /home/wucf/docker/codex-bridge
docker compose ps # 状态
docker compose logs -f # 实时日志
docker compose logs --tail=50 # 最近 50 行
docker compose restart # 重启
docker compose up -d --build # 重建
docker compose down # 停止并删除容器
6. 本地 Codex 配置
C:\Users\wucf\.codex\config.toml:
model = "deepseek-v4-pro"
model_provider = "moonbridge"
[model_providers.moonbridge]
name = "MoonBridge"
base_url = "http://192.168.109.200:4446/v1"
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 600000
切换模型:只需改 model 字段:
model = "deepseek-v4-pro" # DeepSeek
model = "MiniMax-M2.7-highspeed" # MiniMax
7. 故障排查
构建阶段
| 现象 | 原因 | 解决 |
|---|---|---|
gcr.io 超时 |
国内无法访问 | 已改用 alpine:3.21 |
docker.io 拉取慢 |
未配镜像加速 | 见 7.3 |
go mod download 慢 |
Go 代理 | Dockerfile 已设 GOPROXY=https://goproxy.cn |
运行时
| 现象 | 原因 | 解决 |
|---|---|---|
401 / 403 |
API Key 错误 | 检查对应 provider 的 api_key |
| 端口不通 | 防火墙 | firewall-cmd --add-port=4446/tcp --permanent && firewall-cmd --reload |
| 容器反复重启 | 配置错误 | docker compose logs |
connection refused |
容器未启动 | docker compose ps |
Docker 镜像加速
# /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerhub.timeweb.cloud"
]
}
# systemctl restart docker
更多推荐


所有评论(0)