自己手里有很多私有服务,并且域名还都不一样,例如下面这些:
应用 | ip |
---|---|
NAS | 192.168.30.5:5000 |
Jellyfin | 192.168.30.5:8096 |
私人笔记 | hoey94.github.io |
私人网盘 | 192.168.30.5:9000 |
chatgpt | chat.github.io |
… | … |
这些应用管理起来十分不方便,于是就想将这些网站整合在一起,并且对外提供统一域名访问方式。我自身是有一个免费的顶级域名的hoey.tk,那现在的需求就很明确了,其实就是想得到下面这样的效果:
应用 | ip |
---|---|
NAS | nas.hoey.tk |
Jellyfin | jellyfin.hoey.tk |
私人笔记 | notes.hoey.tk |
私人网盘 | pan.hoey.tk |
chatgpt | chat.hoey.tk |
… | … |
最近找到了一款挺不错的软件Nginx Project Manager,并且还能提供免费的SSL,虽然3个月到期以后还要手动续期,不过白嫖的东西还要什么自行车。它的页面像这样:
配置完以后,访问的时候只需要使用二级域名访问即可,十分方便,维护起来也十分傻瓜。
前置准备
- VPS任意,我的是在国外自购的一台服务器,为什么自购国外,大家懂得都懂,现在是科学时代。
- 自建家用机服务器,我的服务器主要插上8T*2机械硬盘组磁盘阵列,搞成NAS存储服务器做个私有云。另外结合esxi或者是docker能跑很多好玩的东西,这里就不一一列举了,感兴趣的小伙伴可以搜索一下自建NAS服务器 ALL IN ONE。
- tk域名是白嫖的,在DNS服务商那里却不被支持(这就是白嫖的代价吧)。自己又穷,买不起域名哈哈哈,就搞了个垃圾域名做中转,4块钱人民币一年哈哈哈。
网络拓扑图
下面这个是结合自己家庭网络拓扑图和已有的一些服务的网络拓扑图,用这个实现二级域名访问+SSL。
从最右边开始一层一层解释所做的事情:
首先联系联通宽带,给到公网IP,将自己内网服务,在软路由内部通过端口映射的方式开放到外网。如果没有公网IP,也可以用frp等工具实现内网穿透。
接下来要解决公网IP变动的问题(联通给的公网IP是动态的,每隔一段时间就会变)。DNS服务商我选择的是Cloudflare,实现DDNS这块是参考开源项目,改写了一个脚本,其主要功能是:以轮训的方式,动态监测公网IP变更,将A记录通过API的方式更新到Cloudflare以实现DNS解析,具体脚本参考cloudflare-api-dns,当然网上也有很多类似以封装好的工具实现DDNS,比如ddns-go
在自己的VPS上搭建好Nginx Project Manager(后面我们简称NPM),用来整合自己所有的服务,并添加SSL认证。
在Cloudflare创建记录将tk域名映射到VPS上,反向代理接受到请求,转发到4块钱买的域名(hoey.asia)上,哈哈哈。
在CentOS 7上 安装 NPM
- 确保安装了docker 和docker-compose
1 | docker |
- 使用docker-compose 安装npm
1 | mkdir -p /data/docker_data/npm |
- 更新NPM
1 | cd /root/data/docker_data/npm |
- 卸载NPM
1 | cd /root/data/docker_data/npm |
结合Cloudflare 配置NPM
NPM默认账号密码: admin@example.com/changeme,登录后修改
登录Cloudflare,到自己的域名中添加A记录,指向VPS服务器(我的VPS是110.123.11.1,域名是hoey.tk)
在NPM中添加对应的反向代理配置,并打开SSL,(下图是以nas这条记录为例,描述NPM的配置)
之后开启SSL认证
点击保存即可。
总结
配置完成以后,就可以使用nas.hoey.tk访问nas服务了,当用户访问nas.hoey.tk时,在网络中它的链路应该如下图所示:
以上