Bilibili - 鸦居
1989 字
10 分钟
使用Docker部署Mihomo
一、背景
我使用的VPS是国内运营商的服务器,无法连接外网,在连接dockerhub拉取镜像、下载外部插件等等的时候会很麻烦,就想给VPS搭梯子的方式解决这个问题,但又不能全局走代理,这样会很浪费流量,所以就通过mihomo(原clash meta)实现我需要的动态代理功能。
二、部署过程
我使用的是docker部署,第一步拉取镜像就趴下了。。因为拉取不到镜像,只能从自己Windows电脑上先拉取镜像,打成tar包再上传到VPS
- 拉取镜像
# 拉取镜像
docker pull metacube/mihomo:latest
# 如果拉取不到就走下面本地Windows拉取(Windows需要装个docker desktop),再上传到VPS的流程⬇️⬇️⬇️⬇️⬇️⬇️
docker save -o mihomo-latest.tar metacube/mihomo:latest # tar包会保存到当前目录
docker load -i mihomo-latest.tar # 在VPS上解析tar包为镜像
- docker compose部署
# =================== clash 代理 =======================
mihomo:
image: metacubex/mihomo:latest
container_name: mihomo
restart: always
network_mode: "host" # 关键:使用 host 网络模式,性能无损,无需端口映射
volumes:
- ./mihomo/config:/root/.config/mihomo # 挂载配置目录
# 如果需要持久化日志或订阅信息,也可以挂载其他目录
command: ["-d", "/root/.config/mihomo"]
- 配置代理配置文件
在./mihomo/config目录下配置你的config.yml文件,启动mihomo容器,mihomo会自动完成初始化及下载GeoIP配置
# 启动mihomo容器
docker compose up -d mihomo
三、修改系统变量及测试连通性
# 在当前SSH终端窗口配置代理连接
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
# 测试Google(如果返回 HTTP 200 或重定向,说明通了)
curl -I https://www.google.com
测试通过后,将环境变量写入系统配置即可(永久生效了):
# 追加到 ~/.bashrc
cat >> ~/.bashrc <<EOF
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
EOF
# 刷新当前终端的配置
source ~/.bashrc
对docker命令也生效(docker search/pull命令走代理):
# 创建配置目录
mkdir -p /etc/systemd/system/docker.service.d
# 创建代理配置文件
cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1"
EOF
# 重新加载 systemd 配置
systemctl daemon-reload
# 重启 Docker 服务
systemctl restart docker
# 检查 Docker 状态是否正常
systemctl status docker
# 再次尝试搜索或拉取镜像
docker search mihomo
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Firefly