【独立开发日记 001】白嫖服务器搭建个人站点

今天站点(http://xtdbt.com)终于搞完上线了。看着流程跑通,站点正常访问的那一刻,还是挺高兴的。
站点用的开源项目:https://github.com/shadcn-ui/taxonomy,想着顺便可以再熟悉下React和Next.js.
项目部署的选择
项目部署其实最早我想过直接用 Vercel,毕竟大家都在推,一键部署方便,还不用搞服务器。但作为一个写了 10 年后端的人,那种"代码跑在别人的黑盒子里"的感觉,总让我不太踏实。正好周末有时间,折腾一下。
尤其是考虑到以后想做 Micro-SaaS,可能会挂载一些 Python 脚本,或者跑一些稍微耗内存的任务。如果全靠 Serverless,一旦流量起来,那个账单可能会有点不可控(虽然我现在还没流量 😂)。
纠结了一会儿,还是决定走一条"笨路子":AWS EC2 + Docker + CI/CD。
这听起来有点"反潮流",毕竟现在都在推 Serverless。但对我来说,这是最可控的方案:
1. 算力握在手里
Docker 容器跑起来,无论我想换语言、装依赖,还是迁移到腾讯云/阿里云,都是一行命令的事。有了服务器,也可以很方便地在服务跑一些任务。
2. 成本透明
搞到了 AWS 的抵扣金,配合 Cloudflare 和 Supabase 的免费层,目前的服务器成本确实压到了 $0,短时间也不需要更好的配置。
部署过程
过程确实比 Vercel 痛苦多了。特别是 node 版本这块,构建时环境变量报错的问题,卡了我半天。中间一度想放弃换个框架,或者回去用 Vercel 算了。
但解决完最后一个报错,看到流水线全绿的时候,那种掌控感又回来了。
技术栈清单
我也把目前用到的服务和组件整理了下。一个老开发对"稳定性"和"折腾"的一点执念。
- 计算: AWS EC2 (t3.small) —— 利用抵扣金覆盖成本,性能吊打免费的 micro 机型。
- 网关: Cloudflare + Nginx Proxy Manager —— 自动续期 SSL,防攻击。
- 数据库: Supabase (PostgreSQL) —— 免费订阅足够用大,且支持 Transaction 模式。
- 缓存: Upstash (Redis) —— Serverless Redis,做限流和简单缓存。
- 部署: GitHub Actions —— 自动化编译、打镜像、push、SSH 服务器、拉镜像、启动。
网站主页截图
#独立开发 #Nextjs #AWS