18071c745bd0dac3bbd81ba7bb822634ab019e5d
Linux 一键安装 Clash
因为有在服务器上使用代理的需求,试过许多开源脚本,总是遇到各种问题。于是自己动手,丰衣足食:对 Clash 内核 的安装过程及功能进行了友好封装,使用起来优雅、简单、明确。
- 默认安装
mihomo内核,可选clash。 - 自动进行本地订阅转换。
- 多架构支持,适配主流
Linux发行版:CentOS 7.6、Debian 12、Ubuntu 24.04.1 LTS。
快速开始
环境要求
- 需要
root或sudo权限。 - 具备
bash和systemd的系统环境。
一键安装
下述命令适用于 x86_64 架构,其他架构需修改 --branch 指定的分支。可通过 uname -m 查询系统架构,其与分支的对应关系如下:
| 分支 | master | arch-x86 | arch-arm64 | arch-arm32 |
|---|---|---|---|---|
| 架构 | x86_64 | i386, ... | aarch64 | armv7l, ... |
git clone --branch master --depth 1 https://gh-proxy.com/https://github.com/nelvko/clash-for-linux-install.git \
&& cd clash-for-linux-install \
&& sudo bash -c '. install.sh; exec bash'
命令一览
执行 clash 列出开箱即用的快捷命令。
$ clash
Usage:
clash 命令一览
clashon 开启代理
clashoff 关闭代理
clashui 面板地址
clashstatus 内核状况
clashtun [on|off] Tun 模式
clashmixin [-e|-r] Mixin 配置
clashsecret [secret] Web 密钥
clashupdate [auto|log] 更新订阅
开始使用
$ clashoff
😼 已关闭代理环境
$ clashon
😼 已开启代理环境
$ clashui
😼 Web 面板地址...
原理:
- 使用
systemctl控制clash启停,并调整代理环境变量的值(http_proxy 等)。因为应用程序在发起网络请求时,会通过其指定的代理地址转发流量,不调整会造成:关闭代理后仍转发导致请求失败、开启代理后未设置代理地址导致请求不转发。 clashon等命令封装了上述流程。
定时更新订阅
$ clashupdate [url]
😼 备份配置:/opt/clash/config.yaml.bak
😼 下载成功:内核验证配置...
😾 验证失败:本地订阅转换...
😼 下载成功:内核验证配置...
✅ [2025-02-23 22:45:23] 订阅更新成功:https://xxx.com
$ clashupdate auto [url]
😼 定时任务设置成功
$ clashupdate log
✅ [2025-02-23 22:45:23] 订阅更新成功:https://xxx.com
...
clashupdate会记忆安装/上次更新成功的订阅,后续执行无需再指定订阅url。- 可通过
crontab -e修改定时更新频率及订阅链接。 - 通过配置文件进行更新:pr#24
Web 控制台密钥
控制台密钥默认为空,若暴露到公网使用建议更新密钥。
$ clashsecret xxx
😼 密钥更新成功,已重启生效
$ clashsecret
😼 当前密钥:xxx
Tun 模式
$ clashtun
😾 Tun 状态:关闭
$ clashtun on
😼 Tun 模式已开启
- 作用:实现本机及
Docker等容器的所有流量路由到clash代理、DNS 劫持等。 - 原理:clash-verge-rev、 clash.wiki。
Mixin 配置
$ clashmixin
😼 查看 mixin 配置(less)
$ clashmixin -e
😼 编辑 mixin 配置(vim)
$ clashmixin -r
😼 查看 运行时 配置(less)
- 作用:用来存储自定义配置,防止更新订阅后覆盖丢失自定义配置内容。
- 运行时配置是订阅配置和
Mixin配置的并集。 - 相同配置项优先级:
Mixin配置 > 订阅配置。
卸载
以下为通用命令,root 用户可直接使用: . uninstall.sh。
sudo bash -c '. uninstall.sh; exec bash'
常见问题
配置下载失败或无效
- 下载失败:脚本使用
wget、curl命令进行了多次重试下载,如果还是失败可能是机场限制,请自行粘贴订阅内容到配置文件:issue#1 - 订阅配置无效:
issue#14配置下载成功后会对其进行校验,校验失败将在本地进行订阅转换后重试,仍无效请检查是否为有效的clash订阅。
bash: clashon: command not found
- 原因:使用
bash install.sh执行脚本不会对当前shell生效。 - 解决:当前
shell执行下bash即可。
几种运行方式的区别:
-
bash命令运行:当前shell开启一个子shell执行脚本,对环境的修改不会作用到当前shell,因此不具备clashon等命令。# 需要有可执行权限 $ ./install.sh # 不需要可执行权限,需要读权限 $ bash ./install.sh -
shell内建命令运行:脚本在当前shell环境中执行,变量和函数的定义对当前shell有效,root用户推荐这种方式执行脚本。# 不需要可执行权限,需要读权限 $ . install.sh $ source uninstall.sh
ping 不通外网
ping命令使用的是第三层中的ICMP协议,不依赖clash代理的上层TCP协议。- 执行
clashtun on后可以,但得到的是 fake ip,原理详见:clash.wiki。ping通
服务启动失败/未启动
安装 clash 内核
将 resources/zip/ 路径下的 mihomo 内核压缩包移出或删除即可,安装时会自动下载对应架构版本的 clash 内核。
安装逻辑:
resources/zip/路径下无任何内核压缩包时,默认下载安装clash。- 有且仅有一个内核压缩包时,安装该内核。
clash和mihomo压缩包共存时,优先安装mihomo。
注意:手动替换内核或其他命令版本时,需从官方渠道获取软件包且勿重命名。
引用
- Clash 知识库
- Clash 全家桶下载
- Clash Premium 2023.08.17
- mihomo v1.19.2
- subconverter v0.9.0:本地订阅转换
- yacd v0.3.8:Web UI
- yq v4.45.1:处理 yaml
Todolog
- 定时更新配置
- 😼
- 适配其他发行版
- 配置更新日志
- Tun 模式
- mixin 配置
- 适配x86、arm架构
- 本地订阅转换
- 切换 mihomo 内核
- 端口占用时随机分配
- bug / 需求
Thanks
特别声明
- 编写本项目主要目的为学习和研究
Shell编程,不得将本项目中任何内容用于违反国家/地区/组织等的法律法规或相关规定的其他用途。 - 本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。
Languages
Shell
100%
