24年年底我在阿里云购买了目前的 polaristaion.fun 域名,准备作为个人博客的域名来使用。但域名有了,博客服务器该如何搭建却让我犯了难。
这边都是废话
服务器硬件上,目前主流的方案大多是租用 VPS (Virtual Private Server) 服务商提供的虚拟服务器搭建。但众所周知,国内IPv4地址资源并不多,商用的企业宽带费用也是高的吓人,一般人如果想要以较低廉的价格长期租用到一台性能尚可、拥有公网访问能力、带宽也还算可以的服务器的可能性无限接近于0。虽然博客服务器本身对性能要求不高,但为了访问和浏览的良好体验(其实是钱包真的撑不住辣!),我不得不放弃这个方案,转而准备自主搭建服务器硬件。
如前文所说,个人博客服务器对性能要求不高,如果专门为了它而装一台电脑属实有些小题大做。理论上只要是一台可以运行Docker,并且可以公网访问的电脑就足以满足我的需求,于是我便把目光放到了1年多前我给家里装的软路由身上……
先来看看我们家的网络拓扑结构:
graph TD
A[光猫] -->|桥接模式| B(软路由 WAN 口PPPoE拨号)
B -->|DHCP 服务| D[软路由 LAN 口]
D -->|分配 IP| E(内网设备1)
D -->|分配 IP| F(内网设备2)
D -->|分配 IP| G(内网设备3)
D -->|分配 IP| H(内网设备N)
好吧,这只是一个再普通不过的光猫桥接、软路由拨号的家用网络拓扑结构罢了……其实只要保证运行博客服务器的主机可以获取到公网IP地址就可以了。
关于网络基础设施的搭建在此就不赘述,详细可以看我的另一篇文章【此处应有链接(挖坑)】。
因为我们家用的是移动宽带,所以公网IPv4什么的基本就别想了,但好在光猫可以获取到公网IPv6的地址,这就使得公网访问成为可能。外网通过域名连接的问题可以通过 DDNS (Dynamic DNS) 解决(后面会讲),家用宽带的带宽也完全足够一个博客网站使用。用于部署博客系统的软路由主机基本配置如下:
软路由使用 x86 Intel® 7代平台的 NEC M710Q 小主机
CPU: Intel® Pentium G4560 2C4T with Intel® HD Graphics 610
RAM: 8GB DDR4 2666MHz
Storage: 128G NVMe SSD + 2TB SATA HDD
Network: 1Gbps RJ45 ×2
本套主机平台功耗很低,软路由系统日常负载长期低于 5%,7×24 小时开机运行,并且OpenWRT系统可以运行Docker,用于部署博客系统十分合适。
地基准备妥当了,往上面盖什么样子的房子呢?
说到博客系统,互联网上的各种开源项目琳琅满目,各有千秋。
但凡事在做选择前,都要先明确自己的需求,这样才不至于陷入选择困难。而我对于博客系统的需求点主要就2个:轻量化、功能全。轻量化主要是为了减轻服务端压力以及在网络质量堪忧的情况下也具有相当的可用性;功能全则是由于目前主流的几款博客系统本身功能其实并不算丰富,主要是靠各种插件来进行界面美化和功能补全,像广泛使用的Hexo类静态网站生成器甚至都没有管理后台。所以为了能够一步到位,保障高度的可维护性与性能,避免因为装了一堆插件而导致服务端变得臃肿繁杂,我需要一款本身就已经提供了相当齐全管理工具的博客系统。
因为我做博客的目的主要是为了记录一些自己做的项目、学到的一些知识、日常生活解决问题某些的经验,所以良好的文本编辑与阅读体验是首要的,而至于其他的一些花里胡哨的装饰性功能则没有强烈需求。
以此为目标,我在互联网上搜寻到了现在所使用的这个博客系统—— VanBlog 。这个系统完美满足了我对于博客系统的需求期望,并且可以在当前的平台使用Docker部署,帮助文档也写的十分详细,我便毫不犹豫地选择了它。
至于如何部署可以移步至该博客项目的快速上手页面,根据需求选择部署方式。
提示
如果你和我一样是使用OpenWRT之类的本身就带有Web管理界面的系统设备进行部署,那么 VanBlog 博客(或者说所有博客系统)默认所使用的 80 (HTTP) / 443 (HTTPS) 端口此时应该是被宿主系统本身的Web管理界面所占用的,所以应当提前更改宿主系统的Web管理界面端口,以此释放后提供给 VanBlog 使用,这里提供一个更改OpenWRT系统Web管理端口的教程,其它系统可以自行查阅。这样更改后,访问宿主系统Web管理界面时就需要在IP或域名后面加上前面教程中所修改的端口号(例如 http://192.168.1.1:2333 or https://example.xyz:2333 )来进行访问。
当然,如果你能够接受在访问博客时在域名后面加上端口号的话,也可以修改Docker容器的端口号来避开宿主系统的Web管理界面端口。
此外,路由器防火墙设置也需要注意,应当放行需要公网访问的端口的IPv6入站流量。
博客系统在本地部署完毕后,可以先尝试使用本地IP直接连接,来测试博客系统是否在正常运行,以及,注册好后台管理员账号,填写网站的相关讯息。
在做完以上步骤后,就可以着手准备将域名解析到当前设备的IP地址了。 我的域名是在阿里云购买,所以接下来我将以阿里云为例来介绍如何设置DDNS实现在公网使用域名访问个人博客。
这里先简单介绍一下DDNS服务的工作过程,以便理解后面的配置流程。不过首先请务必确保你已经知晓了何为DNS服务以及其工作原理。
graph TD
A[用户设备] -->|定期发送IP地址| B(DDNS客户端)
B -->|将IP地址发送到| C{DDNS服务器}
C -->|检查IP是否变化| D{IP是否变化?}
D -- 是 --> E[更新DNS记录]
D -- 否 --> F[无需操作]
E -->|通知DNS服务器| G(DNS服务器)
G -->|更新域名解析记录| H[域名解析生效]
F -->|等待下一次检查| B
H -->|用户访问域名| A
DDNS-GO 是一个开源的多平台动态域名解析服务,可以实现多个域名管理平台的域名解析,同时支持 IPv4 和 IPv6,也就是说只要有公网IP就可以实现动态域名解析将内网服务暴露到公网。支持的域名服务商包括阿里云、腾讯云Dnspod、Cloudflare、华为云、百度云、Porkbun、GoDaddy以及自定义Callback。
这里我只介绍一下OpenWRT系统的安装流程,至于其他系统的安装方法可以自行查阅。
提示
OpenWRT有很多不同开发者整合编译的版本,有的甚至会内置DDNS-GO服务,对于这类系统可以直接跳过本段。
对于像iStoreOS这样内置应用商店的OpenWRT版本,可以直接在应用商店搜索"DDNS-GO"进行一键安装。而对于没有内置应用商店的版本可以按照以下流程进行安装:
cd
命令切换工作目录到对应文件夹。如果文件夹中只有需要安装的ipk包,可以使用以下 opkg
命令安装该目录下的所有ipk安装包( * 是通配符)。opkg install *.ipk
ddns-go -h
root@Polari_S_tation:~# ddns-go -h Usage of ddns-go: -c string 自定义配置文件路径 (default "/root/.ddns_go_config.yaml") -f int 同步间隔时间(秒) (default 300) -l string 监听地址 (default ":9876") -noweb 不启动 web 服务 -s string 服务管理, 支持install, uninstall
RAM (Resource Access Management) 是阿里云提供的身份访问管理服务,用于管理和控制云资源的访问权限。RAM用户由阿里云账号或具有管理员权限的其他RAM用户、RAM角色创建,不拥有资源,不能独立计量计费,必须在获得授权后才能登录控制台或使用API访问阿里云账号下的资源。一个阿里云账号下可以创建多个RAM用户,对应企业内的员工、系统或应用程序。
之所以要用阿里云的RAM账号是因为我作为主账号管理者可以控制这个子账号可访问的资源范围,而在此处我只是用它来管理域名DNS解析记录的,所以没有必要将整个账号的全部权限都授权给宿主机的DDNS服务,这样做可以一定程度上提高账户安全性(虽然我账号上也没什么有价值的东西)。
提示
如果没有这个选项的话可以点击右上角的“使用旧版”。
<主机记录>
. <域名>
就是这个网站的实际域名。相关信息
关于域名的组成可以看博客园的这篇文章,有兴趣的可以了解一下。
提示
也可以先把服务器现在的IPv6地址手动填写进去,保存之后可以尝试访问该域名,检查DNS解析是否正常工作。
填写好子域名相关配置之后就可以设置RAM账户了。
至此,阿里云 RAM 账户配置已经完成,可以进入下一阶段了。
回到博客服务器,访问DDNS-GO配置页面。
提示
这里一定要填写网站的完整域名,即上文提到的 主机记录
. 域名
。比如我这里就应该填写 “blog.polaristation.fun”。
至此,所有网站相关配置全部完成,保证服务器正常联网后域名DNS解析记录就会自动更新。在保证设备有IPv6联网权限的情况下就可以尝试使用域名访问博客网站了。
本文作者:Polaris⭐
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 Polari_S_tation 版权所有 许可协议。转载请注明出处!