基于 Docker Compose 部署在 OpenWrt (x86_x64) 上的 Mihomo 代理服务器。
- 模式:代理服务器(Mixed / SOCKS5 / HTTP)
- 无 TUN / 无 TProxy / 不修改路由表
- Web 管理:Zashboard
- DNS:Fake-IP,支持 Windows AD 域环境(moolo.net → 192.168.1.3,请在config.yaml.template修改为自己的域名和域控DNS)
/opt/mihomo
├── .env # ★ 所有配置都在这里编辑
├── compose.yaml
├── backup/
├── cache/
├── config/
│ ├── config.yaml # 自动生成,不要手动编辑
│ └── config.yaml.template # 配置模板
├── dashboard/
├── logs/
├── providers/
│ ├── proxy/
│ └── ruleset/
└── scripts/
├── apply-config.sh # ★ 渲染模板 → 生成 config.yaml
├── generate-secret.sh
├── backup.sh
├── restore.sh
└── update.sh
| 功能 | 端口 |
|---|---|
| Mixed | 9070 |
| SOCKS5 | 9071 |
| HTTP | 9072 |
| API | 9073 |
| Dashboard | 9075 |
| DNS | 1053 |
scp -r ./mihomo root@192.168.1.1:/opt/mihomo
ssh root@192.168.1.1vi /opt/mihomo/.env需要填写的三项:
# 你的原始订阅链接(V2Ray / SS / Trojan / VMess 等均可)
SUBSCRIPTION_URL=https://你的订阅链接
# subconverter 公共后端(默认即可,也可填自建地址)
SUBCONVERTER_URL=https://sub.xeton.dev
# Secret 暂时留空,下一步自动生成
SECRET=cd /opt/mihomo
sh scripts/generate-secret.shsh scripts/apply-config.sh此步骤读取 .env 中的订阅链接和 Secret,渲染成 config/config.yaml。
docker compose up -d浏览器打开:http://192.168.1.1:9075
首次连接填入:
- API 地址:
http://192.168.1.1:9073 - Secret:
.env文件中SECRET=的值
在需要使用代理的设备上,配置以下任一代理地址:
| 类型 | 地址 | 端口 |
|---|---|---|
| Mixed | 192.168.1.1 | 9070 |
| SOCKS5 | 192.168.1.1 | 9071 |
| HTTP | 192.168.1.1 | 9072 |
DNS(可选):192.168.1.1:1053(Fake-IP 模式)
- 编辑
.env,修改SUBSCRIPTION_URL=的值 - 重新生成配置并重启:
cd /opt/mihomo
sh scripts/apply-config.sh
docker compose restart mihomo或一步完成(同时检查镜像更新):
sh scripts/update.shcd /opt/mihomo
sh scripts/update.sh脚本会依次:重新渲染配置 → docker compose pull → docker compose up -d
cd /opt/mihomo
sh scripts/backup.sh备份内容:config/(含模板)、providers/、.env
保留最新 5 个,命名:mihomo_backup_YYYYMMDD_HHMMSS.tar.gz
cd /opt/mihomo
# 恢复最新备份
sh scripts/restore.sh
# 恢复指定备份
sh scripts/restore.sh backup/mihomo_backup_20250101_120000.tar.gz恢复后启动:
sh scripts/apply-config.sh
docker compose up -d# 旧机器备份
sh /opt/mihomo/scripts/backup.sh
# 复制整个目录到新机器
scp -r /opt/mihomo root@新服务器IP:/opt/mihomo
# 新机器上启动
ssh root@新服务器IP
cd /opt/mihomo
sh scripts/apply-config.sh
docker compose up -ddocker compose logs -f mihomo
docker compose logs -f zashboarddocker compose ps- 检查
config/config.yaml是否存在(需先运行apply-config.sh) - YAML 格式错误:
cat config/config.yaml检查内容 - 端口占用:
ss -tlnp | grep 9070
- 检查
.env中SUBSCRIPTION_URL是否正确 - 在浏览器中测试转换 URL 是否可访问:
查看
config/config.yaml中proxy-providers.subscription.url的值,在浏览器打开 - 可尝试更换
SUBCONVERTER_URL为其他公共后端:https://api.v1.mkhttps://sub.mi200.top
sh scripts/generate-secret.sh
sh scripts/apply-config.sh
docker compose restart mihomo| 变量 | 说明 | 默认值 |
|---|---|---|
SUBSCRIPTION_URL |
原始订阅链接 | (必填) |
SUBCONVERTER_URL |
subconverter 后端地址 | https://sub.xeton.dev |
SECRET |
Dashboard/API 认证密钥 | (由脚本生成) |
HOST_IP |
本机 IP | 192.168.1.1 |
CHINA_DNS |
国内/域控 DNS | 192.168.1.3 |
FOREIGN_DOH |
国外 DoH 主 | https://1.1.1.1/dns-query |
FOREIGN_DOH_FALLBACK |
国外 DoH 备 | https://dns.google/dns-query |
| 策略组 | 说明 |
|---|---|
| 🚀 节点选择 | 手动选择节点 |
| ♻ 自动选择 | 延迟最低节点(自动测速) |
| 🎯 全球直连 | 直连,不走代理 |
| 🤖 OpenAI | ChatGPT / OpenAI |
| 📦 GitHub | GitHub |
| 🍎 Apple | Apple 服务 |
| Ⓜ Microsoft | 微软服务 |
| 📨 Telegram | Telegram |
| 🌍 国外网站 | 通用国外流量 |
| 🐟 漏网之鱼 | 兜底规则 |
默认各应用组均引用「🚀 节点选择」,在 Dashboard 中可单独调整。
- 不启用 TUN
- 不修改 OpenWrt 路由
- 所有配置集中在
.env,config.yaml自动生成 - 使用官方推荐配置 + MetaCubeX 官方规则集
- 长期维护优先,迁移友好