一、技术栈:
- Raspberry Pi + 1Panel + Halo + Frp + Hk Server + Nginx Proxy Manager
- 域名注册商:Porkbun
- DNS解析:Cloudflare
- TLS证书签发:来此加密
- CDN:无
二、树莓派
- 1Panel面板
- Halo
- Frp Client
注意事项
1Panel
- 安装frpc时提示失败,则卸载后重新按安装;提示异常则表示安装正常但未工作,修改frpc.toml配置文件即可。
- 遇到应用工作不正常首先排查相应端口是否开启。
Halo
- 用到的应用全部开启外部端口访问
OpenResty
- 在目前的部署中其实没必要使用这个东西,openresty本质上是是一个基于 Nginx 与 Lua 的高性能 Web 平台,相当于Nginx的角色,但因为1panel面板的原因,很多设置不够灵活,所以没有使用。(也可能是我目前还没有掌握如何正确使用)
- 若使用OpenResty:
- 选择一键部署,已安装应用-Halo
- 在本地服务器的场景下,主域名随便填一个网址即可,因为并不用这个域名来访问该服务,本地能访问该服务的还是 本地IP+Halo的端口。但是因为面板固定的设置逻辑,这里又必须填写一个域名,尽管它没有实质用处。
- 还可以通过反向代理将HTTP服务通过其他端口开放出去,再通过Frp暴露到公网。但是我选举直接通过Frp的TCP的通道将Halo暴露出去,因为即使选择反向代理HTTP的方式,Frp也不能通过访问服务器的端口来访问HTTP,必须绑定域名。但这样如果想启用HTTPS的话,又必须再Frp开启https2http插件,并在Frp客户端的配置文件中配置证书,我尝试没有成功,具体问题见Frp配置HTTPS遇到的问题。
Frpc
配置一个proxy,如
[[proxies]]
name = "halo"
type = "tcp"
localIP = "192.168.1.100"
localPort = 8090 # Halo的本地端口
remotePort = 自定义 # frps服务器对应的端口
这样即可实现:访问 frps服务器IP+remotePort 打开博客网站
如此,在frps一侧,配置应有两种考量:
- 若云服务器对80端口不做限制,则可将remotePort直接设为80,其后将域名直接解析到云服务器的公网IP,则可实现域名访问博客。(域名默认访问解析IP的80端口)
- 若是云服务器对80端口有所限制,或出于安全考虑,则可以设置remotePort为其它端口,再由Nginx反向代理服务监听80端口,将域名与服务的真实端口相连接。
三、云服务器
- 1Panel面板
- Frp Server(1Panel应用商店安装)
- SSH命令行Docker安装Nginx Proxy Manager
- 安装KejiLon Linux一键管理脚本一键脚本工具 - KEJILION
Nginx Proxy Manager
Nginx的图形化管理后台,有中文版,可以手动上传TLS证书或使用内置的Let's Encrypt申请和自动续签证书,但不知道为什么我配置的时候报错了,所以我只能选择在别的机构申请证书并手动上传,并手动续签。三个月一续而已,我觉得完全可以接受。
评论区