在小内存云服务器上部署个人导航页:Perch 栖页的 Docker 实践
自托管的服务越攒越多:密码库、监控、书签、推送……每个都有自己的地址,靠浏览器书签根本管不过来。我最后给自己写了一个轻量导航页 Perch(栖页),把常用服务、订阅源、天气和项目入口收在一页里,开源在 GitHub(hgjinfan/perch),线上就是我的个人主页在跑。
为什么适合小机器
Perch 是一个 Node 应用,没有前端构建步骤,配置全部收敛在一个 config.json 里:服务磁贴、信息流、天气、书签、项目列表都改配置就行。它对资源的胃口很小——实测容器常驻内存只有几十 MB,1 核 1G 的入门云服务器就能跑得很稳。
部署:三步
第一步,拉代码并写配置。把仓库克隆到 /opt/perch,按自己的服务清单改 config.json,比如把 Vaultwarden、Uptime Kuma、哪吒监控的地址填进 services,把常看的 RSS 填进 feeds。
第二步,Docker Compose 拉起。项目自带 compose 文件,而且官方镜像发布在 GHCR,服务器上不需要本机构建:先 docker compose pull,再 docker compose up -d,两步分开执行,不要合成一步 detached 跑完——这是我踩过的坑:小机器上拉镜像慢,构建和启动混在一起出问题很难定位。应用本身只监听本机 127.0.0.1:3210。
第三步,nginx 反代加 HTTPS。把域名根路径反代到 3210 端口,再用 certbot 签一张 Let’s Encrypt 证书,就能通过域名访问了。
几个实践心得
一是升级走预构建镜像:发版时在.env 里固定版本号,pull 完再 up -d,可复现、好回滚。二是配置和程序分开:config.json 以只读方式挂载进容器,升级镜像不会动配置;我还给配置做了一份每日异地备份,机器出问题也能快速恢复。三是缓存分层:首页和管理接口不缓存,状态类片段给十几秒的短缓存,信息流给一分钟,既保证打开快,又不会看到太旧的数据。
小结
小服务器玩自托管,选型比堆配置重要:无构建、单容器、配置即数据的项目最省心。Perch 上线之后,我所有自托管服务都有了一个统一入口,这也是我现在维护它、持续发版的动力。欢迎到 GitHub 仓库交流。
- 点赞
- 收藏
- 关注作者
评论(0)