教學 · 預計閱讀 12 分鐘

Linux 安裝 Mihomo 並開機自啟:
systemd 服務與最小 YAML 設定

在 Linux 上不必依賴圖形介面也能跑代理。本文示範在 Debian、Ubuntu 或常見 VPS 映像檔上安裝 Mihomo(Clash.Meta)、撰寫與 Clash 相容的最小設定檔,並以 systemd 讓程序開機自啟、異常時自動重啟。

Linux · Mihomo · systemd · 伺服器代理 · 開發者

1 為何在 Linux 使用 Mihomo

許多開發者與維運人員會在雲端 VPS桌面 Linux上工作。相較於 Windows 與 macOS 上琳瑯滿目的圖形用戶端,Linux 環境往往更重視資源占用低、可腳本化、可無人值守。把代理核心當成系統服務跑在背景,搭配規則分流,就能讓 gitcurl、容器映像拉取等流量在需要時走節點,其餘時間維持直連。

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,權限與備份都較直覺。

Bash
sudo mkdir -p /etc/mihomo
sudo mkdir -p /var/log/mihomo

取得發行檔

至 Mihomo 官方 GitHub Releases 下載對應平台的壓縮檔(下列版本號請改為當前最新):

Bash
# 範例: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
小提醒 Debian、Ubuntu 有時可透過第三方打包的 .deb 安裝;若您需要跨發行版一致流程,單一二進位檔+手動更新通常最單純。安裝完成後可用 mihomo -v 確認版本。

3 最小 YAML 設定(Clash 相容)

Mihomo 啟動時會讀取設定目錄下的 config.yaml。下列範本提供混合埠(HTTP/SOCKS5)、對外 API(供面板或腳本切換節點)、以及基礎 DNS,規則僅示範「中國大陸 IP 直連、其餘走代理群組」。您需要把真實節點寫進 proxies,並把節點名稱加入 proxy-groupsPROXY 群組。

YAML (/etc/mihomo/config.yaml)
# 外部控制器(網頁面板 / 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 錯誤而反覆重啟:

Bash
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,並在程序退出時自動重啟。

Bash
sudo nano /etc/systemd/system/mihomo.service

寫入下列內容(-d 指向設定目錄):

Service File
[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 服務管理常用指令

修改單元檔或變更設定後,依序執行:

Bash
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 後,應用程式不會自動走代理,除非它們讀取環境變數或內建代理設定。

目前工作階段暫時生效

Shell
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

簡易驗證

Bash
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,可以搭配站上的下載頁選擇合適用戶端,與本文的命令列方案互補。

立即免費下載 Clash,體驗穩定流暢的跨平台代理 →

標籤: Linux Mihomo systemd Clash VPS YAML
Clash 用戶端 Logo

Clash Verge Rev

新一代 Clash 用戶端 · 免費開源

繼承 Clash for Windows 衣缽、內建 TUN 模式、支援訂閱一鍵匯入,Windows、macOS、Linux 全平台可用。專為開發者與進階用戶設計,無論是日常連線還是進階分流,都能輕鬆應對。

TUN 全流量接管 Mihomo 高效能核心 精準規則分流 DNS 防洩漏 多訂閱管理

相關閱讀