1 為何在 Linux 使用 Mihomo
許多開發者與維運人員會在雲端 VPS或桌面 Linux上工作。相較於 Windows 與 macOS 上琳瑯滿目的圖形用戶端,Linux 環境往往更重視資源占用低、可腳本化、可無人值守。把代理核心當成系統服務跑在背景,搭配規則分流,就能讓 git、curl、容器映像拉取等流量在需要時走節點,其餘時間維持直連。
Mihomo(即 Clash.Meta)是活躍維護的 Clash 分支,語法與多數 Clash 教學相容,並支援較新的傳輸協定與進階功能。透過 systemd 託管程序,可在開機時自動啟動、崩潰後自動拉起,並將標準輸出寫入日誌檔,方便在伺服器上除錯。這套組合特別適合「只有 SSH、沒有桌面」的場景,也適合本機開發者在 WSL 或實體機上長駐一個本機代理埠。
若您手邊已有機場訂閱但格式不是原生 YAML,可先參考站內的訂閱轉換教學,把連結轉成 Mihomo 可讀的設定片段,再併入本文的範本。
Fedora、RHEL 與其衍生發行版同樣內建 systemd,流程與本文一致;若環境啟用 SELinux,需確認 Mihomo 執行檔與 /etc/mihomo 的標籤(context)允許讀寫,否則服務可能啟動後立刻因權限被拒而失敗。防火牆層面,僅本機使用時請維持 API 與混合埠綁在 127.0.0.1,並將 allow-lan 設為 false;若必須對區網或管理網段開放,請用 UFW、firewalld 或雲端安全群組白名單來源 IP,避免把控制介面暴露到整個網際網路。
2 下載與二進位安裝
請先確認 CPU 架構。大多數雲端主機為 amd64;樹莓派、部分 ARM 雲主機則為 arm64。在終端機執行 uname -m,看到 x86_64 即對應 amd64 套件。
建立目錄
建議將執行檔放在 /usr/local/bin,設定集中於 /etc/mihomo,日誌放在 /var/log/mihomo,權限與備份都較直覺。
sudo mkdir -p /etc/mihomo
sudo mkdir -p /var/log/mihomo
取得發行檔
至 Mihomo 官方 GitHub Releases 下載對應平台的壓縮檔(下列版本號請改為當前最新):
# 範例:amd64(請替換為實際最新連結)
wget https://github.com/MetaCubeX/Mihomo/releases/download/v1.18.0/mihomo-linux-amd64-v1.18.0.gz
gunzip mihomo-linux-amd64-v1.18.0.gz
sudo mv mihomo-linux-amd64-v1.18.0 /usr/local/bin/mihomo
sudo chmod +x /usr/local/bin/mihomo
.deb 安裝;若您需要跨發行版一致流程,單一二進位檔+手動更新通常最單純。安裝完成後可用 mihomo -v 確認版本。
3 最小 YAML 設定(Clash 相容)
Mihomo 啟動時會讀取設定目錄下的 config.yaml。下列範本提供混合埠(HTTP/SOCKS5)、對外 API(供面板或腳本切換節點)、以及基礎 DNS,規則僅示範「中國大陸 IP 直連、其餘走代理群組」。您需要把真實節點寫進 proxies,並把節點名稱加入 proxy-groups 的 PROXY 群組。
# 外部控制器(網頁面板 / REST API)
external-controller: 127.0.0.1:9090
secret: "請改成強密碼"
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://8.8.8.8/dns-query
- https://1.1.1.1/dns-query
proxies: []
# - name: "my-node"
# type: ss
# server: example.com
# port: 443
# cipher: aes-256-gcm
# password: "secret"
proxy-groups:
- name: PROXY
type: select
proxies:
- DIRECT
rules:
- GEOIP,CN,DIRECT
- MATCH,PROXY
將檔案儲存為 /etc/mihomo/config.yaml 後,務必檢查 YAML 縮排(僅能使用空格,不可混用 Tab)。若您打算在區網內其他裝置使用這台機器的代理,再把 allow-lan 改為 true,並搭配防火牆只開放信任網段。
external-controller 預設應綁在 127.0.0.1。若改為 0.0.0.0 並對公網開放,等於把切節點、看連線的 API 暴露在外,務必搭配防火牆、強密碼或僅內網存取。
啟動前自檢
交給 systemd 託管前,先用下列指令檢查設定語法,可避免因 YAML 錯誤而反覆重啟:
sudo /usr/local/bin/mihomo -t -d /etc/mihomo
測試通過後再執行 systemctl enable --now mihomo。之後每次修改 config.yaml,可用 sudo systemctl restart mihomo 重新載入。
想強化 DNS 隱私與防洩漏,可延伸閱讀Meta 核心 DNS 與 FakeIP 實作要點,再依環境微調 dns 區塊。
4 systemd 服務化設定
建立單元檔,讓系統在網路就緒後啟動 Mihomo,並在程序退出時自動重啟。
sudo nano /etc/systemd/system/mihomo.service
寫入下列內容(-d 指向設定目錄):
[Unit]
Description=Mihomo Daemon (Clash.Meta compatible)
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
StandardOutput=append:/var/log/mihomo/output.log
StandardError=append:/var/log/mihomo/error.log
[Install]
WantedBy=multi-user.target
mihomo),將 /etc/mihomo 與日誌目錄擁有者改為該帳號,並把 User= 改成同一使用者。若需 TUN 透明代理,常見作法仍是以 root 或具 CAP_NET_ADMIN 的權限執行,請依安全政策取捨。
5 服務管理常用指令
修改單元檔或變更設定後,依序執行:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
sudo systemctl status mihomo
狀態顯示 active (running) 即表示程序已常駐。更新 config.yaml 後可執行 sudo systemctl restart mihomo 套用。需要追蹤錯誤時,除了查看 /var/log/mihomo/error.log,也可使用 journalctl -u mihomo -f 即時觀察。
6 系統與終端機代理
Mihomo 監聽 mixed-port 後,應用程式不會自動走代理,除非它們讀取環境變數或內建代理設定。
目前工作階段暫時生效
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"
寫入登入腳本(僅影響目前使用者)
將上述兩行(或依需求含 ALL_PROXY)附加到 ~/.bashrc 或 ~/.zshrc,再執行 source ~/.zshrc。
簡易驗證
curl -I https://www.google.com
若已正確填入節點且規則匹配,通常會看到 HTTP/2 200 類回應。若仍逾時,請先確認服務狀態、本機埠是否被占用,以及規則是否將目標網域導向 PROXY。
若希望整機流量無需手動設定環境變數,可研究 Mihomo 的 TUN 模式;圖形化用戶端方面可參考Clash Verge Rev 與 TUN 模式說明,與純命令列部署可並存於不同使用情境。
7 常見問題排查
- 服務無法啟動:執行
journalctl -u mihomo -n 80 --no-pager。常見原因是 YAML 語法錯誤、proxies為空卻將流量導向不存在的節點,或埠號被其他程序占用。 - 連上本機埠但無法出網:檢查
proxy-groups是否已包含實際節點名稱,並確認訂閱或手寫節點可連線。 - 需要遠端操作面板:若將 API 監聽改為
0.0.0.0,請用防火牆限制來源 IP(例如ufw allow from 您的辦公室 IP to any port 9090),避免公開網際網路裸奔。 - DNS 異常:確認沒有其他服務占用與
dns.listen相同的埠;必要時可改用較少衝突的埠並在系統或 TUN 場景中配合轉發。
8 總結
在 Linux 上安裝 Mihomo 並以 systemd 託管,是把代理能力「基礎設施化」的務實作法:一次設定後,背景常駐、開機自啟、日誌可追蹤,對伺服器與開發機都適用。設定檔維持 Clash 系慣用的 YAML 結構,也能降低學習成本。
相較僅在瀏覽器裝外掛的做法,本機或 VPS 上的規則引擎能統一處理命令列與腳本流量;若您也希望在桌面環境用圖形介面管理訂閱與一鍵 TUN,可以搭配站上的下載頁選擇合適用戶端,與本文的命令列方案互補。