clash-for-linux/README.md
2023-12-15 09:14:51 +08:00

207 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[TOC]
# 项目介绍
此项目是通过使用开源项目[clash已跑路](https://github.com/Dreamacro/clash)作为核心程序,再结合脚本实现简单的代理功能。<br>
clash核心备份仓库[Clash-backup](https://github.com/Elegycloud/clash-for-linux-backup)
主要是为了解决我们在服务器上下载GitHub等一些国外资源速度慢的问题。
由于作者已经跑路当前为Elegycloud进行备份若有侵犯您的权利请提交issues我会看到并删除仓库<br>
clash for linux 备份(备份号202311091510)。
若喜欢本项目,请点个小星星!
<br>
# 使用须知
- 运行本项目建议使用root用户或者使用 sudo 提权。
- 使用过程中如遇到问题,请优先查已有的 [issues](https://github.com/Elegycloud/clash-for-linux-backup/issues)。
- 在进行issues提交前请替换提交内容中是敏感信息例如订阅地址
- 本项目是基于 [clash已跑路](https://github.com/Dreamacro/clash) 、[yacd](https://github.com/haishanh/yacd) 进行的配置整合关于clash、yacd的详细配置请去原项目查看。
- 此项目不提供任何订阅信息请自行准备Clash订阅地址。
- 运行前请手动更改`.env`文件中的`CLASH_URL`变量值,否则无法正常运行。
- 当前在RHEL系列和Debian,Kali Linux,ubuntu以及Linux系统中测试过其他系列可能需要适当修改脚本。
- 支持 x86_64/aarch64 平台
- 【注意部分带有桌面端Linux系统的需要在浏览器设置代理否则有可能无法使用
- 【若系统代理无法使用但是想要系统代理请修改尝试修改start.sh中的端口改成7891
- 【还是无法使用请更换当前网络环境(也是其中一个因素!)】
- 谷歌twitteryoutube等可能无法ping通正常现象
```bash
# 开启系统代理
function proxy_on() {
export http_proxy=http://127.0.0.1:修改这里
export https_proxy=http://127.0.0.1:修改这里
export no_proxy=127.0.0.1,localhost
export HTTP_PROXY=http://127.0.0.1:修改这里
export HTTPS_PROXY=http://127.0.0.1:修改这里
export NO_PROXY=127.0.0.1,localhost
echo -e "\033[32m[√] 已开启代理\033[0m"
}
```
> **注意**:当你在使用此项目时,遇到任何无法独自解决的问题请优先前往 [Issues](https://github.com/Elegycloud/clash-for-linux-backup/issue) 寻找解决方法。由于空闲时间有限后续将不再对Issues中 “已经解答”、“已有解决方案” 的问题进行重复性的回答。
<br>
# 使用教程
## 下载项目
下载项目
```bash
$ git clone https://github.com/Elegycloud/clash-for-linux-backup.git
```
进入到项目目录,编辑`.env`文件,修改变量`CLASH_URL`的值。
```bash
$ cd clash-for-linux
$ vim .env
```
> **注意:** `.env` 文件中的变量 `CLASH_SECRET` 为自定义 Clash Secret值为空时脚本将自动生成随机字符串。
<br>
## 启动程序
直接运行脚本文件`start.sh`
- 进入项目目录
```bash
$ cd clash-for-linux
```
- 运行启动脚本
```bash
$ sudo bash start.sh
正在检测订阅地址...
Clash订阅地址可访问 [ OK ]
正在下载Clash配置文件...
配置文件config.yaml下载成功 [ OK ]
正在启动Clash服务...
服务启动成功! [ OK ]
Clash Dashboard 访问地址http://<ip>:9090/ui
Secretxxxxxxxxxxxxx
请执行以下命令加载环境变量: source /etc/profile.d/clash.sh
请执行以下命令开启系统代理: proxy_on
若要临时关闭系统代理,请执行: proxy_off
```
```bash
$ source /etc/profile.d/clash.sh
$ proxy_on
```
- 检查服务端口
```bash
$ netstat -tln | grep -E '9090|789.'
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN
tcp6 0 0 :::7890 :::* LISTEN
tcp6 0 0 :::7891 :::* LISTEN
tcp6 0 0 :::7892 :::* LISTEN
```
- 检查环境变量
```bash
$ env | grep -E 'http_proxy|https_proxy'
http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890
```
以上步鄹如果正常说明服务clash程序启动成功现在就可以体验高速下载github资源了。
<br>
## 重启程序
如果需要对Clash配置进行修改请修改 `conf/config.yaml` 文件。然后运行 `restart.sh` 脚本进行重启。
> **注意:**
> 重启脚本 `restart.sh` 不会更新订阅信息。
<br>
## 停止程序
- 进入项目目录
```bash
$ cd clash-for-linux
```
- 关闭服务
```bash
$ sudo bash shutdown.sh
服务关闭成功请执行以下命令关闭系统代理proxy_off
```
```bash
$ proxy_off
```
然后检查程序端口、进程以及环境变量`http_proxy|https_proxy`,若都没则说明服务正常关闭。
<br>
## Clash Dashboard
- 访问 Clash Dashboard
通过浏览器访问 `start.sh` 执行成功后输出的地址例如http://192.168.0.1:9090/ui
- 登录管理界面
在`API Base URL`一栏中输入http://\<ip\>:9090 ,在`Secret(optional)`一栏中输入启动成功后输出的Secret。
点击Add并选择刚刚输入的管理界面地址之后便可在浏览器上进行一些配置。
- 更多教程
此 Clash Dashboard 使用的是[yacd](https://github.com/haishanh/yacd)项目详细使用方法请移步到yacd上查询。
<br>
## 终端界面选择代理节点
部分用户无法通过浏览器使用 Clash Dashboard 进行节点选择、代理模式修改等操作为了方便用户可以在Linux终端进行操作下面提供了一个功能简单的脚本以便用户可以临时通过终端界面进行配置。
脚本存放位置:`scripts/clash_proxy-selector.sh`
> **注意:**
>
> 使用脚本前,需要修改脚本中的 **Secret** 变量值为上述启动脚本输出的值,或者与 `.env` 文件中定义的 **CLASH_SECRET** 变量值保持一致。
<br>
# 常见问题
1. 部分Linux系统默认的 shell `/bin/sh` 被更改为 `dash`,运行脚本会出现报错(报错内容一般会有 `-en [ OK ]`)。建议使用 `bash xxx.sh` 运行脚本。
2. 部分用户在UI界面找不到代理节点基本上是因为厂商提供的clash配置文件是经过base64编码的且配置文件格式不符合clash配置标准。
目前此项目已集成自动识别和转换clash配置文件的功能。如果依然无法使用则需要通过自建或者第三方平台不推荐有泄露风险对订阅地址转换。
3. 程序日志中出现`error: unsupported rule type RULE-SET`报错,解决方法查看官方[WIKI](https://github.com/Dreamacro/clash/wiki/FAQ#error-unsupported-rule-type-rule-set)