安装使用 clash-for-linux,并注册为系统服务,设置开机自启动
一、环境说明及工具准备
1.1 系统环境说明
最近在看到 deepin 做的越来越好,没忍住装上了 deepin20.9 耍几天
系统信息:
1.2 工具准备
使用的是一个开源项目,人家很贴心的把 clash 和 ui 都整合了,然后还写好了启动脚本,并带有 clash 配置文件转换功能,非常棒!
项目地址:https://github.com/wanhebin/clash-for-linux
二、启动测试 clash
2.1 安装配置 clash-for-linux
- 先克隆项目到本地
1
| git clone https://github.com/wanhebin/clash-for-linux.git
|
- 进入项目目录,编辑
.env
文件
1 2
| cd clash-for-linux vim .env
|
.evn
文件配置说明
打开文件一共有两项配置,一个是 clash 的订阅地址,还有一个是 ui 界面登录的密码,推荐都设置上
1 2
| export CLASH_URL='xxx' export CLASH_SECRET='chengge666'
|
2.2 启动测试
执行命令 sudo bash start.sh
会看到大概是下面输出,这里我把 start.sh
改了下,没有使用原来设置环境变量,然后使用命令启动的方式,那种方式后续开机会进不去桌面环境,所以直接把启动脚本那里环境变量设置部分注掉了,使用系统设置去设置代理,最终其实是一个意思
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| chengge@chengge:/mnt/sda4/develop/clash/clash-for-linux$ sudo bash start.sh 请验证人脸或密码: 验证成功
正在检测订阅地址... Clash订阅地址可访问! [ OK ]
正在下载Clash配置文件... 配置文件config.yaml下载成功! [ OK ]
判断订阅内容是否符合clash配置文件标准: 解码后的内容不符合clash标准,尝试将其转换为标准格式 配置文件已成功转换成clash标准格式
正在启动Clash服务... 服务启动成功! [ OK ]
CPU架构信息: x86_64
Clash Dashboard 访问地址: http://<ip>:9090/ui Secret: chengge666
|
2.3 开启系统代理
- 第一种方式,是按照 clash-for-linux 的方式去设置
1 2
| source /etc/profile.d/clash.sh proxy_on
|
- 第二种方式,直接在 deepin 系统设置中设置
控制中心 -> 网络 -> 系统代理
2.4 验证
执行命令,出现以下结果证明 clash 启动成功,现在可以打开浏览器访问外网进行测试了
1 2 3 4 5 6 7 8
| chengge@chengge:~$ netstat -tln | grep -E '9090|789.' tcp6 0 0</div>7890</div>* LISTEN tcp6 0 0</div>7891</div>* LISTEN tcp6 0 0</div>7892</div>* LISTEN tcp6 0 0</div>9090</div>* LISTEN chengge@chengge:~$ env | grep -E 'http_proxy|https_proxy' https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
|
2.5 使用 clash ui 界面
- 访问:http://127.0.0.1:9090/ui/#/
- 配置完毕点击 Add
- Add 完毕后下方会多出一个条目,点击进入即可,这个界面看着也是挺不错的
三、将 clash 注册为系统服务,并设置开机自启动
3.1 clash 系统服务配置
- 创建 clash 服务配置文件
1
| vim /etc/systemd/system/clash.service
|
- 写入以下内容
主要修改的地方就是 [service] 节点下的脚本路径,配置为你的脚本执行绝对路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [Unit] Description= Documentation= After=network-online.target Wants= Requires=
[Service] ExecStart=/bin/bash /mnt/sda4/develop/clash/clash-for-linux/start.sh ExecStop=/bin/bash /mnt/sda4/develop/clash/clash-for-linux/shutdown.sh ExecReload=/bin/bash /mnt/sda4/develop/clash/clash-for-linux/restart.sh Type=forking
[Install] WantedBy=multi-user.target
|
上面配置的几个关键点:
- [Unit] 的 After 配置,network-online.target 意思是在网络可以正常连接后执行服务
- [service] 的 Type 配置:forking 意思是 fork 出一个子进程去跑服务,父进程退出,子进程依然在运行
3.2 启动服务测试
- 执行服务启动命令:
service clash start
- 查看服务启动状态:
service clash status
1 2 3 4 5 6 7 8 9 10
| chengge@chengge:~$ service clash status ● clash.service Loaded: loaded (/etc/systemd/system/clash.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-05-28 17:16:35 CST; 21min ago Process: 19535 ExecStart=/bin/bash /mnt/sda4/develop/clash/clash-for-linux/start.sh (code=exited, status=0/SUCCESS) Main PID: 19601 (clash-linux-amd) Tasks: 11 (limit: 18738) Memory: 16.3M CGroup: /system.slice/clash.service └─19601 /mnt/sda4/develop/clash/clash-for-linux/bin/clash-linux-amd64 -d /mnt/sda4/develop/clash/clash-for-linu
|
- 停止服务:
service clash stop
- 重启服务:
service clash restart
3.3 设置开机自启动
执行命令:sudo systemctl enable clash
然后可以重启验证了~