因为最近想在服务器上部署需要调用到 chatgpt api 的项目,所以就有了服务器走代理的需求。下面记录部署过程,以便后续忘记。
相信这个教程对想 在无GUI Linux 服务器上实现走代理 的同学会有所帮助~
准备
- Ubuntu服务器(我这里用的是腾讯云的Ubuntu22)
- 代理工具的订阅链接(我用的是xcat,很稳定)
- clash for linux压缩包(提供clash的核心服务)
- yacd压缩包(提供clash的网页操作dashboard)
部署
-
打开Ubuntu服务器终端
-
切换至root用户
sudo su -
新建文件夹(clash软件默认访问的路径)
mkdir -p /root/.config/clash && cd /root/.config/clash -
上传订阅链接配置文件
wget "机场给你的订阅链接" -O config.yaml -
上传上述两个压缩包
-
解压压缩包,赋予权限,重命名
gzip -d clash-linux-amd64-v1.11.12.gz tar -xf yacd.tar.xz mv clash-linux-amd64-v1.11.12 clash chmod +x clash mv public dashboard -
更改配置文件使其加载dashboard
port: 7890 socks-port: 7891 allow-lan: true mode: Rule log-level: debug //输出更多的日志信息,以便观察clash的运行状况 secert: 123456 // 增加这一行, 如果你希望你的clash web要密码访问可以在这块配置密码, 如果不需要直接注释掉即可 external-ui: dashboard // 增加这一行 external-controller: 0.0.0.0:9090 -
验证是否可以有效执行
./clash -d . ------------Output------------ INFO[0000] Start initial compatible provider Proxies INFO[0000] Start initial compatible provider Spotify INFO[0000] Start initial compatible provider Microsoft INFO[0000] Start initial compatible provider GlobalTV INFO[0000] Start initial compatible provider Apple INFO[0000] Start initial compatible provider Steam INFO[0000] RESTful API listening at: [::]:9090 INFO[0000] HTTP proxy listening at: [::]:7890 INFO[0000] SOCKS proxy listening at: [::]:7891 -
开放相关端口
ufw allow 9090 ufw enable ufw reload ufw status #7890端口是代理端口,不开放也可以?不确定 ufw allow 7890 ufw enable ufw reload ufw status -
在外网通过
服务器ip:9090/ui可以访问dashboard,选择线路 -
设置开机自启动
mv clash /usr/local/bin vim /etc/systemd/system/clash.service[Unit] Description=clash service After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/clash Restart=on-failure # or always, on-abort, etc [Install] WantedBy=multi-user.target然后使其生效
systemctl daemon-reload systemctl enable clash systemctl start clash systemctl status clash -
配置bash
vim ~/.bashrc# Proxy auto start export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7890 # Open proxy on() { # export https_proxy=http://127.0.0.1:1087 # export http_proxy=http://127.0.0.1:1087 # export all_proxy=socks5://127.0.0.1:1086 export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7890 echo "HTTP/HTTPS Proxy on" } # Close proxy off() { unset http_proxy unset https_proxy unset all_proxy echo "HTTP/HTTPS Proxy off" }source ~/.bashrc# 启动代理 on # 关闭代理 off -
测试
curl youtube.com
注意
- 走代理的是https和http,ping是无法ping通的,所以用curl和wget测试是否部署成功
- 按上述过程部署后,需要在root用户下启动代理
- 启动代理后,只是当前这个命令行操作可以走代理,运行在这个命令行下的程序也可以走代理