PassNAT LogoPassNAT

Wishlist 全家礼物想单存进 NAS,互相看不见、不撞车,发链接让亲戚认领

作者

小编

发布时间

项目介绍

Wishlist 是一个开源的全家礼物想单工具:每个人建自己的清单,互相看不见对方买啥,避免撞车。每个清单可以生成一个公开链接发给家人,对方点开看中点认领(输入名字即可),认领人也看不到别人认领了谁。它由 cmintey 单人维护,仓库公开(cmintey/wishlist),官方提供 Docker 镜像,单容器跑、SQLite 存数据、不需要任何外部服务账号。

项目地址:点我跳转

部署安装

下面用飞牛 Docker Compose 部署 Wishlist,再用 帕斯内网穿透 在外面的手机上也能看家里的礼物想单。

一、在飞牛 Docker 新建 Compose 项目

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

1services:
2 wishlist:
3 image: ghcr.io/cmintey/wishlist:latest
4 container_name: wishlist
5 restart: unless-stopped
6 network_mode: bridge
7 environment:
8 - ORIGIN=http://naswish.odn.cc
9 - PUBLIC_SIGNUP=false
10 ports:
11 - "3280:3000"
12 volumes:
13 - ./data:/usr/src/app/data

几个认的地方:3280 是 NAS 对外暴露的端口,映射到容器内的 3000;ORIGIN 这一行要填公网地址,等会建好隧道回头再补,填错 JWT / 重置链接会指向错的 origin;PUBLIC_SIGNUP=false 必须设——Wishlist 默认是公开注册 + first-user-is-admin,公网开着等于自杀;./data 是 SQLite 数据目录。

二、创建隧道,公网地址拿回来填 ORIGIN

飞牛的「应用中心」里搜 PassNAT,装上穿透插件,打开它,点「创建隧道」。隧道名字起 wishlist(12 个字符以内),接入节点和协议留默认,本地 IP 保持 127.0.0.1,本地端口填 3280,「协议」选 HTTP,「子域名」起一个 odn.cc 还没用过的(比如 naswish),「顶级域名」选 odn.cc,提交。建好后按一下电源键,绿点亮了就是通了——这时把详情里的公网地址复制下来,回头填进上面编排 ORIGIN 那一行,重启容器。

三、第一次访问建管理员

用公网地址打开它,第一次会自动进入首启向导:用户名 / 邮箱 / 密码,提交。因为编排里把 PUBLIC_SIGNUP=false 设了,这个首启向导是唯一能创建管理员的入口,建完之后别人就进不来了。建好之后首页应该是空的——现在轮到我们建清单了。

四、建清单 + 加物品

登录后右上角点 New List 起一个清单,比如「家人生日」。进清单点 Add 加几样东西,每样东西能填名称 + 链接 + 价格范围 + 图片。加好后右上角点「Copy link」拿到一个公开链接,发给家人。家人打开链接看中点「Claim」输入一个名字就算认领了,认领人不会被其他人看到。

几个模式可以挑

Wishlist 不止一种用法:

• 单清单模式(Registry Mode):建一个清单就完事,公开链接直接给所有家人。适合「今年生日礼物」这种一次性场景。

• 多 Group 模式:建家庭组 / 朋友组,每个组独立的清单,互相之间看不到。最常用,演示走这个。

• 惊喜模式(Surprise Me):建议人对物品不可见——你给别人提建议,但建议人不知道你提了什么。适合「送礼人不想被发现」的场景。

安全与备份

Wishlist 单容器,SQLite 存 ./data 文件夹。备份就是把这个文件夹整个复制到另一块盘——包括数据库和上传的图片。

公网部署一定记得 PUBLIC_SIGNUP=false + ORIGIN 填公网地址。两个都设了之后,外部只能通过首启创建的管理员账号登录。