湘乡彭于晏学习前端
在 Linux 服务器上安装 Clash,以及开机自动启动
2023-03-17linux20767

我们在windows和mac可能使用过clash for windows或clash,那么我们的服务器也可以使用相应的clash-linux,从而达到代理效果,这样可以不去买国外服务器了

无论是更新下载缓慢,还是从 Github clone 项目时失败,抑或是配置开发环境时久久不能成功,在 Linux 服务器上安装使用代理软件都是常见的需求。

在 Windows 中用户常使用 Clash for Windows,在 MacOS 上使用 ClashX,在 OpenWRT 上常见的是 OpenClash,借助其完善的规则分流机制,用户设置完成后无需花费太多心思去维护,可以节省大量时间和精力。

以上平台使用 UI 界面,但其实 Linux 终端也可以使用 Clash。为读者提供一条龙服务,本文将分几部分介绍 Clash for Linux 的安装、配置、自启动以及设置系统代理。

一、安装 Clash

首先访问 Github 发布地址:Releases · Dreamacro/clash (github.com),下载对应 Linux 版本

大多数时候下载 clash-linux-amd64-vxxxx.gz 即可。

复制
# 创建一个用于存放 Clash 文件的目录 mkdir ~/Clash # 下载文件到此处 wget https://github.com/Dreamacro/clash/releases/download/v1.10.0/clash-linux-amd64-v1.10.0.gz

如果服务器上直接下载很慢,可以在本地下载好文件,再通过 WinSCP 之类的工具传到服务器上。

这里我打包了所需要的文件(clash-linux-amd64-v1.10.0.gz和Country.mmdb)在百度网盘中,可以从这里去下载 clash-linux

复制
#解压文件到这个目录 gunzip clash-linux-amd64-v1.10.0.gz #为了方便,将解压出来的文件改名为 clash mv clash-linux-amd64-v1.10.0 clash #添加执行权限 chmod +x clash #运行以初始化 Clash ./clash

二、配置 Clash

首次运行之后会在用户配置目录生成配置文件,产生的目录为~/.config/clash ,里面有 config.yaml 和 Country.mmdb 两个文件。

不过也有可能运行过程中会报错,因为 Country.mmdb 下载不下来

值得庆幸的是,已有网友共享 Country.mmdb 文件,w我已上传百度网盘备用,可访问文末链接获取。

将 Country.mmdb 放入配置文件所在目录,接下来就要修改 config.yaml 文件。有些机场本身提供了 Clash 专用配置文件,可直接使用;有些则没有提供,需要自行转换后获取。将配置文件放到此目录,删除自动生成的 config.yaml,再把自己的配置文件重命名为 config.yaml 。

接下来复制该目录下的 Country.mmdb 和 config.yaml 两个文件到之前创建好的 ~/.config/clash 目录下,再次运行 Clash 程序

注意clash的二进制文件和配置文件不在同一个目录,那两个配置文件在~/.config/clash下,而二进制文件在你自己上传解压缩的路径下,配置好后,直接运行二进制clash即可。

正常情况下就会看到它已经成功启动了。但是,还需要设置系统代理才能让流量通过 Clash。大多情况下 config.yaml 中已经写好了规则,包括 HTTP/HTTPS 代理的端口,如果不确定的话可以打开 config.yaml 查看。

执行以下命令即可临时设置系统代理:

复制
export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890

当然你也可以修改系统全局变量,在/etc/profile文件中

三、配置clash可视化面板界面(可选步骤)

复制
git clone -b gh-pages https://github.com/Dreamacro/clash-dashboard ui

这样就克隆 clash-dashboard 仓库的 gh-pages 分支到了 ui 文件夹。该仓库的gh-pages分支提供了clash可视化面板的前端文件。(也可以本地下载然后上传至服务器)

✨上传的目录文件路径和配置文件的路径在同一级

然后配置前端路由以及访问面板的密码。即配置一下我们的 config.yaml 文件,如下:

复制
port: 7890 socks-port: 7891 external-controller: :9090 external-ui: ui secret: '123456'
  • 这里的 port 是 http/https 代理端口
  • socks-port 是 socks 流量代理端口
  • external-controller 是外部控制端口,用于面板控制(前端页面的端口)
  • external-ui 是本地控制页面的源码,确保localhost:external-controller/ui 页面可以控制代理。(前端面板的路由)

运行clash,访问 host:port/ui 即可访问calsh的控制面板

四、Clash 自启动及后台运行

手动运行 Clash 会发现它是在“前台”运行的,当我们退出命令,程序也就退出了。另外如果开机后总需要手动运行的话也让人觉得繁琐,最好的办法就是将 Clash 注册为服务,并设置为开机自启动。

将以下脚本保存为 /etc/systemd/system/clash.service :

复制
[Unit] Description=Clash service After=network.target [Service] Type=simple User=louis(你的用户名) ExecStart=/home/louis/Clash/clash(Clash 程序路径) Restart=on-failure RestartPreventExitStatus=23 [Install] WantedBy=multi-user.target

使用以下命令启动服务,设置开机启动,以及检查服务状态(使用方法参考:用 systemctl 管理服务:查看状态、启动/停止服务、开启/取消开机自启动):

复制
# 重载服务 sudo systemctl daemon-reload # 开机启动 sudo systemctl enable clash # 启动服务 sudo systemctl start clash # 查看服务状态 sudo systemctl status clash

五、代理设置

Clash 已经开机自启动了,如果每次都要手动设置系统代理的话也很费时,因此建议将命令写入 Bash 配置文件中。

(写入环境变量 /etc/profile 文件也可以的)

运行 vim ~/.bashrc ,在文件末尾添加:

复制
export http_proxy=127.0.0.1:7890 export https_proxy=127.0.0.1:7890

保存后运行 source ~/.bashrc 使配置生效。

之后可以重启服务器,然后运行 sudo systemctl status clash 检查 Clash 的服务状态,再访问需要代理的网站验证是否可用。

湘乡彭于晏,专注学习web开发
img
img
img
img