开源的书签服务Cherry
预告
老苏在 7 月份收到了付费合集功能灰度测试的通知,一直想研究下怎么玩的,所以国庆期间准备了三篇👇
- 简单的豆瓣API接口(安装篇)
- 简单的豆瓣API接口(TaleBook篇)
- 简单的豆瓣API接口(Jellyfin篇)
预计在周四、周六、周日晚,分三次发布,一、三、五的正常发文不受影响
按照公众号的规则,每篇文章最小售价为 1 个微信豆,所以合集的售价为 3 个微信豆
老苏发现微信豆这玩意儿还有汇率差,iOS 1元=7微信豆,安卓 1元=10微信豆 😂,是因为苹果收了税吗?
为公平起见,这三篇文档不会在微信公众号之外的地方再进行发布。
什么是 Cherry ?
Cherry是一个开源的自托管书签服务。采用SvelteKit构建,并使用SQLite进行数据存储。支持全文搜索,由SQLite fts5提供支持。您可以从Chrome、Firefox、Safari导出书签和CSV文件导入书签。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 haishanh ,目前还搜不到

但实际上是存在的
估计是
docker服务器同步的问题,老苏发现新发布的镜像经常会遇到这种情况

映像 –> 新增 –> 从 URL 添加,地址输入:haishanh/cherry

版本选 latest

卷
在 docker 文件夹中,创建一个新文件夹 cherry,并在其中建一个子文件夹 data
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/cherry/data |
/data |
存放 SQLite 数据库 |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
5150 |
8000 |

环境
| 可变 | 值 |
|---|---|
JWT_SECRET |
加密因子 |
ENABLE_PUBLIC_REGISTRATION |
是否启用注册,默认为 0 |
USE_INSECURE_COOKIE |
设置 1 为暂时禁用 Secure cookie |
JWT_SECRET(必需的):此字符串将用于签署用户的PAT(个人访问令牌)。PAT采用JWT(JSON Web Token)格式,用于验证和识别Cherry用户。您应该将JWT_SECRET保密,以防止他人伪造令牌。- 老苏一般用
Bitwarden的密码生成器来生成; - 也可以用
openssl rand -hex 位数来生成;
- 老苏一般用

ENABLE_PUBLIC_REGISTRATION:此值确定是否从外部(您的Cherry Docker容器实例)启用注册。将其设置1为启用注册。默认情况下,或使用其他值,注册被禁用。您很可能希望在全新部署后启用注册,并在创建用户后立即禁用它。- 老苏不建议启用,如果要建用户,可以用
API接口直接创建;
- 老苏不建议启用,如果要建用户,可以用
USE_INSECURE_COOKIE:默认情况下,Cherry使用仅适用于HTTPS的Secure cookie。但是,如果您想尝试在本地主机上运行Cherry,您可以将此环境变量设置1为暂时禁用Secure cookie,否则您可能无法登录。- 按官方的说法,在局域网用
IP访问需要将其设为1,但是实际上在Chrome和Safari浏览器上测试都没成功,原因不明,只能反代后用https协议访问才能登陆,所以这项可以不要设置
- 按官方的说法,在局域网用

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 cherry 和 子目录 |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 cherry 和 子目录 |
准备工作
接下来我们要添加用户,并准备 https 的运行环境
用户操作
1 | # 创建用户 |
老苏给自己建了一个账号
1 | # 邮件:wbsu2003@hotmail.com |

如果你是在『终端机』里操作,只要输入
1 | # 邮件:wbsu2003@gmail.com |

反向代理
老苏在环境变量里设置了 USE_INSECURE_COOKIE 为 1,但是在使用 http://群晖IP:5150 访问时,浏览器调试工具中会看到返回下面信息,表现症状为一直卡在登录界面
1 | window.__sveltekit_data = {type:"redirect",location:"\u002Fsignin"} |
所以只能通过反代实现 https 协议访问

没问题的话,SSL 就全勾了

运行
在浏览器中输入 https://cherry.laosu.ml:444 就能看到主界面

如果没有在环境变量中启用外部注册,即便
https://cherry.laosu.ml:444/signup看到注册页面,也是不能注册的

登录成功

Setting –> Import 可以导入浏览器导出的书签

将 Chrome 中导出的书签文件 bookmarks_2022_10_9.html 拖进来,点下面的 Import 按钮开始导入

等导入完成即可

浏览器插件
支持 Chrome

和 Firefox

以 Chrome 为例,首先需要 Add Server

填入服务器地址,有端口也要带上

回到 Cherry 主界面,右上角 Settings –> Account –> Personal Access Token,直接点后面的复制按钮

在你需要添加书签的页面上点 Cherry 插件按钮

点 Edit 可以添加 Tags 和 选择 Group

参考文档
haishanh/cherry: Cherry is a self-hostable bookmark service
地址:https://github.com/haishanh/cherryCherry
地址:https://cherry.haishan.me/Intro | Cherry
地址:https://cherry.haishan.me/docs/intro