教學 2026-04-05 · 約 18 分鐘閱讀

Clash Linux 無圖形環境部署:Meta 核心、systemd 常駐與訂閱自動更新

若您要在 VPS、家用伺服器或沒有桌面的 Linux 上長期運行 Clash,圖形介面教學往往派不上用場。本文以 Clash Meta 系列核心(社群常稱 mihomo)為例,說明如何放置執行檔與設定目錄、用 systemd 做到常駐與開機自啟,並處理訂閱與規則的週期更新與熱重載,最後補上命令列環境的代理變數,讓 curlapt、容器與 CI 都能一致走代理。

為什麼 Linux 無頭場景要單獨說明?

Windows 或 Android 上的 Clash 用戶端,本質是「核心+圖形殼+一鍵匯入訂閱」。換到沒有顯示環境的 Linux,您通常只需要一個可長期執行的核心行程、清楚的設定目錄,以及能與系統服務管理器(多數發行版為 systemd)整合的啟動方式。這與桌面版最大的差異在於:沒有 Profiles 按鈕可點,所有行為都落在設定檔、API 與檔案權限上。

Clash Meta(上游實作常以 mihomo 釋出)在無頭環境特別常見,因為它延續 Clash 規則模型、支援多種現代協定,並提供外部控制器(REST API),方便您用指令稿更新訂閱後觸發重載,而不必整機重啟服務。對於想把代理跑在機房、讓內網裝置經由閘道/旁路由出國的使用者,這也是與家用路由器固件思路最接近的一條路。

開始前:您需要準備什麼

檢查清單

  • 一台 64 位元 Linux:雲端 VPS、實體機或虛擬機皆可,建議使用長期支援版發行版
  • 具備 sudo 權限的帳號:用於安裝 systemd 單元與系統路徑下的檔案(亦可改為僅使用者層級運行)
  • 訂閱連結或現成設定:須為 Clash/Meta 相容的 YAML;若只有其他格式,請向服務商索取 Clash 專用訂閱
  • 釐清用途:僅本機命令列走代理、或要作為內網閘道,防火牆與轉發規則會不同

下文假設您已能使用 SSH 登入伺服器,並熟悉基本的檔案編輯與 systemctl 指令。若您完全沒有命令列經驗,建議先閱讀站內的 Clash 新手入門完整指南,建立對「訂閱、規則、節點」的整體概念,再回到本文操作會輕鬆許多。

第一步:取得 Clash Meta(mihomo)執行檔

社群發行的上游核心通常以單一靜態或半靜態二進位釋出,檔名會標註架構(例如 amd64arm64)。請從您信任的官方或鏡像發布頁下載對應版本,避免使用來路不明的「一鍵包」以免被植入後門。下載後將執行檔放到 /usr/local/bin/ 或您自訂的目錄,並賦予執行權限。

# Example: adjust binary name and path to match your release
sudo install -m 755 mihomo-linux-amd64 /usr/local/bin/mihomo
/usr/local/bin/mihomo -v

提示

若您使用發行版套件倉庫中的「clash-meta」套件,亦可透過套件管理器安裝;不同倉庫的服務名稱、設定路徑可能不同,請以套件說明為準。本文以自行放置二進位與設定目錄為主,較容易在不同發行版間複製同一套流程。

第二步:建立設定目錄與主設定檔

常見做法是將所有檔案集中在單一目錄,例如 /etc/clash/var/lib/clash。目錄內至少包含主設定檔 config.yaml,以及由訂閱下載產生的 *.yaml 或快取檔。啟動時使用 -d 參數指向該目錄。

主設定檔需包含幾個在無頭環境特別重要的鍵值:對外監聽埠(供本機或內網客戶端連線)、外部控制器(供 API 重載與儀表)、以及 密鑰(避免 API 暴露在內網時被任意呼叫)。以下為示意結構,實際鍵名請依您手邊範本調整。

# Minimal illustration only — merge with your provider template
mixed-port: 7890
external-controller: 127.0.0.1:9090
secret: "change-me-to-a-long-random-string"

proxies: []
proxy-groups: []
rules: []

proxy-providers:
  airport:
    type: http
    url: "https://example.com/subscription"
    path: ./providers/airport.yaml
    interval: 43200
    health-check:
      enable: true
      interval: 600
      url: https://www.gstatic.com/generate_204

訂閱區塊若使用 proxy-providersrule-providers,核心會依 interval(秒)週期拉取遠端資源,這是訂閱自動更新的第一層:由核心在行程內排程,無需額外 cron。若您仍使用傳統的 proxies 靜態列表,則需要透過外部工具改寫設定檔或改採提供者模式。

第三步:撰寫 systemd 服務並設為開機啟動

使用 systemd 的好處是:崩潰後可自動重啟、開機順序可排在網路就緒之後、日誌統一由 journalctl 管理。建議為 Clash 建立專用系統使用者(例如 clash),並將設定目錄擁有者設為該使用者,避免以 root 長期執行核心。

# /etc/systemd/system/clash-meta.service
[Unit]
Description=Clash Meta (mihomo)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=clash
Group=clash
ExecStart=/usr/local/bin/mihomo -d /etc/clash
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
  1. 將單元檔存成 /etc/systemd/system/clash-meta.service
  2. 執行 sudo systemctl daemon-reload
  3. 啟動:sudo systemctl start clash-meta
  4. 開機自啟:sudo systemctl enable clash-meta
  5. 查看狀態與日誌:systemctl status clash-metajournalctl -u clash-meta -f

安全提醒

請勿將 external-controller 無條件綁到 0.0.0.0 卻未設密鑰或防火牆,否則同一內網的任何人都能操作您的代理。若必須遠端管理,請優先使用 SSH 轉發或僅允許特定 IP 的防火牆規則。

第四步:訂閱/規則更新後如何熱重載

即使 interval 已讓遠端訂閱定期更新,有時您仍會在機場公告後希望立即生效。Clash Meta 的外部控制器提供設定重載端點(具體路徑與方法請對照您所使用版本的 API 文件)。典型做法是本機呼叫 API,附帶 Authorization: Bearer 標頭對應您在設定檔中的 secret

# Example only — verify against your mihomo / clash-meta API docs
curl -X PUT "http://127.0.0.1:9090/configs" \
  -H "Authorization: Bearer change-me-to-a-long-random-string" \
  -H "Content-Type: application/json" \
  -d '{"path":""}'

若您希望由系統層級排程在固定時間「先更新檔案、再通知核心」,可另外撰寫 shell 指令稿:拉取訂閱、校驗 YAML 是否可解析,成功後再呼叫 API。將指令稿掛到 systemd timercron,即可與核心內建的 interval 形成雙保險——特別適合對更新時間有合規或頻寬考量的機房環境。

實務建議

更新腳本請加上「失敗則不呼叫重載」的判斷,避免寫入半套設定導致服務進入反覆重啟。可在套用前將新檔寫入暫存路徑,再以 mv 原子替換。

第五步:命令列代理:環境變數與 sudo 陷阱

無圖形環境下,最常見的需求是讓 curlwget、套件管理器或自建程式走本機 Clash。若您使用 mixed-port,通常可以同時以 HTTP 與 SOCKS 方式連線。以下為常見的環境變數示例(埠號請與您的設定一致)。

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"
export no_proxy="127.0.0.1,localhost,::1"

使用 sudo apt 這類指令時,預設會清掉當前使用者的環境變數。可改用 sudo -E 保留變數,或在 /etc/apt/apt.conf.d/ 另行設定 Acquire::http::Proxy(視發行版與政策而定)。對於容器與 CI,建議在流水線設定中顯式注入同樣的代理變數,並將內網私有倉庫位址列入 no_proxy

進階提示:閘道與旁路由要再多做什麼?

若您的目標是讓區網內其他裝置把預設閘道指到這台 Linux,除了 Clash 本體外,還需要開啟核心轉發(net.ipv4.ip_forward)、設定 iptables/nftables 或對應的 redirect/tproxy 規則,並妥善處理 DNS,避免出現「能 ping 不能上網」或 DNS 污染問題。此主題與硬體拓撲高度相關,已超出單篇入門範圍;在完成本文的本機常駐+訂閱更新後,建議再分階段查閱您所用發行版的防火牆與透明代理教學。

常見問題

服務啟動後本機仍無法連線?

請依序檢查:① ss -tlnp 是否能看到 Clash 監聽埠;② 設定檔是否被錯誤的縮排或編碼破壞;③ 防火牆是否攔截本機回環以外的介面;④ 訂閱是否成功拉取(查看日誌與 providers 目錄檔案時間戳)。多數案例是訂閱 URL 需要透過代理才能存取,形成「雞生蛋」問題,需先用其他方式取得第一份設定或改用可直連的備用訂閱。

日誌出現權限被拒?

代表執行使用者對設定目錄或快取路徑沒有寫入權限。請確認 User= 與實際檔案擁有者一致,必要時將整個資料目錄 chownclash,並避免在 /etc/clash 混用 root 與一般使用者手動編輯導致的權限碎片。

TUN 或透明代理是否必開?

在純伺服器本機代理場景,通常不必開 TUN。透明代理與 TUN 往往涉及額外權限(如 CAP_NET_ADMIN)與更複雜的路由表,請在有明確需求時再啟用。

總結

  1. 下載可信來源的 mihomo/Clash Meta 二進位並固定放在系統路徑
  2. 建立專用設定目錄,完成 config.yaml、訂閱與規則提供者
  3. 以 systemd 常駐、啟用開機自啟,並用 journal 追蹤錯誤
  4. 善用核心內建 interval 加上 API 熱重載或 timer/cron 雙保險
  5. 以環境變數讓命令列與工具鏈穩定走本機代理

完成以上步驟後,您就具備在 Linux 無頭環境長期運行 Clash Meta 的骨架;接下來可依實際拓撲決定是否往閘道、分流 DNS、或自動化維運延伸。若您也需要圖形用戶端的懶人包,可一併參考站內其他平台的安裝教學。

需要驗證過的用戶端與懶人包?

在伺服器上自行部署核心,考驗的是對設定檔與權限的耐心;在桌面或手機上,多數人仍希望省去比對來源與手動維護的時間。我們提供附校驗資訊的下載與整合版本,協助使用者在常見平台上更快完成首次設定。

無論您選擇純命令列的 Meta 核心,或圖形化用戶端,都建議固定從可信渠道取得軟體,並為外部控制器與管理介面設定足夠強的密鑰與網路隔離。

取得可信下載與懶人設定

前往下載頁取得適用您裝置的版本;若您主要在伺服器使用,亦可搭配本文流程自行部署 Meta 核心。

立即免費下載 Clash,開啟流暢上網體驗