用威联通TS-464C2的docker做一个自己的全网络多AI聚合网页

电子开箱不简单 2024-09-13 02:56:08
前言

我家里常年有一台威联通的NAS开机,型号是TS464C2,我之前是一直拿它当我的资料备份机用的,但是24小时开机的NAS除了当资料备份机器之外,我也开发了一些别的用处出来了,比如docker挂青龙面板做一下签到,挂一个zerotier服务当我的远程网络中心。

作为一个近似于私人服务器的存在,威联通TS464C2其实还有更多的玩法可能性,其中就包括

目前市面上主流的AI工具侧重点都不太一样,有擅长搜索总结的AI,有擅长创作对比理解的AI,有擅长创意创作的AI,也有擅长电商法律咨询类的AI,林林总总的AI包含了线上编程,医疗咨询,办公辅助,多语言翻译,甚至是角色扮演等各个方面。

大部分人应对不同的AI需求都是把这些AI网页地址存在自己的浏览器收藏夹里,等到有需要的时候再打开调用。但是问题是每一个AI的服务页面设计和逻辑都有差异,很多人懒得适应不同AI交流页面的差异,就直接锁定一个适应的AI页面用下去。

作为半个程序员,我现在其实更倾向于把不同的AI集成到我自己的网页端,然后通过我自己统一的网页端去调用。

因为这个网页端只给我自己用,所以我不必申请公网,也不必做什么网页备案,我只需要做一个基于互联网的虚拟局域网,让我自己的设备都能访问它就行了。

我放在家里的威联通TS464C2,刚好是我虚拟局域网zerotier的一个节点,并且也支持docker,而docker里面已经有大佬给了成熟的基于docker的自定义AI网页端安装包了,所以我根本不需要费太多的力气就可以把我已经买过的各类AI的API key配置到这个自定义AI网页端里面提供统一的AI问答服务。

下面我就拿DeepSeek的API Key配置作为例子给大家梳理一下集成AI网页的流程。

自定义DeepSeek网页转译流程

要准备的东西:DeepSeek的API Key,威联通NAS里面的Container Station(也就是docker)

首先感谢 Chanzhaoyu 使用 Vue3 和 Express 开发的GPT Web 。拥有两种模式(API和网页token),支持多个会话和上下文逻辑,美化公式和高亮代码,支持数据导入导出。

打开Container Station,选择“创建”,点击页面右方的“创建应用程序”。(这是威联通独有的网页 compose 粘贴,一步到位搭建容器,后期修改也很方便。 )

请务必以图片格式为准,部分平台会吞空格,空格少了就会部署失败。

要注意的地方:

OPENAI_API_KEY后面请替换成你自己账号的api,不过因为DeepSeek的API跟OpenAI的API格式一样的,所以你完全可以用DeepSeek的API代替。

跑起来的效果:

直接用手机浏览器打开我的虚拟内网网址就行,使用起来基本跟我用商业的AI服务没什么区别。

当然,也有更加成熟的AI集成docker包:ChatGPT-Next-Web。这个包是很多商业AI公司都会推荐的调用API Key的Docker网页包。

ChatGPT-Next-Web配置好之后跑起来的效果更像是原始的GPT网页。

而ChatGPT-Next-Web的配置也超简单,只用下载下来之后做一下简单的网址和API设置就行。

那么问题来了,如果这些网页只能在我的内网访问,那肯定是不行的。

可是如果你要做外网访问的话,在国内你就得先花很多钱申请一个公网IP,然后再花很多钱和很多精力去自己做一个网页映射,最后再花很多钱买一个服务器让这个网页24小时运行。

可是我一开始的需求只是简单的自己转接一下AI的API Key给自己用。

这时候有一个脑洞就是,如果我在整个互联网上单独设置一个虚拟内网给自己用呢?

这就需要请出来zerotier了。

zerotier设置流程1.zerotier远程管理配置

Zerotier账号是用于组件虚拟局域网的,腾讯云轻主机是用于用于自建Zerotier的moon服务器,也能白搞一个公网IP,其余的设备都要保证正常联网使用。

2.zerotier账号注册与配置踩坑

Zerotier设置与问题解决部分:

ZeroTier 这一类 P2P VPN 是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。最常见的场景就是在公司可以用手机直接访问家里的 NAS,而且是点对点直连,数据传输并不经由第三方服务器中转。所以安全性非常有保障。

Zerotier 在多设备之间建立了一个 Peer to Peer VPN(P2PVPN) 连接,如:在笔记本电脑、台式机、嵌入式设备、云资源和应用。这些设备只需要通过 ZeroTier One ( ZeroTier 的客户端) 在不同设备之间建立直接连接,即使它们位于 NAT 之后。连接到虚拟 LAN 的任何计算机和设备通常通过 NAT 或路由器设备与 Internet 连接,ZeroTier One 使用 STUN 和隧道来建立 NAT 后设备之间的 VPN 直连。简单一点说,Zerotier 就是通过 P2P 等方式实现形如交换机或路由器上 LAN 设备的内网互联。

第一步是注册Zerotier的账号。

这个是邮箱注册,注册完之后免费使用设备数量是50个,对于99%的人来说是够了。毕竟我这样的手里常年一大堆电子设备的人,能同时使用的路由器加电脑加起来也不超过十台。

第二步:登录和创建网络

注册完之后就直接登录网站,按照下面的指示创建网络就行。我是把我的网络名能用中文就用中文,这样看起来方便一点。

创建网络:创建一个新的网络之后,我们得到一个 Network ID,这个在后面的设备连接时需要用到,点击刚刚创建的网络我们可以设置更多选项。默认的设置就可以用了,右边 IPv4 的设置就是分配设备内网 IP 网段,其他的设置可以在 Setting help 里看到说明,不了解的不建议乱设置,如果不小心把自己的网络暴露在外部,会相当危险。

第三步:把手里的设备加入这个网络。

我现在手里的设备都是Windows10设备,所以在他们主页上下载相应的平台安装包就行,安装包后缀是msi结尾。

下载之后双击安装,一直按next直到它安装成功。

装成功之后,你的任务栏部分会出现一个Zerotier的图标,右键点一下鼠标,选择join Network。

有了这个窗口之后,我们再打开我们前面已经登录了的zerotier页面,然后在Network标签下可以看到我们创建的网络的基本信息,我给我的网络取的名字是“家庭内网”,我们要把我用椭圆部分圈出来的一串代码,也就是NETWORK ID下面的一串代码,复制,然后粘贴到上一步Join a Network弹出来的窗口中,我建议把所有的都勾选上,以免遗漏。

然后你的几台电脑都加入我创建的“家庭内网”之后,我们还需要进这个网络后台把这些设备的权限都打开。就点这个NODES,然后它会自动跳转到“家庭内网”的后台管理页面。

然后往下拉页面,就会看到自己的设备,我现在的设备都是Auth下面打勾了,代表这些设备被授权了,如果没打勾,就代表这个设备加入了你的网络,但是不能访问你的网络。

要着重关注的是Managed IPs下面的IP地址,这个地址就代表了你现在设备在Zerotier的“家庭网络”里面的虚拟IP地址,旁边的Last Seen下面代表你这个设备现在的在线状态,比如我现在手里的两台设备都在线,显示的就是ONLINE。

到这一步之后,就可以进行下一步了。

我上面的设备中,SurfaceBook1-7是发起端,地址是192.168.192.190,也就是我平时拿着在外面跑的笔记本,MacAir是接收端,地址是192.168.192.97,也就是我平时扔在家里当服务器的笔记本。

一直到这一步都是很顺畅的,但是之后可能会有人出现新的问题,那就是我从SurfaceBook1-7上访问MacAir的时候会显示连接失败。死活找不到解决方案。

因此,建议在拿到两个设备的“家庭内网”IP地址之后,先在CMD命令行窗口Ping一下地址,看能不能Ping通,如果能Ping通的话就走下一步RDP连接部分,如果不能Ping通的话,建议看看后面我是怎么解决的:

现在我查到的解决方案是一个大佬写的:问题的关键在新建的Zerotier网络虽提供了一组 Flow Rules 流控规则,初次启动时却不会自动应用。

就是在Flow Rules最后一行加一个空格,然后保存就行。这就让Rules启用了。

问题的原因是:

所以我也是采用了这个解决方案之后,就顺利解决了我zerotier网络下各个设备不互通的问题。

3.腾讯云主机注册与配置踩坑

买腾讯云轻主机部分:

买云主机有两个目的:一个是获得公网IP,一个是有个搭建Zerotier Moon服务器的稳定环境。

其实买腾讯,买阿里,或者买华为云都行,还有一堆小的云主机服务商也能买,但是我建议买大家耳熟能详的品牌,最建议买腾讯和阿里的,因为现在国内买这样的云主机需要实名认证,而大家的腾讯和阿里系的账号基本都是实名认证过的,不需要额外的认证。

不过我买腾讯云的核心理由就是它便宜:

我买的三年,1核加2G内存,6Mbps的宽带,以及1000G流量包,三年只要219。后续续费肯定是飞天一般的贵,但是三年后再看吧。

至于我为什么没买阿里的?因为阿里的比这个贵一点吧。

单核,2G内存,装个Debian,给我跑一下服务,就够了,后期加点什么自动签到打卡的脚本上去,它也不是不能用。

进入腾讯云界面,然后点购买,扫码登录你的微信(我也不知道为什么腾讯一定要所有的服务都用微信登录),然后会自动进入微信小程序,然后你就授权登录了。网页端进入服务器配置界面:

地域:选择与您最近的一个地区,选一个地理位置距离自己最近的地方就行。

机型:选择您需要的云服务器机型配置。这里我们选择 “入门设置(1核1GB)”,因为这个最便宜。

镜像:选择您需要的云服务器操作系统。这里我选择的是Debian,不过选别的也都行,每个系统选好之后都会给你预装好。

公网带宽:勾选后会为您分配公网 IP,默认为 “1Mbps”,不过轻主机这个已经固定死了,就是6Mbps。

购买数量:默认为 “1台”。 购买时长:默认为 “1个月”,我选了三年。

买完服务器之后,腾讯会让你先重置密码,然后你进入腾讯的服务器-轻量服务器-控制台,就可以看到自己的主机了。其中是默认绑定了一个公网IP地址,相当于你花两百多买了三年的公网IP。

你可以选择在网页端打开命令行界面管理,也可以在本地用SSH登录进行管理。

建议使用MobaXterm作为远程管理服务器的软件,这个软件支持记录你的登录设置,特别是还有图形化文件管理界面,很适合新手使用。

4.Zerotier的Moon服务器搭建配置踩坑

上面说的Zerotier虽然可以互相访问,但是由于流量还是走的zerotier的官方服务器,在高峰期或者说跨宽带运营商的情况下,网络质量实在是堪忧,最直接的体现就是ping值忽高忽低或者掉包,如果是用来长期使用,这网络质量还是有点不行。正好腾讯云有台5M带宽的服务器,zerotier又支持自建中转服务器,腾讯云的BGP网络用来中转流量再合适不过了。

我的腾讯云服务器安装的是最新的Debian,作为zerotier的中转服务器(moon),zerotier的安装方式如下:

但是Zerotier作为moon,还需要再执行几行命令,相关命令如下。

生成moon模板配置文件:

cd /var/lib/zerotier-one zerotier-idtool initmoon identity.public >> moon.json

编辑生成的moon模板配置文件:

vim moon.json #

修改这行: "stableEndpoints": ["1.2.3.4/9993"]

不过其实更建议用MobaXterm的图形化文件管理修改这个文件,双击打开,然后直接保存更新,就不用学vim命令行了,vim的操作逻辑很烦。

注意需要将上面的1.2.3.4替换成实际的公网IP地址,不能是内网地址。

要注意的一点是,在配置之前,还得先看看自己的网络网关开启9993端口没有,如果没有的话,建议先开启了再去配置。

并且,如果服务器本身开启了防火墙,需要将9993端口进行放行;同时,服务器安全组也需要放行9993端口,比如我的腾讯云轻量云服务器安全组设置截图:

然后根据模板文件生成最终的moon文件:

zerotier-idtool genmoon moon.json

执行完成之后,会在当前目录生成一个名称为000000xxxxxx.json的文件。

创建对应目录,将生成的配置文件放置进去:

mkdir moons.d mv 000000xxxxx.moon moons.d

重启服务: systemctl restart zerotier-one

客户端加入自定义的moon 步骤也很简单,Linux及macOS直接在终端执行,Windows需要使用管理员权限在PowerShell或者cmd执行,命令如下:

zerotier-cli orbit 0000000xxxxxxxx 0000000xxxxxxxx

如果加入成功,会有如下提示: 200 orbit OK

要注意的的是,这个命令行后面你的“0000000xxxxxxxx”要打两次,这样才能正常执行加入。

查看是否加入moon:

在非moon设备上执行如下命令:

zerotier-cli listpeers

如果出现了对应的公网服务器IP及9993端口,

说明数据是走moon中转的。

5.NAS与Windows设备加入Moon服务器踩坑

按道理来说,在Windows和NAS设备上装了Zerotier之后,再去加入Moon服务,也就是说执行了zerotier-cli orbit 0000000xxxxxxxx 0000000xxxxxxxx这个命令行之后,它就会自动加入Moon服务器,你就有自己的中转服务器了。

如果你一直获取不了moon服务器的地址,比如这样:

中间MOON结尾的图并没有完美获取公网IP地址,

如果加成功的话,应该是这样的。

出现获取不了地址的原因,我排查出来有几个解决方案:

1.就是9993端口的问题,首先确认自己的9993端口是否开放。

2.是自己zerotier客户端设置问题:

打开zerotier客户端,点击“show networks…”,如下:

再把下图红框中的几个对勾打上,重启服务"ZeroTier One"和客户端。就会发现现在可以连接上moon了。

zerotier打洞使用p2p传输

其实zerotier是支持p2p打洞流量传输的,并不是自建了moon所有流量就经过moon服务器中转的,如图这是我从我电信宽带的设备远程连接到移动宽带内网的设备,在移动宽带内网的设备的带宽统计截图:

稍微有点惊喜的是,我腾讯云公网服务器带宽是5M,经过zerotier打洞之后使用p2p协议,两台设备之间的带宽可以达到10M,不知道是不是能达到其中一方的带宽上传上线。

zerotier设置完之后,我就可以在互联网的任何一个地方都用自己的设备访问自己放在家里的TS-464C2上的AI Web页面了。

那么下一个问题就是,我的AI Web页面肯定是24小时跑着的,这个机器的性能足以支撑我的网页服务吗?

威联通TS-464C2参数性能分析

威联通的TS-464C2接口是双2.5G有线网接口,一个USB-A3.2接口,一个USB-A接口,一个HDMI接口,以及一个通用的DC电源接口。

双2.5G有线网接口我就可以同时接两条宽带进去,实现动态负载均衡,保证它永不掉线,那么我的AI Web页面的稳定性就有了保障。

TS-464C2整体大小非常小,完全可以扔在我的架子上,安安静静的角落里,完全不会有人动它,这时候稳定性再加一。

TS-464C2的原生内存部分是给的8G DDR4 内存,反正我拿来跑服务,自从开机之后我就没管过它了,稳定性相当好。

TS-464C2这次给了专用的硬盘锁,防止手贱的人突然把我的硬盘拆掉。这也是威联通第一次在普通消费级NAS上给到这个配置。对于我这样的想把NAS扔在异地半年一年都不管的人来说是最棒的,因为这样能极大地降低硬盘突然被抽出的风险。硬盘安全性加一,服务稳定性更进一步得到了保障。

结语

这个威联通TS-464C2的性能和稳定性都比较高,我用了快五年的威联通,基本都是新机器拿过来配置一下扔在那里就让它跑了,基本没有管过它,而新加入的硬盘锁和升级的双2.5G有线网接口,直接提升了它的内网交换数据的性能以及硬盘安全性。

配置完AI 网页之后,我就再也不用想着动不动就需要手机号验证登录AI的问题了,直接打开就用。

0 阅读:0

电子开箱不简单

简介:感谢大家的关注