教程 · 预计阅读 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 防泄漏 多订阅管理

相关阅读