本站的成立(技术篇)
终于把这个域名用起来了
上周无意间看到几个博客,突然想把自己手里这个被闲置了很久的域名。
这个域名其实已经陪了我好几年,那时候 Google Domains 还没有被 Squarespace 收购。那时候,我就想做一个真正属于自己的个人网站,苦于技术能力有限,也没有太明确的方向,最后只是做了一个很原始、静态、偏简历形式的个人网页。
后来,那个网页被我放到了 GitHub Pages,这个域名闲置了下来。再后来,这个域名也逐渐变成了我各种个人项目的内网穿透入口,包括 NAS、树莓派、自部署的 PhotoPrism 照片库、VPN 等等。
直到最近,我看别人的博客。看到有人记录技术折腾,有人写生活片段,有人把自己的项目、想法、读书笔记都记录下来。我突然觉得,在AI的帮助下,也许我也应该把这个地方重新搭起来。
可喜可贺,这两周摸了几天鱼,终于把这个网站搭起来了。从技术栈选择到编码实现,整个过程几乎都是由 CC 和 Codex 完成的。而我,作为包工头,主要任务在于鞭策大模型,主要负责前期的服务器调研,以及后期的呈现效果验收。
方案选择
这次搭站之前,我先做了一些基础设施和技术方案上的选择。
Infra
我在服务器的选择上,有几个标准:1. 免费、2. 没了。(我就是要白嫖)
用的是 Oracle 的。 Free Tier 理论上能白嫖到 2 核 24 GB 内存的 ARM 架构的 Ampere 服务器,但是一直创建失败,大概是被抢完了,只能退而求其次用 x86 架构的 EPYC 7551,只有可怜的 1 核 1 GB 内存。没办法,先用着再说吧,如果以后还能抢到大内存的再迁移就好了,网站也可以更花里胡哨一些。
数据库选择了本地 SQLite,GPT老师说:对个人网站来说,配合 Drizzle ORM 管理表结构和迁移,SQLite 很合适。它就是一个本地文件,不需要单独维护数据库服务,也没有额外费用。后期要备份或者迁移,也比较简单。
媒体文件储存选择了 Cloudflare R2。这理由我知道,因为免费。
域名,DNS 等也一起打包也交给 Cloudflare 管理。
总结一下原因:白嫖万岁。
技术栈
网站主体用了 Astro;后台文章编辑器这类需要复杂交互的地方,引入 React;编辑器用的是 TipTap;整体代码使用 TypeScript。
什么,你问我为什么?我不知道,我只是个盖章的包工头。
一些额外功能
除了网站主体,我也加了一些额外功能。
一个是备份。SQLite 数据库和 R2 里的媒体文件会每天凌晨同步到 Google Drive。毕竟是白嫖的服务器,万一哪天挂了或者真的回收了,还能快速的换一个白嫖。
另一个是健康检查。实际上这是另一个项目,用来确认网站是否还活着,服务、数据库和媒体存储是否正常。之后我可能再单开一个帖子讲讲这个项目。
未来计划
现在这个网站还很简单,很多地方都只是刚刚能用。
接下来大概会继续慢慢做一些美化工作,比如调整排版、优化配色、补一些小装饰,让它从能用逐渐变好看。
另外,后台的文章编辑器现在也还比较原始,它已经能完成基本写作,但离真正我想要的排版还有距离。就算我写的是坨屎,也能被排版包装成巧克力,被装饰调兑成巧克力味,那么,看着像巧克力,闻着像巧克力,那一定就是巧克力了,即使我写的是坨屎。
还有,可能需要一个移动端的 app 用来发帖子,打开网页再进入后台的路还是太长了,我本就奄奄一息的创作热情支持不了那么久。
至于更多功能,就等真的遇到需求,再慢慢补了。
一点感受
这次让我最明显感受到的是,AI 让愿意捣鼓的人更容易捣鼓了。具体就单开一篇讲吧,这篇主要就是本站的技术汇报。
感谢各位读者的光临(鞠躬)。