从零搭建 Mihomo(Clash Meta)代理服务端
本文将指导你在 VPS 上使用 Docker 部署 Mihomo(原 Clash Meta)作为 Shadowsocks 服务端,让你的所有设备都能通过一个稳定的代理服务访问外网。全程只需一个容器,配置简洁,适合自建节点用户。
📌 适用场景
- 你已经有一台境外 VPS
- 想自己搭建代理服务,摆脱对第三方机场的依赖
- 希望服务端直接提供 Shadowsocks 协议,供手机、电脑等多设备使用
- 追求轻量、稳定、易维护
🧰 准备工作
- 一台境外 VPS
- SSH 客户端(连接服务器)
- Docker 和 Docker Compose(已安装)
如果你还没安装 Docker,可以执行以下命令快速安装:
curl -fsSL https://get.docker.com | bash systemctl enable docker && systemctl start docker
📁 创建项目目录
在 VPS 上创建一个工作目录:
mkdir ~/mihomo && cd ~/mihomo📝 编写配置文件 config.yaml
这是核心配置文件。我们让 Mihomo 作为 Shadowsocks 服务端,直接监听 10086 端口,并直连出站(因为 VPS 在境外,无需额外代理)。
# ==========================================
# Mihomo 服务端配置
# 功能:Shadowsocks 服务端 + 直连出站
# ==========================================
# ---------- 基础设置 ----------
mixed-port: 7890 # HTTP/SOCKS5 混合代理(本地测试用)
allow-lan: true # 允许局域网连接
bind-address: "*" # 监听所有网卡
mode: rule # 规则模式
log-level: info
ipv6: false # 全局禁用 IPv6(避免连接超时)
# ---------- DNS 设置 ----------
dns:
enable: true
listen: 0.0.0.0:53
ipv6: false # DNS 不返回 AAAA 记录
nameserver:
- 223.5.5.5 # 阿里 DNS(IPv4)
- 114.114.114.114
# ---------- 外部控制(Web 面板 API) ----------
external-controller: 127.0.0.1:9090 # 只监听本地,更安全
secret: "your-strong-password" # 请修改为强密码!
# ---------- 入站:Shadowsocks 服务 ----------
listeners:
- name: ss-in
type: shadowsocks
port: 10086 # 对外端口
listen: 0.0.0.0 # 接受所有来源
cipher: aes-256-gcm # 加密方式
password: your-ss-password # 请修改!
udp: true # 支持 UDP
# ---------- 出站:直连 ----------
proxy-groups:
- name: "PROXY"
type: select
proxies:
- DIRECT # 直接通过 VPS 网络出站
# ---------- 分流规则 ----------
rules:
# 明确拒绝所有 IPv6 流量(双重保险)
- IP-CIDR6,::/0,REJECT
# 国内 IP 直连(对境外 VPS 影响不大)
- GEOIP,CN,DIRECT
# 所有其他流量走 PROXY(即直连)
- MATCH,PROXY⚠️ 请务必修改:
password: your-ss-password→ 换一个复杂密码secret: "your-strong-password"→ 换一个强密码
🐳 编写 docker-compose.yml
使用 Docker Compose 管理容器,方便启动、停止和更新。
services:
mihomo:
image: metacubex/mihomo:latest
container_name: mihomo
restart: always
network_mode: "host" # 使用宿主机网络,避免端口映射性能损耗
volumes:
- ./config.yaml:/root/.config/mihomo/config.yaml
cap_add:
- NET_ADMIN # 允许管理网络(TUN 模式需要,这里可保留)为什么用
network_mode: host?
- 简化端口管理,无需映射
- 性能更好,尤其适合 UDP 代理
- 容器直接使用宿主机网络栈
🚀 启动容器
在 ~/mihomo 目录下执行:
docker-compose up -d查看日志确认是否成功:
docker logs mihomo正常输出应包含:
ShadowSocks[ss-in] proxy listening at: [::]:10086
Mixed(http+socks) proxy listening at: [::]:7890
Initial configuration complete, total time: 1ms🔥 防火墙放行端口
确保 VPS 防火墙和云服务商安全组放行 10086 端口(TCP 和 UDP):
ufw allow 10086/tcp
ufw allow 10086/udp如果你使用云厂商(如阿里云、腾讯云、AWS),还需在控制台的安全组规则中添加入站规则:协议 TCP/UDP,端口 10086,源 IP 0.0.0.0/0。🧪 测试服务端是否正常
在 VPS 上通过本地代理测试访问 Google:
curl -x http://127.0.0.1:7890 https://www.google.com -I如果返回 HTTP/2 200 或 HTTP/1.1 200 OK,说明服务端工作正常。
📱 客户端连接
现在你可以在任何设备上使用 Shadowsocks 客户端连接:
| 参数 | 值 |
|---|---|
| 服务器地址 | your-ip(你的 VPS 公网 IP) |
| 端口 | 10086 |
| 加密方式 | aes-256-gcm |
| 密码 | your-ss-password(你配置的密码) |
推荐客户端
- Windows:Shadowsocks for Windows / Clash Verge
- macOS:ShadowsocksX-NG / ClashX / Clash Verge
- iOS:Shadowrocket(付费)/ Quantumult X
- Android:Shadowsocks / Clash Meta for Android
连接成功后,访问 Google 即可验证。
🔒 安全建议
- 更换默认密码:配置文件中的
password和secret请务必修改为强密码(大小写字母+数字+符号)。 - 限制面板访问:
external-controller已设为127.0.0.1:9090,如需远程访问,改为0.0.0.0:9090并设置强secret。 - 限制端口来源(可选):如果你只在固定 IP 下使用,可在安全组中将
10086端口仅允许你的家庭/办公 IP。 定期更新镜像:
docker-compose pull mihomo docker-compose up -d
❓ 常见问题
Q1:连接后无法访问外网,日志显示 connection refused?
检查防火墙和安全组是否放行了 10086 端口,以及服务端是否正确监听 0.0.0.0。
Q2:日志出现 2001::1 超时错误?
这是 IPv6 连接问题。配置中已通过 ipv6: false 和 IP-CIDR6,::/0,REJECT 禁用 IPv6,若仍有问题,可在宿主机系统层面禁用 IPv6(谨慎操作):
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1Q3:如何更新配置?
修改 config.yaml 后,重启容器即可:
docker-compose restart mihomoQ4:如何查看实时日志?
docker logs -f mihomo🎯 总结
通过以上步骤,你已经成功在 VPS 上部署了一个高性能、稳定的 Shadowsocks 服务端,核心组件只有 Mihomo + Docker,资源占用极低。
整个方案的亮点:
- ✅ 一个配置文件搞定所有
- ✅ 容器化,易于迁移和备份
- ✅ 支持 UDP,适合游戏和语音
- ✅ 可扩展性强,后续可添加更多协议或规则
现在,尽情享受你的私有代理服务吧!如果你在搭建过程中遇到问题,欢迎在评论区留言交流。
📌 本文所有配置均基于 Mihomo 最新版本(metacubex/mihomo:latest),如有变动请参考官方文档。