Appearance
VPS相关
naive的原理和trojan很像,除去保姆级教程搭建的节点消除了服务器tls指纹和隐藏了所有翻墙服务以及伪装成正常网站,naive协议更上一层,消除了客户端的tls指纹和tls-in-tls特征,并且naive协议基于http2,自带多路复用,对比ws需要频繁握手来讲延迟更低,前面也说过naive客户端使用chrome浏览器内核作为网络协议栈,从防火墙的角度来看,就像是你在正常的使用正常的谷歌浏览器访问正常的网站
关于tls指纹在节点搭建完成后再给大家演示,了解之后你会知道没有隐藏服务器tls指纹将会有什么后果,记得看到最后。
总而言之,这真的是目前最安全的搭建方式了,另外虽然之前的保姆级教程搭建的节点存在tls-in-tls特征,但我并不认为防火墙能精准识别这种流量。所以为了方便,你仍然可以使用之前的保姆级教程搭建安全的节点。如果你想更上一层,接下来我就来手把手教大家搭建naive节点
既然是手把手那理应从vps购买与连接、域名注册与dns解析讲起,不过这些内容之前已经详细介绍过了,如果你是新手小白,请看保姆教程的前10分25秒,详细讲解了以上前置内容
另外节点的速度主要和线路有关,如果你不愿意在这上面花太多时间折腾也不差钱,只想有个自己专属的节点实现高速稳定科学上网,建议使用保姆教程中给大家推荐的搬瓦工三网CN2 GIA线路,一步到位省的闹心。
我当前的操作系统是ubuntu22.04 amd64,如果你使用其他操作系统,在搭建过程中如果和视频的预期效果不同,希望你能自行解决,域名已经做好了dns解析绑定到了当前VPS的ip地址,接下来正式进行搭建操作。
- 购买vps - 准备一台 vps 服务器(本文使用的是搬瓦工的vps服务器)
- 购买域名 - 本文购买的是阿里云域名
- 本文vps服务器的 系统 使用的是 Ubuntu
一、搭建naive(自建节点最完美的隐藏方案——naive节点搭建(tls指纹问题)
服务器当前目录是:/root/
第一步:编译安装caddy+naive
$apt install golang-go
$go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
$~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
第二步:在当前目录下新建Caddyfile文件
文件内容如下:
:443, domain
tls email
route {
forward_proxy {
basic_auth user pass
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://www.baidu.com {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
修改默认监听80和443端口,则文件内容如下设置:
{
http_port 9099
https_port 4443
}
domain:9099 {
reverse_proxy https://www.baidu.com {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
domain:4443 {
tls email
route {
forward_proxy {
basic_auth user pass
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://www.baidu.com {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
}
第三步:使用caddy指令
shell
# 前台运行caddy:
$./caddy run
# 后台运行caddy:
$./caddy start
# 停止caddy:
$./caddy stop
# 重载配置:
$./caddy reload
第四步:客户端配置
即如何使用翻墙软件导入上面搭建的naive协议配置,从而 最终 实现 使用自己的vps服务自建的naive节点 科学上网。
- 上面的naive配置(客户端配置)是:
shell
# https://user:pass@example.com 其中的user代表用户名及上面的 user,其中的pass代表的是密码机上面的pass,其中的example.com代表的是域名及上面的domain
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://user:pass@example.com"
}
- window 可以使用 v2rayN软件, 选择naive协议导入上面的naive配置
- mac 可以使用 qv2ray软件(这个软件是可以安装naive插件从而达到支持naive协议的配置),具体使用可网上自行查找
二、如何清除 RAM 内存高速缓存,缓存和交换空间(ubuntu 释放空间)
查看系统内核版本
shell
$uname -a
查看系统占用情况:
$df -h
Linux中buff-cache占用过高解决方案
我们在使用free -h查看系统内存的时候,有时间会发现buff/cache很高
$free -h
每一个Linux系统有三个选项来清除缓存而不中断任何进程或服务, 清除buff/cache
手动清除:
shell
# 1,仅清除缓存页
$sync; echo 1 > /proc/sys/vm/drop_caches
# 2,清除目录项和inodes
$sync; echo 2 > /proc/sys/vm/drop_caches
# 3,清除,缓存页,目录项和inodes
$sync; echo 3 > /proc/sys/vm/drop_caches
定时任务清除:
shell
# 设置一个定时任务来清除RAM缓存(每两小时执行一次),如下操作:
# 创建 clearcache.sh 文件
$touch /root/clearcache.sh
# 编辑 clearcache.sh
$vi /root/clearcache.sh
#编辑内容如下所示:
#!/bin/bash#每两小时清除一次缓存
echo "开始清除缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 20#延迟20秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
# 给clearcache.sh文件设置执行权限
$chmod +x /root/clearcache.sh
# 打开crontab进行编辑
$crontab -e
#添加以下行(每两小时执行一次),保存并退出
0 */2 * * * /root/clearcache.sh
# 编辑完之后需要重启cron(在ubuntu上是使用cron)来激活之前的修改。
$service cron restart
# 检查cron服务是否启动:
$service cron status
# 如果它未启动,那么可以手动启动此:
$service cron start
# 查询cron可用的命令:
$service cron
在生产环境的服务器上自动清除RAM是否是一个好主意? 不!它不是。想想一个情况,当你已经预定脚本来清除RAM缓存每天在下午2点。每天下午2点(0 3 * * * /path/to/clearcache.sh)该脚本会执行并刷新你的RAM缓存。在一天中的任何时候,您网站用户的在线量可能会超过预期的,并从你的服务器请求资源。同时调度器运行着脚本,并在高速缓存中清除一切。当所有的用户都从磁盘读取数据时,这将导致服务器崩溃并损坏数据库。
在 Ubuntu中清理APT缓存
shell
# 只删除过时的软件包,例如最近更新所取代的软件版,就完全不需要它们
$sudo apt-get autoclean
# 或者完全清除缓存(释放更多磁盘空间)
$sudo apt-get clean
三、ubuntu 中 Docker 服务
(ubuntu中如何安装Docker-参考资料)[https://docs.docker.com/engine/install/ubuntu/]
shell
# 以下命令运行 Docker 服务:
$ sudo systemctl start docker
# 使 Docker 服务在每次重启时自动启动:
$ sudo systemctl enable docker
四、自己搭建ChatGPT Web网站
参考资料 搭建流程参考资料如下: https://www.cnblogs.com/guohaomeng/p/17259713.htmlhttps://hub.docker.com/r/chenzhaoyu94/chatgpt-web 获取免费账号密码网站如下: https://zhuanlan.zhihu.com/p/621191133 获取accessToken操作如下: 先通过上面的网站拿到 免费账号和密码 登录进去(https://chat.openai.com)网站,然后再点击此链接即可得到accessToken。
参考以上资料,本vps服务器中的搭建ChatGPT Web网站操作如下:
- 在/root/目录下先创建 chatgpt-web 文件夹
$mkdir chatgpt-web
- 接着 进入到 chatgpt-web 文件夹中,继续创建docker-compose.yml 文件
$cd chatgpt-web && touch docker-compose.yml
- docker-compose.yml 内容如下:
需注意:下面的OPENAI_ACCESS_TOKEN的值 是 必须 从 上面 参考资料 那里的 【获取免费账号网站】 里 去 实时获取的(每个openai账号的accessToken是有过期失效的,所以需要定期更换accessToken即对应下面的OPENAI_ACCESS_TOKEN)
version: '3' services: app: image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可 ports: - 3002:3002 environment: # 二选一 OPENAI_API_KEY: # 二选一 OPENAI_ACCESS_TOKEN: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkQ05UZzVNRFUxUlRVd1FVSkRNRU13UmtGRVFrRXpSZyJ9.eyJodHRwczovL2FwaS5vcGVuYWkuY29tL3Byb2ZpbGUiOnsiZW1haWwiOiJ4OGtnYWl2MDQ3b21jbzBqb3VAdGFzYWFhLmN5b3UiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZX0sImh0dHBzOi8vYXBpLm9wZW5haS5jb20vYXV0aCI6eyJ1c2VyX2lkIjoidXNlci1zUDN0Z3RSc250aUU5UVBhT3B4Z1htcnQifSwiaXNzIjoiaHR0cHM6Ly9hdXRoMC5vcGVuYWkuY29tLyIsInN1YiI6ImF1dGgwfDY0ODA0ZDMyMWMwYzRlZDFiOTU0NDA1NiIsImF1ZCI6WyJodHRwczovL2FwaS5vcGVuYWkuY29tL3YxIiwiaHR0cHM6Ly9vcGVuYWkub3BlbmFpLmF1dGgwYXBwLmNvbS91c2VyaW5mbyJdLCJpYXQiOjE2ODY0MTYxMjYsImV4cCI6MTY4NzYyNTcyNiwiYXpwIjoiVGRKSWNiZTE2V29USHROOTVueXl3aDVFNHlPbzZJdEciLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIG1vZGVsLnJlYWQgbW9kZWwucmVxdWVzdCBvcmdhbml6YXRpb24ucmVhZCBvcmdhbml6YXRpb24ud3JpdGUifQ.OBijvSR6y7QQMxbnn6BSqskWp3JBPJ-GUJ_dfwhGff7nyvtSgPao6KIk-OKlWisY7iWx0v7_QfCF1YOZdD_VzgVkb-Aln5Q6DYmw1QR-fxjWQmduaepO3JwLUoKHNYAFY2AEXy1xHGTqZg1Frzja9chc7I_oqystZKPKKGqPwZ-cnWjqJhbj7c1_idiS3Dd9qql1iUeKuZpUT1a14Fin49obRbW0Ndp_yIioWuUYV2cMGeo-tTdnD3GFhZLAHi1QELQOuaFWE2kAyiabR2M0JGBDEWGRW9XxDUEw-u3cgn-DNQAC24yMkSRqy0bWddPzbt2tcno4jV9uCSGjzysgFQ # API接口地址,可选,设置 OPENAI_API_KEY 时可用 OPENAI_API_BASE_URL: # API模型,可选,设置 OPENAI_API_KEY 时可用 OPENAI_API_MODEL: # 反向代理,可选 API_REVERSE_PROXY: # 访问权限密钥,可选 | 建议设置一个密码,我这里随便设置了个123456 AUTH_SECRET_KEY: 123456 # 每小时最大请求次数,可选,默认无限 MAX_REQUEST_PER_HOUR: 0 # 超时,单位毫秒,可选 TIMEOUT_MS: 60000 # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效 SOCKS_PROXY_HOST: # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效 SOCKS_PROXY_PORT: # HTTPS 代理,可选,支持 http,https,socks5 HTTPS_PROXY:
- docker-compose.yml文件编写完内容后,需在当前chatgpt-web目录下运行程序启动容器,执行命令如下:
# 前台启动容器服务 $docker compose up # 启动服务,后台进程启动服务 $docker compose up -d
五、部署项目到 vps服务上
flow.sh文件内容如下:
shell
#!/usr/bin/env bash
# 这里我们采用了绝对路径调用的方式,防止系统无法识别到serve命令
# 如果不清楚serve所在的目录,可以通过which serve命令进行查看
nohup /usr/bin/serve /home/admin/app/test-admin-dist > /root/flow.log 2>&1 &
最后:额外问题
- 在 mac 上 v2ray启动退出之后,kill 此1089端口的进程 杀不掉,需使用如下方法:
shell
# 先查看
$launchctl list | grep 'v2ray'
# 再移除
$launchctl remove yanue.v2rayu.v2ray-core
# 这样才能最终处理1089端口一直占用问题
- ddd