历时2个月,断断续续摸了好久才完成自己的小主机部署远程访问服务,今天把这段时间来学习的内容汇总分享出来,总结一下,也希望能帮到大家。最大的一个感受是,Github的开源环境真的太友好了,值得一个大大的赞。人工智能解决了很多我这个不懂技术的人的入门问题,值得另一个大大的赞。
部署准备
涉及软件:
ddns-go: 自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。
Nginx: 反向代理你的本地端口,避免端口直接暴露在公网。
Docker: 搭建和部署你的web应用。
部署环境:
Windows 11
主机配置:
CPU:N5095 内存:8GB 硬盘:128G SSD
网络环境:
联通300M 上行30M
其他:
智谱清言(我的95%以上技术问题全是通过跟他对话解决)
千问(在某些具体代码应用上,效果不如智谱)
解决我这样的小白不会写配置文件或者代码的问题。
实施部署
Docker
从Docker网站下载Docker desktop,这是小白入手难度最低的版本,因为有Windows界面,所以可以可视化操作。下载完成后在Windows任务计划程序中开启自动启动,选择“计算机启动时”,并且将Bios里面的“来电自启动”打开,这样,你就可以保证你的docker在有电,有网时可以自主运行提供服务。
Docker中应用服务非常多,你可以部署一些你需要到的服务。
Docker应用不会随docker启动而自启,需要针对单一Docker应用设置restart。如果使用Portainer,可以在重启策略里直接设置。
如下是我目前部署的服务:
Portainer:一个Docker管理面板,在Windows中,使用Docker部署还是需要用到Windows Shell命令,在这里,你可以直接进行点击,获取到容器链接,设置好容器名称,设置好端口,设置重启,基本上就完成了一个容器的部署。
Drawio:一个流程图应用,对于需要梳理逻辑,制作或者优化流程的人来说是一个神器,Processon的平替,免费。
思绪思维导图:顾名思义,Xmind毕竟收费了,这个当个免费使用的,Drawio虽然也有思维导图模板,但是太简陋了。
Homarr:自建服务器的导航页:我目前设置的是下面这样,这个导航页需要登录后使用,集成功能也算OK。弊端是移动端适配不行。
filecodebox:一个在线传输文件的平台,传输受限于你的网速,而不是会员资格。非常简单的页面,方便实用,注意如果用了反代,需要设置反代参数,不然没办法上传大文件。
另外还有一些:比如你现在访问的Halo、HomeAssistant、jackett、halo、qinglong等。
部署Nginx反代
搭建完这些Docker应用,或者不在Docker里面搭建的,比如我的Alist、Emby和ddns-go、Qbitorrent等,你可以在本地计算机上通过http://localhost:端口进行直接访问,为了实现我们在外网访问,目前可行的方案是通过你的公网IP地址+端口号直接访问,但这会让你的端口直接暴露在公网上。另外一种就是通过Nginx反向代理的方式通过域名+端口的方式来访问。
需要注意的是,目前运营商是默认屏蔽80端口和443端口的,所以按我们往常的逻辑直接输入域名来访问你的服务是不可行的,因为直接输入域名访问的是80端口,但这个端口已经被屏蔽了。
下载并安装nginx软件,在安装目录中的conf文件夹中用笔记本编辑nginx文件,(如果不会写,你把你的需求告诉给AI,让他给你写,可以参考的对话为:我需要将本地8080端口的服务通过nginx反向代理到sample.com这个域名上,请帮我书写nginx的配置文件)自定义访问域名和监听域名
80和443域名默认运营商屏蔽,所以如果是远程主机,无法通过不加端口的方式来访问,所以如果AI给你默认监听的端口是80,你需要修改为其他端口
将自定义域名填写到ddns-go的配置文件中以获取动态公网IP地址,这样会自动将此地址作为域名解析A记录中的值,并自动更新
如果要设置HTTPS访问,需要在配置文件中进行设置,并且将获取的HTTPS证书文件复制到nginx下的文件夹中并在配置文件中指定这个文件夹,网上有免费的HTTPS证书
在路由器设置中设置虚拟服务器,外部内部端口均设置为你在Nginx配置文件中监听的端口。
获取动态公网IP
因为我的宽带虽然有公网IP,但是会不定时的自动更换IP地址,如果不使用ddns-go,那我需要每次访问服务的时候通过路由器远程查询我家里的IP地址,再进行访问,这在使用上非常不方便。
实施步骤:
下载ddns-go,选择对应芯片的版本,以zip结尾的打包文件https://github.com/jeessy2/ddns-go/releases
解压文件,双击运行exe文件
打开配置网站,按要求填写对应域名信息至ddns-go,我这儿是用的西部数码注册的域名,参考这个链接 https://www.west.cn/faq/list.asp?unid=2522#3
设置webhook(目的是通过微信公众号通知更改后的公网IP地址),使用爱语飞飞,url处填写对应链接https://iyuu.cn/
填写ddns-go中关于webhook的说明,然后保存
实现公网IP切换后自动通过微信提醒,并固定域名地址访问远程主机和服务
HTTPS
部分Docker应用或者为了安全考虑需要申请SSL证书, 目前我使用目前使用方案为JoySSL-专业https安全服务商!提供SSL证书申请购买与加密安装服务,免费但90天需要续期。网上有其他自动续期的解决方案,可以自行搜索。
后面了解到除了这个以外还有其他很多提供免费SSL证书的网站,大家可以自行挑选。
所有这些部署完成后,你将可以通过域名+端口的方式在远程访问你的本地服务,如果你还是觉得加端口有点麻烦,你可以考虑使用Cloudflare或者米发等实现域名的隐性转发,这样就可以实现域名的直接访问。