配置教程 精选 标签: Clash Linux Ubuntu 22.04 systemd Mihomo

Clash Linux 安装与 systemd 常驻:Ubuntu 22.04 命令行逐步配置

Linux 桌面或服务器上,把 Mihomo(Clash Meta 系内核)作为无界面服务运行,并用 systemd 管理开机自启异常退出后自动拉起,是长期稳定使用的常见做法。本文以 Ubuntu 22.04 LTS 为例,给出可复制的目录规划、单元文件与端口、权限自检顺序;与站内已发布的 WindowsmacOS 等专题场景互补,便于你在多平台统一规则思路。

约 16 分钟阅读
Clash 编辑部

一、为何用 systemd 管理 Clash / Mihomo

Clash Linux 使用场景里,很多人先在终端前台运行 mihomo -d /path/to/config,验证订阅与规则无误后再考虑常驻。若仅依赖手工启动,SSH 断线、终端关闭或进程崩溃都会导致代理中断;而 systemd 能统一处理开机自启工作目录与环境变量自动重启策略日志归集journalctl),运维成本明显低于 nohup、screen 等临时方案。

需要说明的是:本文聚焦内核进程(Mihomo)的服务化;若你需要图形界面,可在桌面环境使用各发行版自带的 Clash 图形客户端,安装包可从本站 下载页 获取。无头服务器或习惯命令行的用户,则更适合「二进制 + systemd」这条路径。

小贴士:先把 配置结构(端口、external-controller、DNS 等)在前台模式下调通,再写入 systemd,可避免把「YAML 写错」与「单元路径写错」两类问题搅在一起排查。

二、系统准备与目录规划

以下假设你使用 Ubuntu 22.04,且具备 sudo 权限。先更新软件索引并安装常用工具(用于下载发行包与解压):

sudo apt update
sudo apt install -y curl ca-certificates unzip

推荐为代理服务单独建系统用户与目录,避免以 root 长期跑业务进程。示例(可按你方规范调整用户名与路径):

  • 配置目录/etc/mihomo(存放 config.yamlGeoIP 等)
  • 可执行文件/usr/local/bin/mihomo
  • 运行用户:例如 clash,由 systemd 的 User= 指定
安全提示:若开启 局域网访问(监听 0.0.0.0)或对外暴露 外部控制器端口,务必配合防火墙与强认证,仅在可信网络内使用;生产环境建议仅监听 127.0.0.1 并通过 SSH 转发管理。

三、获取内核二进制与安装路径

Mihomo 上游以 GitHub Release 等形式分发各架构二进制;你需要按机器架构选择(常见桌面与云主机为 amd64,ARM 设备为 arm64)。下载后校验压缩包完整性(若上游提供校验和),解压得到可执行文件,再安装到系统路径:

# Example: adjust version and architecture to match your release
sudo install -m 755 mihomo /usr/local/bin/mihomo

若你更习惯由包管理器或镜像站分发,也可使用订阅方提供的「Linux 一键包」,关键是二进制路径与版本与下文 ExecStart 一致。开源协议、Issue 与源码协作仍以上游仓库为准;安装包与内核分发若需从可信渠道获取,可优先查阅本站下载说明,避免误装来路不明的打包文件。

四、配置文件与监听端口要点

/etc/mihomo 中准备 config.yaml(或你自定义的主配置名,与启动参数一致)。与校验端口强相关的几项通常包括:

  • mixed-port 或分别的 port / socks-port:本机或局域网设备使用的代理入口。
  • external-controller:REST API 与面板连接地址,例如 127.0.0.1:9090
  • secret:外部控制器鉴权;留空时部分客户端会拒绝远程,具体行为以当前内核版本为准。
  • bind-address:仅本机使用时设为 *127.0.0.1 的策略需与防火墙、局域网需求一致。

将配置目录权限交给运行用户读取,避免全局可读泄露订阅与 secret

sudo chown -R clash:clash /etc/mihomo
sudo chmod 750 /etc/mihomo

配置文件语法与字段含义以 官方文档与站内配置说明为准;升级内核大版本时,留意废弃字段与默认行为变化。

五、编写 systemd 单元(自启与崩溃重启)

/etc/systemd/system/mihomo.service 创建单元文件。下面是一份示意模板:请根据实际二进制路径、配置目录与运行用户修改。

[Unit]
Description=Mihomo (Clash Meta) proxy
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=clash
Group=clash
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

字段说明(与「开机自启」「崩溃重启」直接相关)

  • Restart=on-failure:进程异常退出时由 systemd 按 RestartSec 间隔自动拉起;正常 systemctl stop 不会无限重启。
  • After=network-online.target:尽量在网络就绪后再启动,减少启动竞态(仍建议配置里做好 DNS 重试)。
  • CapabilityBoundingSet / AmbientCapabilities:若需绑定 1024 以下特权端口,可保留;仅使用高端口时也可删去 capability 行以缩小权限面。
  • User / Group:以非 root 运行;确保该用户对配置目录有读权限、对运行时要写入的目录(若有)可写。

若你希望在登录会话内而非系统级运行,可使用 systemd --user 用户单元,路径与 enable --user 流程不同;服务器场景一般仍推荐系统级单元,便于未登录时亦保持服务可用。

六、启用服务与查看日志

写入单元文件后重载 systemd,启用并立即启动服务:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo.service

查看状态与跟踪日志:

systemctl status mihomo --no-pager
journalctl -u mihomo -e -f

修改 config.yaml 后,若内核支持热重载,可通过外部控制器接口或客户端执行 reload;否则使用 sudo systemctl restart mihomo。观察日志中是否出现端口占用、配置解析错误或权限拒绝,再进入下一节做针对性校验。

七、校验端口、权限与连通性

按下列顺序自检,能快速区分「服务没起来」「端口没监听」与「代理链路问题」。

  1. 进程与监听ss -tlnp | grep -E 'mihomo|7890|9090'(端口号替换为你配置中的 mixed-port / external-controller)。
  2. 本机回环curl -x http://127.0.0.1:混合端口 https://www.google.com -I(示例;请遵守当地法律法规与网络使用政策)。
  3. 外部控制器:仅本机时访问 http://127.0.0.1:9090(或你的端口),确认 API 与鉴权符合预期。
  4. 权限:若日志出现 permission denied,检查配置目录属主、是否误用 root 写入导致 clash 用户无法读取。
现象 建议优先检查
服务 active 但无监听端口 配置是否加载成功;是否与其他实例重复启动;YAML 路径是否在 ExecStart 中正确
仅 127.0.0.1 可连,局域网不通 bind-address 与防火墙(ufw / 云安全组);是否与 Windows 局域网场景一样存在「未监听 0.0.0.0」问题
频繁重启 journalctl 中崩溃栈或配置错误;适当放宽 RestartSec 避免打爆日志

Android 端图形客户端相比,Linux 命令行部署更依赖你显式写出端口与权限;一旦这三项对齐,长期稳定性通常优于手工前台进程。

八、常见故障速查

  • 端口已被占用:用 ss -tlnp 找到占用者,修改配置端口或停止冲突服务。
  • 升级内核后无法启动:阅读 Release Note,检查废弃字段与默认监听地址变化。
  • 仅特定用户可用:套接字权限与运行用户不一致时,检查是否错误地用 root 生成过 pid 文件或缓存目录。
  • 希望崩溃后必重启:可将 Restart= 设为 always 并评估日志量;一般 on-failure 已足够。

若你同时在桌面使用 Clash Verge 等客户端,注意不要让多个内核争抢同一端口;与 macOS 上系统代理排障类似,「多实例冲突」在 Linux 上同样常见。

九、小结

Ubuntu 22.04 上完成 Clash Linux / Mihomo安装systemd 托管后,你相当于把代理从「临时进程」升级为「系统服务」:开机自启崩溃重启日志可追溯都落在标准运维路径上。再按本文顺序做端口与权限校验,多数「能配规则但服务不稳」的问题会收敛到可复现的几类原因。

相比功能零散的小工具,Clash 系在规则、内核与多平台客户端上的一致性更好;把 Linux 服务端跑稳之后,与 Windows、macOS、Android 上的用法可以共享同一套策略思路,仅部署形态不同。

若你尚未安装图形客户端或希望从本站统一获取分发入口,可先访问下载页选择适合自己系统的版本,再按本文步骤在 Linux 上部署内核服务即可。

立即免费下载 Clash,开启流畅上网新体验