KitchenOwl 买菜清单:NAS 上 Docker 部署,全家共用一份清单,谁买了谁勾掉
作者
小编
发布时间

项目介绍
KitchenOwl 是一个开源的买菜清单和菜谱管理工具,主打一家人共用一份清单:谁想起家里缺什么就往里加一条,谁在超市买到了就点一下勾掉,其他人打开看到的都是最新的状态,不用再在群里反复问「酱油还有没有」。
清单上的条目是一块一块的方格,按名字排好。买到的东西点一下,它就从清单上挪到下面的「最近的条目」里,清单上只留还没买的。加东西也简单:顶上搜索框输入名字,下面出建议卡,点一下就进清单。
除了购物清单,它还能记菜谱、排一周膳食计划、记家庭开销,新建家庭的时候可以按需开关,只用清单就把后几个关掉。网页版直接打开就能用,手机浏览器打开是同一份清单,界面会自己切成竖屏布局。
项目地址:点我跳转
部署安装
只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:先用 帕斯内网穿透 拿到一个公网地址,再用 Docker Compose 把 KitchenOwl 装起来。先穿透、后部署,装完在超市里用手机打开同一个地址,边买边勾,家里人也看得到。
一、先用帕斯内网穿透拿到公网地址
飞牛的「应用中心」里搜 PassNAT,装上这个穿透插件,打开它,点「创建隧道」。隧道名字随便起(不超过 12 个字符),接入节点和传输协议留默认,本地 IP 留默认的 127.0.0.1,本地端口填 8080(就是下面编排里冒号左边那个端口)。
建好之后点开这条隧道,按一下电源,状态变成运行中,详情里就能看到分配好的公网地址(形如 IP:端口),先记下来。
不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。
二、新建 Compose 项目
打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 kitchenowl,路径在「我的文件」下面挑一个空文件夹,没有就当场新建一个。来源选「创建 docker-compose.yml」,把下面这段整个贴进去:
1services:2 kitchenowl:3 image: tombursch/kitchenowl:latest4 container_name: kitchenowl5 restart: unless-stopped6 ports:7 - "8080:8080"8 environment:9 JWT_SECRET_KEY: "change-me-to-a-long-random-string"10 volumes:11 - kitchenowl_data:/data1213volumes:14 kitchenowl_data:
整段编排里只有一处要改:
JWT_SECRET_KEY:换成你自己的随机字符串,越长越好,字母数字混着来。它用来给登录凭证签名,装好之后别再改,改了所有人都得重新登录。注意别填中文,它要按字节编码,中文会直接让容器起不来。
端口 8080 被占用的话,把冒号左边的数字换一个,隧道里的本地端口也跟着改。勾上「创建项目后立即启动」,镜像下完就起来了,第一次启动它会自己建库,等半分钟左右再打开。
数据都放在 kitchenowl_data 这个具名卷里(默认用 SQLite),备份这一个卷就够了。
三、第一次打开:建账号、建家庭
用公网地址打开,第一次会进到「让我们创建一个用户」,填用户名、名称、密码,点开始。第一个注册的账号就是管理员。
接着是「家庭」页,点右下角那个加号新建家庭,起个名字(比如「我们家」)。下面列着这个家庭开哪些功能:购物清单、菜谱、膳食计划、余额,只用清单就把后面几个关掉,侧栏就只剩清单一项。
家里其他人要用,就各自注册一个账号,再由管理员把账号加进这个家庭,大家看到的是同一份清单。
四、把清单用起来
加东西。 顶上搜索框输入要买的东西,下面会出一张建议卡,点一下就加进清单。一条一条加完,清单上就是一块一块的绿色方格,按名字排好。
勾掉。 在超市买到一样,点一下那个方格,它就从清单上挪到下面的「最近的条目」里,清单上只留还没买的。家里其他人打开页面,看到的也是勾掉之后的样子——谁买了谁勾掉,不用再打电话确认。
从清单变成日常。 这套东西真正省事的地方不是在电脑前整理得好看,而是站在货架前打开手机就知道家里还有没有、够不够,不用凭印象再买一份回去。
五、出门在外也能看
手机浏览器打开同一个公网地址,登录后就是手机版的清单:顶上搜索框,下面三列方格,底部一排图标切换清单、菜谱这些页面。在家用电脑加好清单,出门直接用手机勾,两边是同一份数据。
公网地址别到处发;用完了可以在插件里把隧道关掉,需要的时候再开。
几点说明
数据在哪。 数据库在 kitchenowl_data 卷里,备份这一个卷就行。想搬到别的机器,把卷导出来带走。
升级。 镜像标签用的是 latest,升级前先把卷备份一份,再到 Docker 里重新拉取镜像、重启项目。
明文 HTTP 访问。 内网穿透给的是 http 地址,自己家用的清单,地址别到处发。
其他入口。 侧栏里还有菜谱、膳食计划、余额几个入口,这篇只写了购物清单这条主线,其他功能等清单用熟了再自己摸。