mihomo Linux 伺服器部署教學(含 systemd 自動啟動)
沒有桌面環境的機器——VPS、NAS、家裡那台舊筆電改的伺服器——沒辦法裝圖形客戶端,但正好是 mihomo 核心最適合的舞台:一支二進位檔、一份 YAML、一個 systemd 服務單元,就能常駐執行、開機自動啟動、掛掉自動重開。
這篇教學用本站提供的 v1.19.29 走完整套流程:安裝核心、建立設定目錄、寫服務單元、驗證出口,最後是更新與回退舊版的做法。以下指令假設你有 sudo 權限,路徑可依習慣調整,但請前後保持一致。
下載核心並安裝到 /usr/local/bin
先確認機器的 CPU 架構,再到下載中心的 Linux 區塊取得對應的 .gz 檔:
uname -m
# x86_64 → 下載 linux-amd64
# aarch64 → 下載 linux-arm64
下載回來的是單檔壓縮,解壓縮之後就是可執行的核心本體。加上執行權限,再搬到 /usr/local/bin 並統一命名為 mihomo:
cd /tmp
gunzip mihomo-linux-amd64-v1.19.29.gz
chmod +x mihomo-linux-amd64-v1.19.29
sudo mv mihomo-linux-amd64-v1.19.29 /usr/local/bin/mihomo
檔名請以你實際下載到的為準。這一步做完之後,任何路徑下都能直接呼叫 mihomo。
建立設定目錄與 config.yaml
伺服器上習慣把設定放在 /etc 底下,之後啟動時用 -d 指向它,核心產生的規則資料與快取也會落在同一個目錄:
sudo mkdir -p /etc/mihomo
sudo nano /etc/mihomo/config.yaml
先放一份最小設定確認核心跑得起來,再把服務商訂閱的節點與規則補進去:
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
proxies: []
proxy-groups: []
rules:
- MATCH,DIRECT
寫完之後先驗證語法,避免服務啟動失敗還要回頭猜原因:
mihomo -t -f /etc/mihomo/config.yaml
注意:allow-lan: true 會讓區域網路內的其他裝置都能使用這個代理連接埠。放在公開網路的機器請務必用防火牆限制來源 IP,或改回 false 只給本機使用,否則等於開了一個誰都能用的出口。
撰寫 systemd 服務單元
建立 /etc/systemd/system/mihomo.service,內容如下:
[Unit]
Description=mihomo Proxy Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=always
RestartSec=5
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
幾個欄位值得說明:After 與 Wants 確保網路就緒後才啟動;Restart=always 搭配 RestartSec=5,讓核心意外結束時自動重來;LimitNOFILE 放寬可開啟檔案數的上限,連線數多的時候比較不會踩到限制。
啟動、開機自動啟動與查看記錄
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
systemctl status mihomo
enable --now 一次做兩件事:設定開機自動啟動,並立刻啟動服務。狀態顯示 active (running) 就代表正常。想看即時記錄,用 journalctl 跟著輸出:
journalctl -u mihomo -f
服務起不來時,錯誤訊息幾乎都會出現在這裡,最常見的還是設定檔語法錯誤與連接埠被佔用。修改設定之後,用 sudo systemctl restart mihomo 重新載入即可。
驗證出口是否真的走代理
在同一台機器上用 curl 指定代理連接埠測試,能取得回應就表示核心正常轉發:
curl -x http://127.0.0.1:7890 -sS -o /dev/null -w "%{http_code}\n" https://example.com
回傳 200 之類的狀態碼即代表通了。若要比對是否真的換了出口,可以分別跑帶 -x 與不帶 -x 的版本,觀察對外查詢到的位址是否不同。這時記得把設定裡的 rules 換成會實際走代理的規則,否則最小設定全走直連,結果自然一樣。
補充:伺服器上的解析行為與桌面不太一樣,若出現「連得上但部分網域解析怪怪的」,通常和 DNS 段落的設定有關,處理方向可以參考 mihomo DNS 設定詳解。
更新與回退舊版
- 先停止服務:
sudo systemctl stop mihomo。 - 備份現有執行檔:
sudo cp /usr/local/bin/mihomo /usr/local/bin/mihomo.bak。 - 解壓縮新版、加上執行權限,覆蓋到
/usr/local/bin/mihomo。 - 重新啟動:
sudo systemctl start mihomo,再用 journalctl 確認沒有錯誤。
要回退時,把備份檔改回原名再重啟服務就好。設定檔放在 /etc/mihomo,升級與回退都不會動到它,這也是把資料目錄與執行檔分開放的好處。設定檔的欄位含義可參考 mihomo 設定檔入門;若你也想在自己的 Windows 電腦上手動跑核心,做法整理在 mihomo Windows 命令列部署教學。