搭建个人博客?其实很简单。
免责申明
作者通过本文仅分享自身的体验和思考,不对内容客观性和正确性做任何承诺。本文不构成商业、技术、法律或其他任何层面的正式建议。
序言
博客是一种流行于20世纪前十年的互联网信息分享方式。虽然博客的地位近年来已被微博、短视频等其他方式取代,但 我结合自身感受,思考后认为依然有搭建个人博客的必要(原因见博文)。
曾经搭建博客有两种方式。一是在博客平台上注册账号,优点是简单快速,缺点是对平台依赖度太高,违背独立的初衷。 另一种方式是购买、租用服务器,自行假设网站,这种方式虽然能够保证独立性,但要求较高的网络技术水平,步骤繁琐,耗时耗力。
幸运的是到了2023年有了更好的方式,能做到既简单快捷,又保证独立性。
基本思路
我认为个人博客当前最佳的搭建方法是基于以下技术:
- 基于Markdown格式写作博客内容源文件
- 采用Git对源文件版本控制
- 采用静态网页生成器将源文件转化为Html文件
- 将Html文件发布到页面托管服务
- 将注册的独立域名绑定到页面托管服务上
Markdown是一种格式简单的标记语言,广泛应用于程序文档写作。主要优势是简单易学,支持广泛。 除了Markdown之外也可以考虑ABC、RST格式。
Git是一种通用的代码版本控制工具,也可以用于纯文本文件。使用Git时可以结合云端的Github、Gitlab等平台和 本地仓库备份,最大保证源码的安全和独立性。
静态网页生成器可以将Markdown的源文件转化为Html页面文件,转化过程中可以通过模板控制页面的视觉风格。 有很多不同的静态网页生成器,我使用的的是基于Rust语言的Zola。
通过前三步我们能得到Html页面,接下来需要将其发布到页面托管服务。提供页面托管服务的网站很多, 常用的有Github、Amazon、Cloudflare等。这里我采用了Cloudflare,原因后述。
发布到页面托管服务后我们的博客已经可以通过自动分配的网址被外界访问。但这个网址是依托在页面托管服务的主域名下的, 例如“pages.cloudflare.com”。为了保证独立性最好注册一个独立域名,例如“the-xiongs.org” ,然后将其绑定到我们的页面。
到此为止,我就拥有了一个独立的博客。
优势分析
这条技术路线的主要优势在于将域名作为我的网上身份。网友通过“yaohua.the-xiongs.org”访问我的博客,只要保证我对“the-xiongs.org”域名的控制,这个网址就一直有效。而控制域名远比控制手机号码和qq号码容易,因为互联网域名管理组织远比中国电信和腾讯可靠。
假设Cloudflare倒闭,或者封了我的号,或者要审核我的内容,或者强行要求我把文章授权给他们,我可以停止使用他们的服务,将网页发布到其他页面服务商比如Github, 然后将域名绑定到新的页面。整个过程一个小时内可以完成,不会影响读者后续访问。
使用页面托管服务而不是自己假设网站服务器主要有两个优势。首先是难度低,不需要做复杂的配置和定期的维护。 其次没有服务器应该可以规避备案,毕竟你发布页面到Cloudflare和发布一篇文章到知乎、微信朋友圈没有区别。 到现在为止没有听说有人因为发微信朋友圈被要求做备案。
拥有独立域名的另一个好处是可以新建无限数量的虚拟电子邮箱。不需要自己假设维护邮件服务器,只需要使用邮件转发服务。 邮件转发服务可以把目标为自己域名的任意邮件转发到某个实际邮箱。 例如发往“[email protected]”和“[email protected]”的邮件都转发到实际邮箱账号“[email protected]”。
通过虚拟邮箱可以部分避免骚扰邮件。当我要注册某个网站又担心它泄露我的邮箱地址时,我可以马上新建一个虚拟邮箱,例如 “[email protected]”,用于注册。一旦这个邮箱收到垃圾邮件,我首先能够确定这个玩占是泄漏的源头,其次我可以作废这个虚拟邮箱。
其他改进
前文的发布流程还是相对比较麻烦,某些服务商支持直接监控Git代码仓库,博客源码更新时自动编译发布新版本。 参考我使用Cloudflare的服务,与Github集成的设置方法。
另外基于Markdown的页面生成灵活性和表现力还是有所欠缺,尤其不能支持包含复杂排版和数学公式的页面。 这方面比较有潜力的是Typst,当前还不支持Html导出,等后续支持了可以考虑切换过去。
最后现有的账号体系中还有一个薄弱环节,无论是Cloudflare还是Gmail的账号最终靠手机短信验证码验证。 虽然手机号码失去的可能很小,但验证短信又被拦截和伪造的可能性。更好的方法是使用Yubikey、OpenSK之类的硬件身份认证。