PassNAT LogoPassNAT

Baby Buddy 自建育儿记录:飞牛 NAS Docker 部署 + 内网穿透,两个人记同一本

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Baby Buddy 是一个自己部署的育儿记录本:喂奶、睡觉、换尿布、趴卧、身高体重,点一下就记一条。首页的仪表盘用大字告诉你「上次喂奶是多久以前」,还有时间线和图表,记的条数多了能看出宝宝自己的作息规律。

它真正解决的问题不是「记」,是两个人记的是同一本。一个人在家、一个人在外面,谁记的另一个人马上看得到 —— 这也是为什么装完之后值得花五分钟把它开放到公网。

它够轻:一个容器就跑起来,用的是文件型数据库,不用另外起一个数据库容器。手机上打开也是自适应的,单手就能记。

项目地址:点我跳转

部署安装

下面在飞牛 NAS 上用 Docker Compose 装 Baby Buddy,装完再用 帕斯内网穿透 把它开放到公网。

一、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 babybuddy,路径在「我的文件」下面挑一个空文件夹,没有就当场新建一个。来源选「创建 docker-compose.yml」,把下面这段整个贴进去。

1services:
2 babybuddy:
3 image: linuxserver/babybuddy:latest
4 container_name: babybuddy
5 restart: unless-stopped
6 ports:
7 - "3412:8000"
8 environment:
9 TZ: Asia/Shanghai
10 volumes:
11 - ./config:/config

这份编排要认三处:

冒号左边的 3412 是 NAS 上对外的端口,一会儿浏览器访问、建隧道填的都是它;冒号右边的 8000 是容器里自己监听的端口,别改。

TZ 这一行别漏。它决定服务端的默认时区,不填的话所有时间按格林尼治算,跟你这边差八个小时。⚠ 下面还有一处每个用户各自的时区设置,两处都要对,第三步会讲。

./config 是数据目录,只有这一个挂载点 —— 数据库、你传的照片、还有容器第一次启动时自动生成的密钥,全在里面。备份就是把这个文件夹拷走;反过来说,不挂它的话容器一删,记的每一条都没了。

关于镜像,这里要多说一句。 这个项目没有自己的官方镜像,上游文档里明确写着它依赖 LinuxServer.io 社区维护的那个多架构容器,并直接给出了用它的编排模板 —— 所以编排里这个 linuxserver/babybuddy 就是上游背书的那一个。⚠ Docker Hub 上还有一个同名的 babybuddy/babybuddy,但它最后一次推送停在 2021 年、对应的还是 1.x 版本,别拿它。

勾上「创建项目后立即启动」,点确认。镜像一百二十多兆,第一次启动还要跑一遍数据库迁移,等个几十秒端口才通,别急着刷新。

二、先建隧道,但先别通电

飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」。隧道名字随便起,接入节点和传输协议留默认,本地 IP 留它默认的 127.0.0.1,本地端口填编排里那个 3412。

🔴 建好之后先别按电源。 原因在下一步。

三、先改出厂口令,再通电

Baby Buddy 的出厂账号密码是 admin / admin —— 这行字就公开写在它的镜像说明和官方演示站上,任何人都查得到。所以在把它放到公网上之前,第一件事是改掉它。

先用局域网地址打开,用 admin / admin 登进去,打开「Change Password」那一页(地址是 /user/password/),填一遍旧密码、两遍新密码,提交。看到 Password updated 就成了。

顺手把时区也改了:在「User Settings」里,Timezone 选 Asia/Shanghai。⚠ 这一项是每个用户各自的,编排里的 TZ 管不到它 —— 实测新装出来的管理员就是 UTC,同一条喂养记录,改之前显示的是早上 5:48,改完才显示成 13:48。不改的话你记的每一条都差八小时。

同一页上还有 Language,能选简体中文。⚠ 照实说:目前只翻译了一部分 —— 选完之后顶部导航和卡片标题仍然是英文,变过来的只有零星几处。介意的话可以先不动它。

改完再回插件里按一下电源,隧道状态转成运行中,这时候公网地址才开始对外。

四、建孩子,记第一条

用公网地址打开,登进去,先在 Children 里把孩子建上:名字、生日填一下。然后去 Feedings 记一次喂奶 —— 选类型(母乳 / 配方奶 / 强化母乳 / 辅食)、选方式(奶瓶 / 左 / 右 / 双侧 / 家长喂 / 自己吃)、填个量,提交。

回首页,仪表盘上那张 Last Feeding 卡片就写着「多久以前」和具体时间。这就是平时最想一眼看到的东西。

五、让另一位家长也能记

这一步才是这套东西真正的价值。在 Users 里点 Create User,给另一位家长建个账号,勾上 Caregiver(说明里写的是「允许添加和编辑记录」),设个密码就行。

这样两个人在各自的手机上、各自的位置,记的是同一个孩子的同一本账。还有一个 Read only 选项,适合给想看看但不需要记的家里人。

几点说明

数据就是一个文件夹。 数据库和照片都在 ./config 里,想备份就拷走,想换台机器就把目录挪过去,没有导入导出这一说。

不需要任何外部账号或密钥。 容器第一次启动会自己生成签名用的密钥并存进数据目录,编排里不用填,也不会出现在任何地方。

手机上用着不别扭。 界面是自适应的,在窄屏上记一条的操作路径很短,这对「随手就记」这件事挺关键。