个人网站建设方案

阅读约 2 分钟

想清楚要什么

一开始的需求其实就一句话:我想有一个自己的地方,能写东西,也能存东西。

写东西是对外的,谁都能看;存东西是对内的,只有自己和少数几个人能碰。这两件事在大多数人的方案里是分开的——博客托管在静态平台,文件丢进网盘。但我不想把数据交给第三方,于是它们必须长在同一套基础设施上,共用一套账号。

整体结构

最终形态是一个 Next.js 应用,跑在家里一台物理服务器上。云端只留一台轻量服务器,上面跑 OpenResty,负责 TLS 终止、缓存和限流,然后把请求回源到家里。

访客 ──HTTPS──> 云端 OpenResty ──DDNS 回源──> 家里服务器
                  (TLS/缓存/限流)              (Next.js + PostgreSQL + 硬盘)

为什么要绕这一层?因为家里宽带封了 80/443 端口,也没有固定公网 IP。直接暴露家里的服务是不可能的,必须有一个云上的入口来卸载 TLS、扛住扫描和低频攻击,再把干净的流量送回家里。

一条账号贯穿

四个模块共用一套 better-auth 账号:

模块 谁可以访问
博客 所有人
网盘 受邀者(按身份只读或可写)
知识库 受邀者(按身份只读或可写)
工作台 登录后

受邀者不是自己注册的,而是我发一个邀请码出去。码里已经写死了身份和可访问范围——你能看到什么、能改什么,在我生成这个码的那一刻就定了,登录后改不了。

边界

有几件事刻意不做:不做评论系统(至少现在不做)、不做文章浏览量统计、不做任何需要往第三方上报的东西。这个空间的价值在于它是自己的,每接一个外部依赖,这个价值就少一分。

下一篇 →P0:打通两地链路