这不是一篇教你如何搭建机场的文章
事情是这样的,平常墙内媒体类软件都会选择性无视,偶尔逛逛B站舞蹈区,其他时间总要找到事情做,经常关注一些TG群和频道,看到便宜的鸡,总会想着买来折腾下,之前趁着Paypal夏日的10美金购物券活动,花了7RMB,撸了1年的RackNerd 主机 ,1G1C/3T/17G的配置,科学上网足够了,其他的折腾自行搜索。我选了San Jose地域,总体来说还不错,不懂评测,Just For Fun,简单看了下电信路由是从大西洋过去的:joy:。偶尔晚上会炸下,单看YouTube,我这晚上表现较好的时候4w+,白天的话6w+,我的网速在50Mbps左右,由于这个毕竟和很多因素有关,不能给出客观的评价,还是自己试下吧。
这个是我白天用Clash.NET测试的,我用路由器的客户端直接拉胯和断流。当然了我已经 很满足了,毕竟相当于白嫖了。
遇到的哪些问题以及如何解决的
- 这个主机在我这边的用途很明确,就是科学上网,但是如果我就仅仅用一键脚本,一路回车下去,那也没啥意思。从长远来看,碰到重要的节假日,你可能都不记得当时是怎么用起来的了,可能又要浪费时间去折腾下,那我就在这个机子上多上几种协议,也可以顺便搞个前端面板之类的(V2Board或者SSPanel)。当然了为了不让主机负载太高,尽量别这样搞,在搞个机子放前端,我现在就这样的,我这台主要是放后端,由于这台我刚开始用了Trojan Poseidon后端,443端口被占用了,导致我后来想用V2ray的时候(ws+tls)组合,死活启动都是失败,从前端面板来看,节点是飘红的。再加上这是商业面板,网上的资料是少之又少,官网教程只是很简单的一笔带过,里面的坑对于刚摸索的人来说,一不小心就陷进去了,最后弄了1天,只能放弃。
- 看下面的内容前,请确保你之前已经搭建好了前端面板,也已经对接上了1种协议的后端,比如shadowsocks,SSR,v2ray或者Trojan,然后你只是想把vps更充分利用下,再试试其他协议是不是更好一点,总之,如果你遇到问题就焦虑的话,我劝你放弃,我不是闲的蛋疼,都不会给自己找事,本来很简单的问题,被我复杂化,完全可以多搞几台机子,分别跑不同的后端,或者同一种后端不同的协议。
- 先放一篇官网的教程,至于我为什么选择了Poseidon作为后端来使用Trojan,主要是我用了soga,然而启动是可以启动,但就是用不起来,我也找不到解决办法,也有可能是程序Bug,虽然开发者说支持Trojan,但这种你不花钱,还是先找能用起来的吧,如果你不差钱,那就另说。
- 按照上面的教程,先把时间校准下,和自己电脑时间差距不能太大,这个用vmess是这样的,我不知道现在解决了没。关闭防火墙,安装docker和docker-compose,确认docker服务启动,教程都有,我直接说关键点吧。
- 由于后端用到了tls,就需要申请证书,后面配置的时候会用到,刚开始我以为如果要使用tls的话,必须要安装NGINX,然后给网站申请证书,但这里会有个问题,就是我原先安装的Trojanp已经吧443端口占用了,我的NGINX如果配置好证书启动的话,就不能用443了,虽然后来我把NGINX端口改为8443,但是当启动v2ray-ws-tls容器的时候,由于我主机端口用了8443,那么我会启动不了,于是我把NGINX关了,我认为NGINX可能就是你要更好的伪装会用到,但是Poseidon V2ray这边又是用的Docker来部署的,又是一大堆端口,文档也没解释清楚这些端口都是干啥用的,这里就会各种问题。这里我使用acme脚本来申请证书,如果用后端给的http和dns的方式,我都试了,总是申请证书失败,dns的话,好像是ml后缀的域名CloudFlare不支持,如果要部署在这里不出问题,还是买个便宜的域名吧,推荐namesilo的xyz后缀的域名,现在好像有活动,可以搜一下。安装acme:
curl https://get.acme.sh | sh
给acme设置别名并加到系统环境变量里:
alias acme.sh=~/.acme.sh/acme.sh echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profille source /etc/profile
设置定时任务,自动执行证书 续签任务:
crontab -e 00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
创建用于存放证书的目录,我这里是用的宝塔面板:
mkdir -p /www/server/panel/vhost/cert/example.domain.com #这个是你在宝塔面板申请证书的时候,证书的存放位置,我这里是手动申请,其中example.domain.com替换为你自己的网站域名,你也可以放到你的网站根目录里,自行对应。
验证你是否是此域名的拥有者,顺便检查下域名是否可以申请:
acme.sh --issue -d puff.wordtian.ml --webroot /www/wwwroot/example.domain.com --log
命令输出没有明显的红色报错,说明可以进行下面申请证书的操作了:
acme.sh --install-cert -d example.domain.com \ --key-file /www/server/panel/vhost/cert/example.domain.com/example.domain.com.key \ --fullchain-file /www/server/panel/vhost/cert/example.domain.com/example.domain.com.cer \ --reloadcmd "nginx -s reload" #其中的域名自行替换
证书申请成功,系统会提示
Cert success.
。你可以到之前创建的用于存放证书的目录里看有没有证书文件。 - 上面说了,由于NGINX和Poseidon V2ray的后端容器的端口会冲突,我就不在NGINX的配置文件里设置证书了。下面直接演示如何在SSPanel里添加节点,后端配置文件设置。在SSPanel的管理面板,进行添加节点的操作,格式如下:节点名称随便写。主要是节点地址:
example.domain.com;8443;0;tls;ws;path=/|host=example.domain.com #这里的域名自行替换,是你之前看官方文档里申请的域名或者你自己前端面板的域名(前提是你前端和后端在一台机器上)。
节点ip:你要科学上网的vps的公网ip地址。
节点类型:V2ray,其他设置请自行设置。
- 后端配置: 我们知道官方文档是用Docker来部署的容器作为后端,然后给了3种配置的配置文件:
我们用的是ws-tls
这个目录下的配置文件,进入这个目录,先使用vim把前端给对接上:vim config.json { "poseidon": { "panel": "sspanel-webapi", "license_key": "", // 无效,或空的 license key 都会被当成社区版 "nodeId": x, // 面板里添加完节点后生成的自增ID,请自行替换你添加节点后前面的数字哦。 // every N seconds "checkRate": 60, "panelUrl": "https://example.domain.com", // SSPanel 面板地址,请自行替换。 "panelKey": "xxxxxxx", // SSPanel 面板的配置文件中的 muKey 的值,请自行替换。 "user": { // inbound tag, which inbound you would like add user to "inboundTag": "proxy", "level": 0, "alterId": 0, // 和添加节点时那边统一。 "security": "none" }// 是否通过 HAProxy 代理协议,获取用户的真实 IP "acceptProxyProtocol": false }, "log": { "loglevel": "debug" }, "inbounds": [ { "port": 10086, // 这里可能和NGINX的反向代理端口有关,由于我没有启动NGINX,也就默认了,当然了如果有哪位朋友知道这里如何搭配NGINX进行反代,麻烦评论区告知,我文章在补充下。 "protocol": "vmess", "streamSettings": { "network": "ws", "wsSettings": { "path": "/" // 这个和添加节点时保持统一。 } }, "tag": "proxy" } ], "outbounds": [{ "protocol": "freedom" }] }
修改完毕,保存。下面编辑
docker-compose.yml
文件,这个是提供v2ray服务的后端,和上面的配置文件应该是有点关系的,但我说不清啥关系:joy:。这里注意是改端口,当然了如果你就搭建v2ray节点,就不会像我这么麻烦了,直接按官方文档里给的设置来就行了。然后我是手动指定证书路径到容器的路径,如果你的域名可以使用cloudflare的dns api来申请,建议用自动化的方式,我这太麻烦,也不太清楚是否必要。version: '3' services: v2ray-ws-tls: image: v2cc/poseidon container_name: v2ray-ws-tls restart: always ports: # 看到了么,下面端口的映射关系是hostPort:ContainerPort,然后这里的8443是我们添加节点时用的端口,10086是上一个配置文件的端口。 - "8443:10086" # - "80:80" # 手动映射本地证书和key到容器,:前面的请自行替换你实际的路径。 volumes: - ./config.json:/etc/v2ray/config.json - /www/server/panel/vhost/cert/example.domain.com/example.domain.com.cer:/etc/v2ray/v2ray.crt - /www/server/panel/vhost/cert/example.domain.com/example.domain.com.key:/etc/v2ray/v2ray.key environment: # 手动指定证书文件,配置文件需要映射到容器里面 - CERT_FILE=/etc/v2ray/v2ray.crt - KEY_FILE=/etc/v2ray/v2ray.key # 让程序自动生成 TLS 证书,支持 http 和 dns 两种方式 # 若使用 http 方式获取证书,需要将 80 端口映射到主机并放行 - CERT_MODE=dns # dns_cf 或 dns_namesilo 或 dns_namecheap - DNS_PROVIDER=dns_cf # 申请 DNS 证书的域名 - CERT_DOMAIN=demo.oppapanel.xyz # 使用 cloudflare DNS 验证 - CF_Email= - CF_Key= # 使用 namesilo DNS 验证 - Namesilo_Key= # 使用 namecheap DNS 验证 - NAMECHEAP_USERNAME= - NAMECHEAP_API_KEY= logging: driver: "json-file" options: max-size: 2g
设置好之后,保存。启动容器。
cd /root/v2ray-poseidon/docker/sspanel/ws-tls dc up -d
如果启动没有报错的话,可以用一下命令确认容器状态。有报错,需要具体分析了。
dc ps # 查看容器状态。 dc logs -f # 刷新后端日志,看有没有报错。 dc stop # 停止容器 dc rm # 删除容器 dc restart # 重启容器
如果你想在一台机器上,弄更多节点,请参考更多节点配置 。
如果有任何问题,欢迎留言讨论。这篇文章只做技术性探讨,由此引发的一切法律性风险请自行承担哈,the big brother is watching you。
- 由于后端用到了tls,就需要申请证书,后面配置的时候会用到,刚开始我以为如果要使用tls的话,必须要安装NGINX,然后给网站申请证书,但这里会有个问题,就是我原先安装的Trojanp已经吧443端口占用了,我的NGINX如果配置好证书启动的话,就不能用443了,虽然后来我把NGINX端口改为8443,但是当启动v2ray-ws-tls容器的时候,由于我主机端口用了8443,那么我会启动不了,于是我把NGINX关了,我认为NGINX可能就是你要更好的伪装会用到,但是Poseidon V2ray这边又是用的Docker来部署的,又是一大堆端口,文档也没解释清楚这些端口都是干啥用的,这里就会各种问题。这里我使用acme脚本来申请证书,如果用后端给的http和dns的方式,我都试了,总是申请证书失败,dns的话,好像是ml后缀的域名CloudFlare不支持,如果要部署在这里不出问题,还是买个便宜的域名吧,推荐namesilo的xyz后缀的域名,现在好像有活动,可以搜一下。安装acme:
发表回复