Github Pages,CloudFlare Pages太慢?
云服务器太贵?配置太差?带宽小水管?
厌倦了Hexo等静态博客,想搭个高大上的动态网站?
不用担心!本文教你使用sakura frp(其他类似的内网穿透服务同理)来搭建动态网站!整个过程完全免费!
环境搭建
硬件
- HP Z240 Workstation
- ChipSet:C236
- CPU:E3-1255v6@3.30GHz 4C4T
- RAM:16GB DDR4 2133MHz
- Storage:128GB NVMe SSD + 500GB HDD * 2(RAID1) + 128GB SATA SSD
PS:当然,用自己的电脑+IIS也可以XD
软件
- OS:fnOS@latest
- 虚拟化平台:fnOS自带QEMU虚拟机
- VMOS:Ubuntu 25.04
- FRP服务:sakura-frp(免费两条隧道,10Mbps带宽,可建站,签到送流量)
注意:有些FRP服务是不能建站的,像我之前买的9.9r 1年的FRP服务就焊死了端口号,这种没有80/443端口的也可以开web服务,但是基本只能自己用
安装服务器面板
推荐安装1Panel - 现代化、开源的Linux服务器运维管理面板,
无论是从UI设计还是功能上我感觉都要比一股中年老登味的宝塔面板要好
创建好虚拟机之后,直接复制官网的一键安装脚本

全部使用默认配置安装,装好之后,按照信息登录对应网址就能看到1panel的管理界面了~
[1Panel Log]: =================感谢您的耐心等待,安装已完成==================
[1Panel Log]:
[1Panel Log]: 请使用您的浏览器访问面板:
[1Panel Log]: 外部地址: http://xxxxx:37948/xxxxx
[1Panel Log]: 内部地址: http://192.168.31.99:37948/xxxxxx
[1Panel Log]: 面板用户: xxxxxx
[1Panel Log]: 面板密码: xxxxxx
[1Panel Log]:
[1Panel Log]: 官方网站: https://1panel.cn
[1Panel Log]: 项目文档: https://1panel.cn/docs
[1Panel Log]: 代码仓库: https://github.com/1Panel-dev/1Panel
[1Panel Log]: 前往 1Panel 官方论坛获取帮助: https://bbs.fit2cloud.com/c/1p/7
[1Panel Log]:
[1Panel Log]: 如果您使用的是云服务器,请在安全组中打开端口 37948
[1Panel Log]:
[1Panel Log]: 为了您的服务器安全,离开此屏幕后您将无法再次看到您的密码,请记住您的密码。
[1Panel Log]:
[1Panel Log]: ================================================================

安装sakura-frp启动器
注册sakura-frp账号:Sakura Frp | 樱花内网穿透 — 免费内网穿透_免费端口映射_高速_高防节点_不限流量_Minecraft我的世界_微信开发调试_群辉NAS_无需公网_免备案
进入后台管理页面

选择Linux,复制安装脚本并安装(直接在1panel里面的终端复制粘贴执行就行,当然SSH也可以)

安装完成后会打印出frp服务的Web管理地址
以后如何查看Web管理地址呢?
由于安装1panel时会默认安装docker,所以运行完之后1panel的容器页会多一个frp服务的docker容器
点进终端,输入
cat config.json
可以看到是本机的7102端口,端口号下面是WebUI的访问密钥
建立隧道
**注意:**如果要使用自己的域名,那么就必须进行ICP备案并且审核通过(10~20天),域名备案通过之后在sakura-frp后台提交备案号和对应的域名
如果仅用于测试,也可以使用sakura-frp提供的子域
下面以使用我自己的域名test.starsac.cn为例
- 在管理后台创建HTTP隧道

- 在服务器上登录Web管理页面,应用创建好的这个隧道(从下面拖上来就可以了)

测试:建立一个简单的静态网页
- 安装OpenRusty(高性能的反向代理服务器和Web服务器)
直接在应用商店进行安装,配置全部默认即可
- 建立一个静态网站

- 首先尝试在本地进行访问
由于此时我们没有配置DNS,所以直接使用域名访问是不行的,先使用本机IP地址访问试试:

出现404NotFound是完全正常的,这说明OpenRusty(Nginx)已经成功对我们的请求做出了回应
- 为我们刚才的域名创建解析
- 如果使用sakura-frp自带的子域:
直接在这里申请一种域名并绑定对应的隧道就可以了
- 如果使用自己的域名
找到你域名的DNS托管商(我这里是CloudFlare)
在DNS记录中新添加一条CNAME记录,记录值在隧道列表点击节点名称进行查看:
我们刚才设置的网站域名为
test.starsac.cn,这里就要添加主机名为test,值为frp-fun.com的CNAME记录,TTL可以自动
添加完成之后等待一会,也可以去ITDOG - 在线ping_在线tcping_网站测速_HTTP测速_API测速_路由追踪_在线MTR_DNS查询_ITDOG-云邦畅想看一下解析记录生效了没有
如果一切顺利,我们此时就可以通过域名访问这个网站了:

注意:
- 如果等待10分钟以上仍然无法访问且ITDOG查询记录已经生效,请更换浏览器、网络环境或者设备重试
- 如果为根域(如
starsac.cn)创建CNAME记录,那么通常使用CNAME拉平进行实现,此时无法查询到CNAME信息,可以使用ping进行测试
进阶:设置反向代理实现一台服务器托管多个Web应用服务
在上面的实践中,我们成功搭建了静态网站并通过域名进行访问。在静态网站的场景下,我们可以通过设置多个域名(sakura-frp中一条HTTP(S)隧道可以最多设置三个域名)不同的静态网站来实现多网站的目的。
但是如果要搭建动态网站,就会出现端口冲突的问题(如果A应用已经占用了80端口,那么此时B应用就只能使用其他端口,如果要访问B应用就必须添加端口号)。
这种情况下,我们可以使用OpenRusty作为反向代理服务器,在80端口上充当门卫,将来自不同域名的请求转发给在不同端口上的Web应用,这样就解决了端口冲突的问题。
接下来我以Halo建站和Gitea代码托管平台为例,在一台服务器上搭建两个动态网站。
安装Halo建站
Halo需要使用数据库,因此我们先安装数据库(这里我安装的MySQL):
一切设置都默认即可。

接下来安装Halo:
数据库服务选择你刚刚安装的数据库,其余配置默认即可。

可以看到halo此时运行在8090端口上,如果你勾选了halo的“允许外部访问”,那么此时你就可以在内网使用IP:8090端口访问到halo的页面了
安装gitea代码托管
配置默认即可,同样使用MySQL数据库

可以看到gitea工作在3000端口上
配置OpenRusty
- 记得在DNS服务商和frp后台那里配置好域名和对应的解析,例如:
- halo:
starsac.cn- gitea:
repo.starsac.cn
- 记得删除之前的静态网站
在以前,配置反向代理需要手写Nginx的 config文件,但是现在有了1panel,部署过程变得非常简单了,直接一键部署

gitea同理。
此时访问试试:


可以看到都已经成功访问
进阶:设置全站HTTPS访问,提高安全性
在上一节的网络架构下,我们只需要在反向代理服务器(OpenRusty)上配置证书就可以了,经过反代之后,数据包脱去了加密,可以用HTTP协议与应用进行通信。
1panel提供了acme账户,可以让我们非常方便的申请免费证书,还可以自动续签。
- 添加一个DNS账户
由于申请证书时需要添加DNS记录来验证对域名的所有权,所以需要添加一个DNS账户让1panel自动完成这些繁琐的设置
以CloudFlare为例(其他DNS服务商也类似):


创建好之后,复制令牌并创建DNS账户

两个都分别申请一下:

在网站页面,点击配置,为每个网站设置SSL证书

然后在frp后台创建对应的HTTPS隧道,并在WebUI管理页面应用新隧道。
现在就可以使用HTTPS协议安全的访问网站了


如果提示没有可以信任的证书,则说明证书没有成功部署
如果提示有证书但部分不安全,则大概是由于证书缓存的原因,可以清除浏览器历史记录,重启浏览器,换用其它设备等方式重试




