在树莓派上部署 Tachidesk Server & Suwayomi 插件体验

最近想在手机上看本子,但是想看的内容重达 8G ,即使处理成 webp ,压缩到了 600M ,但几千张也不是小数目,实在不太好放在手机上。突然想到自己尘封数个月的三手树莓派,于是拿出来搭建了个 WebDAV ,把本子传上去,这样就能舒服地躺在床上用手机看了。剩下的问题就是阅读器。手机上支持 WebDAV 的文件管理器普遍看图效果差,而 Tachiyomi 虽然看漫画好用却没有 WebDAV 源。现在发现 Tachidesk 通过 Suwayomi 插件可以作为 Tachiyomi 的图源,决定在树莓派上部署。

安装

Suwayomi/Tachidesk-Server: A rewrite of Tachiyomi for the Desktop

首先安装 makedeb

makedeb - A simplicity-focused packaging tool for Debian archives

1
bash -ci "$(wget -qO - 'https://shlink.makedeb.org/install')"

之后 makedeb -si ,这个过程需要下载一些东西,由于树莓派上没配置 clash ,所以用 export http_proxy=http://PC_IP:PORT 把 PC 上的代理加进来。

成功构建后已经自动安装了 deb ,直接输入 tachidesk 即可启动,默认端口 4567 ,可以通过浏览器访问。

本地源

Local Source · Suwayomi/Tachidesk-Server Wiki

本地源只能放在 ~/.local/share/Tachidesk/local/ 下面,当然可以软连接。

漫画的目录结构和 Tachiyomi 本地源一致,都是需要一个漫画目录,下面是一系列章节目录。由于我的本子都只有单个章节目录,一开始直接把整个目录链接过去,那样所有本子变成了单个漫画的章节了,无法看到各个本子的封面,于是就写了个 shell 给每个本子都建立了漫画目录,里面再用软连接建立一个 Chapter1 章节目录链接到实际的本子目录,顺便把第一张图作为封面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TACHIDESK_LOCAL="$HOME/.local/share/Tachidesk/local"

echo "Cleaning ..."

rm -rf $TACHIDESK_LOCAL/*

echo "Copying ..."

for f in *
do
[ ! -d "$f" ] && continue
DIR="$TACHIDESK_LOCAL/$f"
mkdir -p "$DIR"
real=$(realpath "$f")
ln -s "$real" "$DIR/Chapter1"
ln -s "$DIR/Chapter1/001.png" "$DIR/cover.jpg"
done

封面问题

一开始还没有用脚本创建封面,后来创建了,然而网页上无法显示,控制台显示一大堆 thumbnail does not exist

https://github.com/Suwayomi/Tachidesk-Server/blob/a449a01a24db2a3160bddeb6edc051c4f6e2a615/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Manga.kt#L296

https://github.com/Suwayomi/Tachidesk-Server/blob/a449a01a24db2a3160bddeb6edc051c4f6e2a615/server/src/main/kotlin/suwayomi/tachidesk/manga/model/table/MangaTable.kt#L31

封面 thumbnail 目录居然都是从 db 取的,看起来可能如果在没有 thumbnail 的时候建立了 local source 的记录,那后续如果漫画的目录名没有变动就不会更新了。

所以 rm ~/.local/share/Tachidesk/database.mv.db 再重启,总算加载出了封面。

Suwayomi

体验了一下 Suwayomi (源码位置),发现不仅配置 url 要重启 app ,在远程书架上没东西的时候添加了东西再刷新也要。只能说继承了 Tachiyomi extensions 的优良传统。不过起码看漫画的效果是舒服了。

Suwayomi 只会读取书架上的内容,然而我们的本子都放在 local source …… 前端也没有任何批量选择加入书架的能力,只能一个个点开漫画加入书架。在 Tachiyomi 上看就更麻烦了,如果之前没添加到书架,只能用浏览器访问去加。目前暂时不想解决一键添加到书架的问题,毕竟也不是每一本都需要用到,要用的时候再加就好了。

总结

虽然问题不少但还是凑合用。

2023.12.30 更新

配置 systemd 服务

考虑到所处环境容易断电,因此 tachidesk 需要开机自启。本想用 init.d 启动一个 tmux ,后来发现 tachidesk 自带了 systemd 服务,不过也是需要经过一番配置才能正常使用。

由于原先的数据放在家目录,首先把默认的 tachidesk 用户改成自己的用户 pi 。

1
2
3
4
sudo vim /lib/systemd/system/tachidesk-server.service
# 修改
User=pi
Group=pi

这样还是没有读取用户目录下的数据,注意到启动命令行指定了工作目录。

1
2
EnvironmentFile=/etc/tachidesk/server.conf
ExecStart=/usr/bin/java $JAVA_ARGS -Dsuwayomi.tachidesk.config.server.rootDir="${TACHIDESK_ROOT_DIR}" -jar /usr/share/java/tachidesk-server/Tachidesk-Server.jar

/etc/tachidesk/server.conf 中,默认位置是 /var/lib/tachidesk ,我们改成自己的目录。

1
2
3
sudo vim /etc/tachidesk/server.conf
#TACHIDESK_ROOT_DIR="/var/lib/tachidesk"
TACHIDESK_ROOT_DIR="/home/pi/.local/share/Tachidesk"

这样启动服务仍然会报错,提示无法创建 /home/pi ,原来是 systemd 的家目录保护。

Systemd ProtectHome & Allowing access to specific home directory - Unix & Linux Stack Exchange

解决方法是关掉保护,也就是把 /lib/systemd/system/tachidesk-server.service 的 ProtectHome 置空 (ProtectHome=,默认是 full)

这样就能使用原先的数据目录了,修改目录的目的是方便 ssh 上传本子。