Skip to content

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网站操作如下:

  1. 在/root/目录下先创建 chatgpt-web 文件夹
    $mkdir chatgpt-web
  2. 接着 进入到 chatgpt-web 文件夹中,继续创建docker-compose.yml 文件
    $cd chatgpt-web && touch docker-compose.yml
  3. 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:
  4. 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 &

最后:额外问题

  1. 在 mac 上 v2ray启动退出之后,kill 此1089端口的进程 杀不掉,需使用如下方法:
shell
# 先查看
$launchctl list | grep 'v2ray'
# 再移除
$launchctl remove yanue.v2rayu.v2ray-core
# 这样才能最终处理1089端口一直占用问题
  1. ddd

创作不易请尊重他人劳动成果,未经授权禁止转载!
Released under the MIT License.