伺服器、軟路由、NAS 上沒有桌面環境,裝 Clash Verge 沒意義。這些場景直接跑 Mihomo 核心 就行——它本身就是個單檔案命令列程式。
這篇以 Linux amd64 為例走一遍完整流程。
一、下載並安裝
本站下載的是 .gz 壓縮檔,裡面就是一個可執行檔案:
# 下載後解壓縮
gunzip mihomo-linux-amd64-v1.19.29.gz
# 賦予執行權限
chmod +x mihomo-linux-amd64-v1.19.29
# 放到 PATH 裡,順便改個短名字
sudo mv mihomo-linux-amd64-v1.19.29 /usr/local/bin/mihomo
# 驗證
mihomo -v正常會輸出版本號和編譯資訊。
二、準備設定目錄
Mihomo 需要一個工作目錄存放設定和資料庫:
sudo mkdir -p /etc/mihomo
cd /etc/mihomo把你的 config.yaml 放進去。如果你用的是訂閱連結,可以直接下載下來:
sudo curl -L -o /etc/mihomo/config.yaml \
-A "clash.meta" \
"你的订阅链接"設定裡至少要有這幾項才能正常工作:
mixed-port: 7890 # 混合端口(HTTP + SOCKS5)
allow-lan: true # 允许局域网设备连接
bind-address: "*"
mode: rule
log-level: info
external-controller: 0.0.0.0:9090 # 外部控制 API
secret: "改成你自己的密码" # API 密码,公网环境必设三、前台跑一遍確認沒問題
mihomo -d /etc/mihomo-d 指定工作目錄。正常會看到類似輸出:
INFO[0000] Start initial configuration in progress
INFO[0000] Geodata Loader mode: memconservative
INFO[0000] HTTP proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: [::]:9090看到 listening at 就說明起來了。
前台確認沒問題後,Ctrl+C 停掉,接下來做成服務。
四、寫 systemd 服務
創建 /etc/systemd/system/mihomo.service:
[Unit]
Description=Mihomo Daemon
Documentation=https://wiki.metacubex.one
After=network.target nss-lookup.target
[Service]
Type=simple
User=root
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
[Install]
WantedBy=multi-user.target然後:
sudo systemctl daemon-reload
sudo systemctl enable mihomo # 开机自启
sudo systemctl start mihomo # 立即启动
sudo systemctl status mihomo # 查看状态看到 active (running) 就成功了。
常用運維命令
sudo systemctl restart mihomo # 改完配置后重启
sudo systemctl stop mihomo # 停止
journalctl -u mihomo -f # 实时看日志
journalctl -u mihomo -n 100 # 看最近 100 行五、讓其他設備用上它
設定裡 allow-lan: true 已經開了區域網路訪問。其他設備只要把代理指向這台機器的 IP + 連接埠即可:
在用戶端設備上:
- Windows:設定 → 網路和 Internet → 代理 → 手動設定代理 → 填
192.168.1.10和7890 - 手機(Wi-Fi):長按當前 Wi-Fi → 修改網路 → 高級 → 代理選「手動」→ 填上面的地址和連接埠
- 路由器級別:如果軟路由本身就是閘道,可以配合 TUN/TProxy 做透明代理,全家自動生效(這部分設定較複雜,本文不展開)
六、外部控制 API 與面板
設定裡的 external-controller: 0.0.0.0:9090 開了一個 RESTful API,可以用它來切換節點、查看連接、重載設定。
簡單驗證:
curl -H "Authorization: Bearer 你的secret" http://127.0.0.1:9090/version常用接口:
| 接口 | 作用 |
|---|---|
GET /proxies | 列出所有節點和策略組 |
PUT /proxies/{组名} | 切換某個策略組選中的節點 |
GET /connections | 當前所有連接 |
DELETE /connections | 斷開所有連接 |
GET /logs | 實時日誌流 |
PUT /configs?force=true | 重載設定 |
配合網頁面板(如 metacubexd、yacd)可以得到一個和圖形用戶端差不多的管理介面,把面板檔案放到本地目錄,用 external-ui 指向它即可:
external-ui: /etc/mihomo/ui
external-ui-name: metacubexd然後瀏覽器訪問 http://服务器IP:9090/ui。
七、訂閱自動更新
命令列部署沒有用戶端幫你更新訂閱,用 cron 自己做:
sudo crontab -e加一行(每天凌晨 4 點更新並重新啟動):
0 4 * * * curl -L -A "clash.meta" -o /etc/mihomo/config.yaml "你的订阅链接" && systemctl restart mihomo更穩妥的做法是先下載到臨時檔案、校驗通過再替換:
#!/bin/bash
TMP=$(mktemp)
curl -fsSL -A "clash.meta" -o "$TMP" "你的订阅链接" || exit 1
# 簡單校驗:必須包含 proxies 段
grep -q "^proxies:" "$TMP" || { rm -f "$TMP"; exit 1; }
mv "$TMP" /etc/mihomo/config.yaml
systemctl restart mihomo存成 /usr/local/bin/update-mihomo.sh,chmod +x,然後 cron 裡調用它。這樣訂閱接口臨時抽風時不會把好設定覆蓋成一個錯誤頁。
常見問題
啟動失敗,日誌報 unmarshal error 設定檔 YAML 語法有問題,或者用了當前核心版本不支援的欄位。用 mihomo -t -d /etc/mihomo 做一次設定檢查(-t 是 test 模式)。
連接埠被佔用 sudo ss -tlnp | grep 7890 看是誰佔了,改設定裡的連接埠或者停掉佔用的行程。
GeoIP 資料庫下載失敗 手動下載 geoip.metadb、geosite.dat 放到工作目錄,或者在設定裡關掉自動更新:
geo-auto-update: false小結
Mihomo 命令列部署的核心就四步:放二進位、放設定、systemd 常駐、防火牆限制來源。
跑起來之後它就是個不需要維護的後台服務,比在每台設備上裝用戶端省事得多。
相關:區域網路共享代理、Linux 安裝 Clash Verge。