首页/教程/Linux服务器上怎么安装部署Clash?
CLASH GUIDE

Linux服务器上怎么安装部署Clash?

约 10 分钟阅读

在Linux服务器上部署Clash,首先通过SSH登录服务器,执行uname -m确认CPU架构后从GitHub下载对应的Clash Meta二进制文件。解压并赋予执行权限,将文件移动到/usr/local/bin/目录下。然后在/etc/mihomo/目录中创建config.yaml配置文件,通过curl从订阅链接拉取配置内容,或手动编写节点信息。配置完成后创建systemd服务文件并启用开机自启动,使用systemctl start mihomo启动服务。如果需要在终端中使用代理,在/etc/profile.d/中设置环境变量并重载配置。对于需要远程管理的场景,可在配置文件中开启external-controller并部署Web UI面板,通过浏览器访问服务器IP加端口进行可视化操作。日常维护中遇到问题优先查看journalctl日志输出,根据错误提示调整配置后重启服务即可。

准备工作:确认系统与获取二进制文件

更新系统和安装必要依赖

在安装Clash之前需要先将系统更新到最新状态,并安装必要的依赖工具。执行sudo apt update && sudo apt upgrade完成系统更新,然后通过sudo apt install git iproute2 iptables nftables jq安装Clash运行所需的依赖包。这些依赖中包含网络管理工具和JSON处理工具,确保Clash在后续配置和运行过程中能正常调用系统资源。如果是RHEL系列系统,则需要使用yumdnf安装对应的依赖包。

从GitHub下载对应架构的二进制文件

访问Clash Meta的GitHub Releases页面,根据服务器CPU架构选择合适的版本下载。x86_64架构的服务器选择amd64版本,ARM架构的服务器选择arm64版本。下载完成后使用gzip -d解压文件,然后通过chmod +x赋予可执行权限。需要特别注意的是,原版Clash核心已于2023年停更,建议优先选择Clash Meta(mihomo)核心以获得持续的协议支持和安全更新。

创建工作目录并整理文件

/etc目录下创建Clash的工作文件夹,例如/etc/mihomo/etc/clash,用于存放配置文件和运行日志。将下载的二进制文件重命名为mihomoclash,移动到/usr/local/bin/系统路径下,这样可以在任何位置直接调用。移动完成后可以通过运行mihomo -v检查版本号,确认文件可正常执行。如果提示缺少动态链接库,根据报错信息安装对应的依赖即可。

编写配置文件:订阅链接与基础参数

从订阅链接获取配置内容

Clash的配置文件采用YAML格式,包含了代理节点、策略组和路由规则等核心信息。如果已有代理服务商提供的Clash订阅链接,可以通过wgetcurl直接将订阅内容下载到配置文件中。执行curl -o /etc/mihomo/config.yaml "订阅链接"即可拉取远程配置。如果订阅链接返回的是Base64编码格式,需要先解码再保存为YAML文件。

添加Web UI管理面板配置

为了方便远程管理Clash的运行状态,建议在配置文件中添加external-controllerexternal-ui字段开启Web管理界面。在配置文件中写入external-controller: 0.0.0.0:9090让管理API监听所有网络接口,同时设置secret: "自定义密码"作为访问密钥防止未授权访问。如果没有配置Web UI的静态文件,Clash会自动使用内置的简化版界面,功能上不影响基本使用。

DNS与TUN模式的可选配置项

Clash Meta支持更灵活的DNS配置和TUN虚拟网卡模式。在配置文件中可以添加DNS段落,设置enhanced-mode: fake-ip配合nameserver列表实现防污染和加速解析。如果服务器需要处理设备级别的全流量代理,可以开启TUN模式并配置tun: enable: true,同时设置stack: systemgvisor选择堆栈类型。这些配置项属于增强功能,初次部署时可以先跳过,等基础代理跑通后再按需启用。

Systemd守护进程:开机自启动与服务管理

创建systemd服务文件

/etc/systemd/system/目录下创建名为mihomo.serviceclash.service的服务配置文件。写入服务定义内容,包括描述信息、启动命令和工作目录。关键参数包括Type=simple指定服务类型,ExecStart=/usr/local/bin/mihomo -d /etc/mihomo指定启动命令和配置目录,Restart=always确保进程意外退出后自动重启。如果需要以特定用户身份运行,可以在Service段落中添加User=clash-metaGroup=clash-meta提高安全性。

启用并启动服务

服务文件创建完成后执行systemctl daemon-reload让系统重新加载所有服务定义。然后使用systemctl enable mihomo将服务设置为开机自启动,确保服务器重启后Clash能自动恢复运行。接着执行systemctl start mihomo立即启动服务,通过systemctl status mihomo查看服务状态确认是否正常启动。如果状态显示为active (running),表示Clash已经在后台顺利运行。

查看日志与故障排查

服务运行过程中可以通过journalctl -u mihomo -o cat -e查看最近的日志输出,或使用journalctl -u mihomo -o cat -f实时跟踪日志更新。当遇到节点无法连接或配置文件解析错误时,日志中会记录详细的错误信息,包括协议不兼容、订阅地址失效或端口冲突等常见问题。根据日志中的提示调整配置后,执行systemctl restart mihomo让新配置生效。

设置环境变量:让终端命令走代理

配置http_proxy和https_proxy环境变量

为了让终端中执行的命令(如aptwgetcurlgit)也走Clash代理通道,需要设置HTTP和HTTPS代理环境变量。在/etc/profile.d/目录下创建一个脚本文件,写入export http_proxy=http://127.0.0.1:7890export https_proxy=http://127.0.0.1:7890,同时设置export all_proxy=socks5://127.0.0.1:7891覆盖SOCKS代理。执行source /etc/profile.d/clash.sh让环境变量在当前会话中生效,或重新登录服务器自动加载。

开启与关闭代理的快捷命令

为了方便日常使用,可以编写两个别名命令快速开关代理。在~/.bashrc~/.zshrc中添加alias proxy_on='source /etc/profile.d/clash.sh'alias proxy_off='unset http_proxy https_proxy all_proxy'。这样在终端中输入proxy_on即可启用代理环境变量,输入proxy_off即可清除代理设置。这种切换方式不会影响后台Clash服务的运行状态,只控制当前会话是否使用代理。

验证代理是否生效

环境变量设置完成后执行env | grep -E 'http_proxy|https_proxy'确认变量已正确生效。然后运行curl -I https://www.google.com测试境外网站是否可通过代理访问,如果返回正常的HTTP响应头说明代理通道工作正常。如果返回连接超时或拒绝连接,检查Clash服务是否正常运行,以及配置文件中是否包含可用的代理节点。测试通过后就可以在终端中享受代理加速带来的便利了。

访问Web UI管理面板:可视化运维

部署Yacd面板文件

如果希望获得完整的Web管理体验,可以部署Yacd或其他Clash面板。通过wget下载面板的静态文件压缩包并解压到指定目录。确保配置文件中external-ui字段指向了面板文件所在的路径,Clash会自动托管这些静态文件。面板部署完成后就可以通过浏览器访问http://服务器IP:9090/ui进入管理界面。

通过浏览器连接管理端

打开浏览器访问http://服务器IP:9090/ui,首次进入时面板会要求配置API连接信息。在设置页面中填写API Base URL为http://服务器IP:9090,Secret字段填入配置文件中设置的访问密钥,点击保存后就能看到节点列表、流量统计和连接状态等实时信息。通过Web UI可以在不登录服务器的情况下切换节点、查看日志和调整规则。

安全配置提醒

将Clash的管理端口和代理端口暴露在公网存在较大安全风险,容易被扫描和滥用。建议在配置文件中设置强密码作为Secret密钥,同时通过防火墙限制管理端口的访问IP范围,仅允许白名单IP连接。对于云服务器,可以在安全组策略中关闭9090端口的公网访问,或结合nginx反向代理增加一层访问控制。

常见问题排查与维护

配置文件解析失败的处理

如果启动Clash时提示配置解析错误,可以使用mihomo -t -d /etc/mihomo命令测试配置文件的有效性,该命令会输出详细的语法检查结果。常见原因包括YAML缩进错误、字段名拼写错误或引号不匹配。根据测试输出的行号提示定位具体问题位置进行修正。如果配置文件来自订阅链接,可以先下载到本地用文本编辑器检查格式是否正确。

端口被占用导致启动失败

Clash默认使用7890作为HTTP代理端口,7891作为SOCKS代理端口,9090作为API管理端口。如果服务器上其他服务占用了这些端口,启动时会报”address already in use”错误。可以通过netstat -tlnp | grep 7890查找占用端口的进程,然后终止该进程或修改Clash配置文件中的端口号。建议在配置文件中将端口设置为非常用值,减少冲突概率。

服务运行但代理无法使用的排查

如果Clash服务状态正常但代理请求无法通过,首先检查环境变量是否已正确设置到当前终端会话。然后使用curl -x http://127.0.0.1:7890 https://www.google.com测试代理端口是否可达。如果返回连接被拒绝,检查防火墙是否放行了对应端口。对于云服务器还需要检查安全组规则是否允许入站连接。如果以上都正常,再检查配置文件中是否有可用的、未过期的代理节点。

常见问题 FAQ

原版Clash和Clash Meta在服务器部署上有什么区别?

原版Clash已于2023年停更,后续安全补丁和新协议支持缺失。Clash Meta(mihomo)是社区接续维护的活跃分支,协议支持更全面,推荐服务器部署优先选择Meta核心。两者在部署步骤上基本相同,主要区别在于下载的二进制文件来源不同。

配置文件从哪里获取?一定要自己写吗?

不需要自己从零编写。如果已有代理服务商的订阅链接,直接用curl下载订阅内容到配置文件即可。也可以参考Clash官方文档中的配置模板,填入自己的节点信息后保存使用。初次部署建议先用订阅方式,跑通后再按需定制。

部署完成后终端命令不走代理怎么解决?

需要在终端中设置http_proxyhttps_proxy环境变量指向Clash的监听端口(默认7890)。可以通过export命令临时设置,或写入/etc/profile.d/实现登录自动加载。设置后用env | grep proxy检查是否生效,再用curl测试境外网站连通性。

Clash在服务器上运行需要图形界面吗?

不需要。服务器部署全程通过命令行操作,Clash本身是纯命令行核心,通过systemd守护进程即可在后台稳定运行。所有管理和监控都可以通过Web UI面板或RESTful API完成,无需任何图形界面支持。

使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。