Linux 設定 · · 約 16 分鐘閱讀

Ubuntu 安裝 Clash Meta 與 systemd 自啟:從 deb 到開機拉起完整步驟

Linux 桌面輕量伺服器上,與其手動開終端機啟動核心,不如把 Clash Meta(實作上多為 mihomo 核心)裝成系統可辨識的服務:用 deb 套件完成安裝與檔案配置,再用 systemd 管理開機自啟崩潰後自動重啟與日誌集中檢視。本篇以 Ubuntu 常見流程為主軸,整理從套件到服務單元(unit)的實務步驟,並補上權限與排查要點,讓你在「安裝/設定」與「進階運維」交界處一次到位。

1. 為什麼在 Ubuntu 上選 deb + systemd

Clash Meta 類核心負責訂閱、規則與轉送決策;在 Ubuntu 上若只解壓縮執行檔到某個資料夾,重開機後很容易忘記啟動,或更新系統後路徑混亂。deb 套件的好處是把執行檔、預設目錄與(若套件有提供)服務腳本納入同一套管理邏輯;接著透過 systemd,你可以用 enable 固定開機自啟,並用 Restart=on-failure 之類策略處理行程異常退出,再用 journalctl 看統一日誌,而不是在多個終端機視窗裡找錯誤訊息。

這與 Windows 上「開機啟動資料夾」或 macOS 的 LaunchAgent 類似,都是把「使用者期望常駐」轉成「系統層級可管理」。差別在於 Linux 伺服器與桌面發行版普遍已以 systemd 作為預設初始化系統,學會同一套指令,在家裡的 Ubuntu 桌面雲端輕量主機上都能沿用。若你尚未準備好訂閱與設定檔,可先參考本站 節點訂閱匯入教學,再回來把核心裝成服務。

2. 事前準備與版本對齊

請先確認機器為 64 位元 x86_64ARM64(例如部分 Raspberry Pi、雲端 ARM 實例),並下載與架構相符的 deb。若你從上游或社群取得套件,請一併核對套件內文檔標示的最低核心版本與設定欄位,避免訂閱內出現新版才支援的協定欄位卻無法啟動。

系統面請確保已安裝基本工具(例如 curlsudo),並建議在測試階段先關閉會搶佔相同連接埠的舊代理程式,以免服務啟動時顯示 bind: address already in use。若你打算用圖形介面包裝的用戶端而非純核心,仍可參考 使用教學總覽 對照功能差異;本篇聚焦核心+systemd,較貼近「想完全掌控檔案與服務行為」的使用者。

3. 以 deb 安裝與相依套件修復

將取得的 .deb 放到固定目錄後,可用 dpkg 安裝;若出現相依性未滿足,再用套件管理修復。常見流程如下(請將檔名替換為實際檔名):

# Install package (replace filename)
sudo dpkg -i ./mihomo_*.deb

# If dependency errors appear:
sudo apt-get install -f -y

部分環境亦可用 apt install ./xxx.deb 讓 apt 一併解析相依性。安裝完成後,可用 dpkg -L <package-name> 檢視執行檔範例設定被放到哪裡;不同維護者打包的預設路徑可能不同,請以實際輸出為準,不要硬抄網路上舊文章的絕對路徑。

若你手邊只有壓縮檔而沒有 deb,仍可將執行檔放到 /usr/local/bin 並自行建立資料目錄,後續 systemd 段落同樣適用;差別只在於少了套件管理員幫你記錄版本與檔案清單,升級時要自行覆寫與備份。

4. 設定檔、資料目錄與執行身分

mihomo/Clash Meta 通常需要一個工作目錄config.yaml、GeoIP/GeoSite 資料與執行時快取。常見做法包括:系統級放在 /etc/mihomo/etc/clash,由專用系統使用者擁有;或使用者級放在 ~/.config/mihomo,由你登入的帳號擁有。若使用 systemd 的系統服務,通常會建立 User=Group=,並以 ReadWritePaths= 限制可寫入位置,降低權限外溢風險。

啟動參數上,核心是 -d <dir> 指定設定目錄(實際參數名稱請以 --help 為準)。請確保該目錄下至少具備可讀的設定檔可寫的快取/資料權限,否則日誌可能出現無法建立檔案或無法下載 Geo 資料而導致規則異常。若訂閱內含敏感資訊,請避免將整個目錄設成世界可讀。

5. 撰寫 systemd 服務:開機拉起與異常重啟

/etc/systemd/system/ 建立自訂單元,例如 mihomo.service。下列為示意範例:請將 ExecStart 路徑、工作目錄與使用者名稱改成你機器上的真實值。

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

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

[Install]
WantedBy=multi-user.target

說明:After=network-online.target 有助於在網路尚未就緒時避免一啟動就大量連線失敗(仍視環境而定,必要時可再加延遲或健康檢查腳本)。Restart=on-failure非零離開碼訊號導致異常中止時自動拉起;若你希望設定檔寫錯時不要無限重試,可搭配較嚴謹的部署流程(先 mihomo -t 測試設定,再重載服務)。LimitNOFILE 則在高併發連線場景較常見,可依機器調整。

使用者服務與系統服務的取捨

若你只在圖形桌面登入後才需要代理,可使用 systemd --user 層級的 user service;若希望開機後無論是否登入都常駐(例如輕量伺服器或背景提供區網代理),則採系統單元較直覺。兩者的環境變數、家目錄與權限邊界不同,請勿混用路徑。

6. 啟用、驗證與 journalctl 排查

建立或修改單元後請重新載入 systemd,再啟用開機啟動並立即啟動服務:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo.service
sudo systemctl status mihomo.service --no-pager

若狀態顯示 active (running),代表行程已起來;接著請用瀏覽器或 curl 依你的本機 HTTP/SOCKS 連接埠驗證轉送是否生效(實際埠號以設定檔為準)。出問題時先看日誌:

journalctl -u mihomo.service -e --no-pager

常見錯誤包含:連接埠被占用設定檔 YAML 語法錯誤資料目錄無寫入權限、或訂閱 URL 無法存取。建議修改設定後先執行核心提供的設定測試子命令(若版本支援),再 systemctl restart,可減少「服務不斷崩潰重啟」的循環。

7. Linux 桌面代理:與瀏覽器、TUN 的銜接提醒

Linux 桌面上,核心常駐只是第一步:瀏覽器與應用程式仍須透過系統代理環境變數TUN/透明代理才能把流量導進 Clash。若你啟用 TUN,可能涉及 CAP_NET_ADMIN 等能力或額外模組,請參考你所用核心版本文件,並避免在未理解路由影響的情況下對生產機器直接開啟。

規則與策略組層面,若你希望細緻分流(例如只讓特定網域走代理),可延伸閱讀本站 規則分流指南,把「能連上」升級成「分得對、回得去、長期好維護」。

8. 安全與維運習慣

請將訂閱連結與節點憑證視為敏感資料:備份時使用加密媒體或權限隔離的目錄,並定期更新核心與規則資料。若機器為多人共用,避免以 root 身分長跑代理核心;搭配專用系統使用者與最小權限目錄,可降低誤設檔案權限導致的資料外洩風險。

開源社群與上游專案適合放在獨立段落討論授權、原始碼與問題回報;若你需要圖形化用戶端與一站式的安裝體驗,建議優先從本站 下載頁 取得對應平台版本,再依教學匯入訂閱與檢視日誌,比起四散搜尋片段指令更能維持一致體驗。

寫在最後

Clash Meta 裝在 Ubuntu 上並不難,真正決定長期體驗的是:你是否用 deb/固定目錄把檔案結構說清楚,並用 systemd 把「開機自啟、異常重啟、日誌追溯」變成可重複的操作,而不是每次重開機都重新摸索一次指令。相較於隨意背景執行,這種作法在穩定性與可維護性上通常明顯更省心,也更適合需要長期掛著代理的桌面與邊緣主機場景。

若你已準備好設定檔與訂閱,接下來只差一個順手的用戶端與清楚的更新節奏;建議從本站取得安裝包與教學起點,再依需求決定純核心或圖形介面。若你希望立刻在桌面環境補齊工具鏈並開始實測連線,歡迎前往:→ 立即免費下載 Clash,開啟流暢上網新體驗

依主題相關度匹配的延伸閱讀,涵蓋同分類下的實戰配置文章。