安装网页书签收藏夹Shiori

  • 本文完成于 7 月初,最近工作比较忙,只能发发存稿;
  • 到本文发表为止,Shiori 的正式版依然还是 v1.5.3;

什么是 Shiori ?

Shiori 是一款用 Go 语言编写的简单书签管理器,旨在作为 Pocket 的简单克隆。您可以将其用作命令行应用程序或 web 应用程序,支持浏览器扩展,但没有手机客户端。

Shiori 是一款比较 老 的程序,但是一直还在更新中,其兼具了书签和稍后阅读的功能。

之所以想起写 Shiori 是打算帮朋友看个问题,哪知道安装中遇到了一些坑,顺便就记录了一下,防止遗忘,使用的版本为 v1.5.3

建数据库

Shiori 支持带 SQLite3、MySQL、PostgreSQL 数据库,既然是群晖所以就选择系统自带的 MariaDB 10

在 phpMyAdmin 中创建了名为 shiori 的空数据库。

这里假定数据库密码也设为了 shiori

往常应该到这就结束了,容器在启动时应该会自己创建表和导入数据,进行数据的迁移,但是Shiori 并没有。直接安装后,在登录时会显示了下面的错误

老苏尝试过使用 SQLite 也遇到同样的问题

1
failed to fetch accounts: Error 1146: Table 'shiori.account' doesn't exist (500)

从报错看应该是没有创建相应的表,在 phpMyAdmin 看也确实没有表

方法一

手动导入 SQL 脚本,在 https://github.com/go-shiori/shiori/tree/master/internal/database/migrations/mysql 可以找到 MySQL 对应的数据库脚本

你可以下载之后再在 phpMyAdmin 中导入,也可以直接复制

在 phpMyAdmin 中依次执行 SQL

4 个脚本全部完成后会有 4 张表

方法二

查阅后发现官方在 v1.5.3 的 Breaking changes 中做了说明

在容器启动之后,再执行下面的命令,即可完成数据库迁移

1
docker exec -it shiori shiori migrate

相比而言,方法二适用范围更广,是官方提供的方法;方法一就显得比较笨拙了,这是老苏在看到官方说明前使用的方法;

命令行安装

在群晖上以 Docker 方式安装。

但dockerhub 上的镜像已经超过了 2 年

并不是官方没有发布最新的镜像,而是发布到了 ghcr.io,从版本看,目前最新的版本是 v1.5.3

用 SSH 客户端登录到群晖后,依次执行下面的命令

1
2
3
4
5
6
7
8
# 新建文件夹 shiori 
mkdir -p /volume2/docker/shiori

# 进入 shiori 目录
cd /volume2/docker/shiori

# 拉取镜像
docker pull ghcr.io/go-shiori/shiori

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

1
2
3
4
5
6
7
8
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/go-shiori/shiori

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/go-shiori/shiori:latest ghcr.io/go-shiori/shiori:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/go-shiori/shiori

现在可以开始运行了

1
2
3
4
5
6
7
8
9
10
11
# 运行容器
docker run -d \
--restart unless-stopped \
--name shiori \
-p 7388:8080 \
-e SHIORI_DBMS='mysql' \
-e SHIORI_MYSQL_NAME='shiori' \
-e SHIORI_MYSQL_USER='shiori' \
-e SHIORI_MYSQL_PASS='shiori' \
-e SHIORI_MYSQL_ADDRESS='tcp(192.168.0.197:3307)' \
ghcr.io/go-shiori/shiori

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'

services:
shiori:
image: ghcr.io/go-shiori/shiori
container_name: shiori
restart: unless-stopped
ports:
- "7388:8080"
environment:
- SHIORI_DBMS=mysql
- SHIORI_MYSQL_NAME=shiori
- SHIORI_MYSQL_USER=shiori
- SHIORI_MYSQL_PASS=shiori
- SHIORI_MYSQL_ADDRESS=tcp(192.168.0.197:3307)

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 新建文件夹 shiori 和 子目录
mkdir -p /volume2/docker/shiori

# 进入 shiori 目录
cd /volume2/docker/shiori

# 拉取镜像
docker pull ghcr.io/go-shiori/shiori

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/go-shiori/shiori

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/go-shiori/shiori:latest ghcr.io/go-shiori/shiori:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/go-shiori/shiori

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:7388 就能看到登录界面

初始管理员用户名和密码为 shiori 和 gopher

登录成功后

可以创建新的账号

初始账号在数据库中是查不到的,插件登录只能用新建账号

插件

目前支持 Chrome 和 firefox 插件, Chrome 插件可以在 https://github.com/go-shiori/shiori-web-ext 下载,然后在 Chrome 的扩展程序页面打开「开发者模式」把下载的文件拖进去即可。

设置服务器地址、账号、密码就可以开始使用了

只要出现 Active session 就算登录成功了

收藏的时候有时候会报错

没有去深究,可能还有隐藏的问题

实际上已经成功了

Shiori 的使用教程非常多,老苏就不打算再写使用篇了

参考文档

go-shiori/shiori: Simple bookmark manager built with Go
地址:https://github.com/go-shiori/shiori

Package shiori
地址:https://github.com/go-shiori/shiori/pkgs/container/shiori

Docker Proxy 镜像加速
地址:https://dockerproxy.com/

shiori/Usage.md at master · go-shiori/shiori
地址:https://github.com/go-shiori/shiori/blob/master/docs/Usage.md