为什么需要一篇「纯命令行」的 Clash Meta Linux 教程
许多用户的日常路径是:在 Windows 上用图形客户端一键导入订阅,在 macOS 上打开菜单栏图标,在 Android 上划开 VPN 权限。到了 Ubuntu 或 Debian 桌面、开发机、乃至一台没有显示器的迷你主机时,往往希望同一套 Clash Meta(社区发行版常标为 Mihomo 内核)能以无图形界面方式稳定运行:开机即起、崩溃自恢复、日志可追踪。这正是 Linux 代理客户端在工程化场景里的典型诉求,也与本站已有平台教程形成互补。
本文不重复「什么是规则分流」的宏观叙述——若你尚未建立 Meta 系配置的整体概念,可先阅读 Clash Meta 升级指南 与 分流规则配置教程;这里专注在 Linux 上把内核进程变成可控的系统服务,并把 systemd 开机自启一次写对。
config.yaml 语义保持一致。
第一步:系统准备与目录规划
在开始下载任何二进制之前,建议先固定一个专用目录,避免可执行文件散落在用户下载目录里。常见做法是:在普通用户家目录下创建 ~/clash-meta(或 /opt/clash-meta,后者需 root 配合权限),其中同时存放内核程序、主配置、以及后续可能增加的规则缓存与 Geo 数据文件。
请确认你对该目录拥有读写权限;若使用 /opt,请用 chown 将目录归属给实际运行代理的 Linux 用户,后续 systemd 单元里的 User= 与此保持一致,否则会出现「服务看似启动、实则反复重启」的权限错误。若尚未安装基础工具,可执行 sudo apt update 与 sudo apt install -y curl ca-certificates,便于校验下载链接与 HTTPS 拉取。
第二步:获取 Clash Meta(Mihomo)内核二进制
社区发布的 Linux 内核通常以压缩包形式提供,文件名会标明架构(如 linux-amd64、linux-arm64)与版本号。请根据 uname -m 的结果选择匹配架构:x86_64 对应 amd64,aarch64 对应 arm64。将压缩包解压到上一步规划的目录后,你会得到一个可执行文件;社区习惯命名为 mihomo,也有发行包沿用 clash-meta 命名,二者指代同一类 Meta 内核能力。
为安全起见,应优先从项目官方 Release 页获取,并核对发布说明中的校验和。日常安装包的分发与版本聚合,仍建议以本站 Clash 客户端下载页 为主入口;需要核对上游哈希或参与社区讨论时,再单独打开源码托管平台,避免把「下载可执行文件」与「浏览 Issue」混在同一条不明链接里。
将二进制放入目录后执行 chmod +x ./mihomo(文件名以你实际为准),并可用 ./mihomo -v 查看版本输出,确认动态链接库与架构无误。若提示缺少共享库,在 Ubuntu 上通常安装 libc6 等基础包即可,具体以报错信息为准。
第三步:编写最小可用的 config.yaml
Clash Meta 的运行目录由启动参数 -d 指定,该目录下应存在 config.yaml(或你在启动参数里显式指定的文件名)。最小配置至少需要声明入站监听与出站出口:例如使用 mixed-port 同时提供 HTTP 与 SOCKS,便于终端与浏览器共用;再配置 proxies 与 proxy-groups,以及末尾的 rules。若你的节点来自机场订阅,可将订阅 URL 写在 proxy-providers 中,由内核定期拉取并生成策略组可选项——订阅与多源管理的通用思路可参考 订阅链接使用教程。
建议同时打开 external-controller(例如监听 127.0.0.1:9090),以便用 HTTP API 查看连接与切换节点;务必设置 secret,避免局域网内其他进程随意改动运行态。若仅在单机本机使用,将控制器绑定在环回地址即可降低暴露面。DNS 段落(dns)与 TUN 相关能力依你的分流精度按需追加;若暂不需要全局接管,可先保持规则模式为 rule,并确保本地回环与局域网段走 DIRECT。
config.yaml 中的订阅地址、secret、以及个人规则均属敏感信息;备份时请使用私有存储或加密归档,并限制文件权限(例如 chmod 600 config.yaml)。
第四步:前台启动并验证代理可用
在引入 systemd 之前,务必先前台运行验证配置无误。在配置目录下执行 ./mihomo -d /path/to/your/dir,观察标准输出是否出现「监听端口已就绪」「规则加载成功」等日志。另开终端,使用 curl -x http://127.0.0.1:混合端口 访问测试 URL,确认出口 IP 与策略组选择符合预期。若仅测试 SOCKS,可改用 curl --socks5-hostname 127.0.0.1:端口。
若启动即报错,优先检查 YAML 缩进与制表符混用、订阅是否返回了 HTML 登录页而非 Clash 配置、以及系统时间是否严重偏移导致 TLS 失败。此类问题与是否在 Linux 无关,但「无 GUI」环境下你更依赖日志文本,因此养成从首行报错读起的习惯会节省大量时间。对 TUN 与命令行工具关系的背景理解,也可对照 TUN 模式详解 中的分层说明;在 Linux 上启用 TUN 往往需要额外权限或能力位,初学者可先把 mixed 端口跑稳,再考虑内核栈模式。
第五步:编写 systemd 服务单元
当前台验证通过后,可将同一套启动命令交给 systemd。在 /etc/systemd/system/clash-meta.service(文件名可自定)中,典型结构包含三段:[Unit] 描述依赖关系,建议 After=network-online.target 并配合 Wants=network-online.target,减少「网络尚未就绪就启动代理」的竞态;[Service] 指定运行用户、工作目录、ExecStart 完整命令行,并设置 Restart=on-failure 与合理的 RestartSec;[Install] 中写入 WantedBy=multi-user.target 以便开机进入多用户模式时自动拉起。
ExecStart 应使用绝对路径指向二进制与配置目录,避免依赖 shell 的当前路径。若你希望日志由 journal 统一收集,可使用默认的 Type=simple,再通过 journalctl -u clash-meta -f 跟踪;若进程会 fork,才需要考虑 Type=forking,而 Mihomo 通常保持前台主循环,前者即可。若你坚持让服务以 root 运行(不推荐),请清楚知悉权限扩大带来的风险;更稳妥做法是普通用户 + 最小权限,仅在确需 TUN 时再讨论 capabilities 或单独设备权限。
第六步:启用、立即启动与开机自启
写入单元文件后执行 sudo systemctl daemon-reload,然后 sudo systemctl enable --now clash-meta。enable 负责开机自启,--now 负责立即启动,一条命令完成两件事。用 systemctl status clash-meta 查看 Active 状态,若显示 active (running) 且无明显红色报错,即表示 systemd 已接管进程生命周期。
重启机器后再执行 systemctl is-enabled clash-meta,应返回 enabled;同时用 ss -lntp 或 curl 复测代理端口,确认Linux 代理客户端在登录后自动可用。若你使用 NetworkManager 且存在拨号顺序问题,偶尔需要适当延后服务启动,可在单元中增加更精细的依赖或短暂延迟——这类调整应建立在可复现的日志证据之上,而不是盲目堆延时。
运维向:日志、升级与 API 习惯
长期运行时,建议固定升级流程:下载新二进制 → 校验哈希 → 停服务 → 替换文件 → 启动 → 快速回归测试。不要在生产习惯中直接覆盖正在运行的可执行文件而不停进程,以免产生未定义行为。对外部控制接口,请始终假设「本机其他用户进程也可能访问环回地址」,因此 secret 与防火墙策略要同时考虑。
若你在桌面环境还需要浏览器扩展配合,只要系统代理指向本机 mixed 端口即可;纯命令行工作流则更多依赖环境变量或 proxychains 一类工具——这与 Meta 内核在 Ubuntu 上的部署方式相互独立,但先保证内核服务稳定永远是第一顺位。
常见问题与排障顺序
服务不停重启怎么办
先看 journalctl -xeu clash-meta 中的最后几行;多数是配置路径错误、二进制不可执行、或工作目录权限不足。确认 User= 对该目录具备读权限,且 config.yaml 文件名与路径未被改动。
端口已被占用
使用 ss -lntp 查找占用 mixed 端口或控制端口的进程;可能是上一次前台调试未关闭,或其他代理软件冲突。释放端口或修改配置中的监听地址后再启动。
Linux 上暂时不用 TUN 可以吗
可以。许多开发场景只需 mixed 端口配合规则即可;TUN 涉及路由与权限,排障复杂度更高。待 mixed 模式稳定后,再查阅内核文档启用 tun 段并授予相应 capability。
与全站文档、下载入口的关系
把 Linux 无图形部署写清楚,本质是让用户在任意桌面或服务器上都能复用同一套「订阅 + 规则 + 策略组」语言;这与 Windows、macOS、Android 上的图形向导是同一生态的两面。需要查阅字段语义与进阶特性时,可结合本站 使用文档中心 对照 YAML 段落。
相比在终端里临时 export 各种代理变量,把一个经过校验的 Clash Meta Ubuntu 方案交给 systemd 管理,通常意味着更少的「重启终端就失效」与更可预期的长期维护成本。若你还希望在图形环境下获得与移动端一致的切换体验,也可从本站 Clash 客户端下载页 选择其他平台安装包作为互补;而在纯 Linux 工作流中,命令行与服务化才是与时间做朋友的那条路。
当你已经完成二进制落地、配置跑通,并把服务设为开机自启,不妨再访问本站 下载页,为其他设备准备同一生态下的客户端,保持规则与订阅管理习惯一致;相比各平台各装一套互不相认的工具,统一内核与统一配置哲学往往更省心。→ 立即免费下载 Clash,开启流畅上网新体验