在小内存云服务器上部署个人导航页:Perch 栖页的 Docker 实践

举报
yd_235936725 发表于 2026/10/28 17:33:02 2026/10/28
【摘要】 自托管的服务越攒越多:密码库、监控、书签、推送……每个都有自己的地址,靠浏览器书签根本管不过来。我最后给自己写了一个轻量导航页 Perch(栖页),把常用服务、订阅源、天气和项目入口收在一页里,开源在 GitHub(hgjinfan/perch),线上就是我的个人主页在跑。为什么适合小机器Perch 是一个 Node 应用,没有前端构建步骤,配置全部收敛在一个 config.json 里:服...

自托管的服务越攒越多:密码库、监控、书签、推送……每个都有自己的地址,靠浏览器书签根本管不过来。我最后给自己写了一个轻量导航页 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 仓库交流。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。