cover

为什么需要获得一个干净的代理IP

最近大火的ChatGPT无论是注册还是订阅Plus会员,都对ip的要求很高,有些必须是当地的原生ip, Vultr 和 LightNode 都是国内用的非常多的海外 VPS, 都可以按小时计费的, LightNode支持支付宝支付, 在使用完后删除机器就没有其他费用。下面开始介绍如何使用LightNode低成本获取一个干净的代理IP,你可以使用我的邀请链接注册,可以享受95折的优惠 传送门🌀

准备工作

Lightnode 购买一个按小时计费的

安装Docker

这个之前介绍过哦~ 通往文章的传送门🌀

trojan文档

若选择了 CentOS 系统,先登陆服务器关闭 SELinux :

1
setenforce 0

然后修改防火墙规则,放行相关协议流量:

1
2
3
4
5
6
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=8443/tcp
firewall-cmd --reload

或者直接关闭防火墙亦可:

1
2
systemctl stop firewalld
systemctl disable firewalld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
docker pull teddysun/trojan-go

mkdir -p /etc/trojan-go

cat > /etc/trojan-go/config.json <<EOF
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"your_awesome_password"
],
"ssl": {
"cert": "server.crt",
"key": "server.key",
"sni": "your-domain-name.com",
"fallback_port": 1234
}
}
EOF


docker run -d --network host --name trojan-go --restart=always -v /etc/trojan-go:/etc/trojan-go teddysun/trojan-go


//需要挂载证书
docker run --network host --name trojan-go -v /etc/trojan-go:/etc/trojan-go -v /etc/ssl/fullchain.cer:/etc/ssl/fullchain.cer -v /etc/ssl/domain.com.key:/etc/ssl/domain.com.key --restart=always -d teddysun/trojan-go

//可用版本

cat > /etc/trojan-go/config.json <<EOF
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "next.selenophile.top",
"remote_port": 443,
"password": [
"~uw9xL*,s&P:rk"
],
"ssl": {
"cert": "/etc/letsencrypt/live/selenophile.top/fullchain.pem",
"key": "/etc/letsencrypt/live/selenophile.top/privkey.pem",
}
}
EOF

安装Nginx

第一种
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mkdir /etc/nginx && mkdir /etc/nginx/conf.d
nano /etc/nginx/conf.d/default.conf

# 添加以下代码
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name yourdomain.com;

ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/privatekey.key;

# 其他 SSL/TLS 相关配置

location / {
root html;
index index.html index.htm;
}

}

docker run --network host --name nginx -v /etc/nginx/conf.d:/etc/nginx/conf.d --restart=always -d nginx
第二种
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

docker stop nginx
# 删除该容器
docker rm nginx


docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

申请域名 HTTPS 证书

有很多方法可以为域名申请 HTTPS 证书,这里推荐使用 Let’s Encrypt 获取免费证书。

Let’s Encrypt 是一个免费、非营利性的开放证书权威中心,由互联网安全研究小组(ISRG)支持,签发的免费证书被各个主流浏览器认可。任何域名持有人均可使用 Let’s Encrypt 申请免费证书来加密网站流量,公司、机构则建议付费获取 OV、EV 证书。

域名没备案且 VPS 在国内,可能无法申请成功,解决办法请参考 这里

要获得 Let’s Encrypt 颁发的证书,需要首先安装 certbot ,这里通过 python3 安装:

1
2
# 考虑到国内安装超时问题,已指定了安装源为清华源
python3 -m pip install certbot --default-timeout=600 -i https://pypi.tuna.tsinghua.edu.cn/simple

然后通过此命令申请域名的 HTTPS 证书(注意替换 YOUR_DOMAIN):

1
2
3
# 第一次执行该命令,需要根据交互步骤先注册邮箱(注意保存好),以后不再需要
# 该命令会占用 80 端口,执行前注意要停止相关进程(如 nginx)
/usr/local/bin/certbot certonly --standalone -d YOUR_DOMAIN -d www.YOUR_DOMAIN

注:若是更换过域名,需要先删除 /etc/letsencrypt/live/旧域名/etc/letsencrypt/renewal/旧域名.conf,否则无法生成新域名的证书。

证书默认的有效期为 90 天,在到期前的 30 天可以重新执行以下命令为更新证书有效期:

1
2
# 该命令会占用 80 端口,执行前注意要停止相关进程(如 nginx)
/usr/local/bin/certbot renew

但是每次都手动更新会比较麻烦,可以将其设置到 crontab 自动更新证书:

1
2
3
4
5
# 编辑定时任务
crontab -e

# 每两个月更新一次证书
0 0 1 */2 0 /usr/local/bin/certbot renew

certbot 申请的证书存储在 /etc/letsencrypt 目录:

  • 其他目录为 certbot 的注册账号信息
  • archive/YOUR_DOMAIN/ : 存储 YOUR_DOMAIN 域名申请过的历史证书
  • live/YOUR_DOMAIN/ : 存储 YOUR_DOMAIN 域名当前有效证书的链接文件

之后会用到的只有两个文件:

  • /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem
  • /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem