最近自建了一堆服务,在calibre-web碰到了一些问题,在此记录下。
最终版本到docker-compose.yml配置如下,该服务的数据目录books使用了rclone挂载google drive(单本书20mb来算的话,15gb的免费容量,能装700+本,能支撑一阵子了)。
version: "3.7"
services:
calibre-web:
image: technosoft2000/calibre-web
container_name: calibre-web
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- DOCKER_MODS=linuxserver/calibre-web:calibre
volumes:
- ./config:/config
- ./books:/books
- ./app:/calibre-web/app
# ports:
# - 8083:8083
restart: unless-stopped
networks:
- localnet
networks:
localnet:
external: true
Default User/Password: admin/admin123
问题
1, db location is not valid
在我的配置中对应的Library Configuration的值为/books
,报这个错误是因为在该目录下需要sqlite
的数据文件 metadata.db
。
2,DB is not Writeable
从本地拷贝这个文件后此处配置会通过,但是会提示DB is not Writeable
。这是因为calibre-web要求宿主机器映射的books
目录具有写权限。
3,文件上传的的时候封面拷贝报权限问题
原因是封面图片文件从\tmp
目录拷贝到\books
目录,tmp目录的用户和组为calibre:calibre
,而\books
的用户和组为1000:1000
,books使用了宿主机上的calibre用户的uid
和gid
。而当前使用的镜像在容器启动的时候,在容器内另外创建了calibre用户,二者权限并不一致,需要通过PUID
和PGID
进行映射。
最终解决方案
先停掉容器,将原先的app目录、config目录删除,books目录内容清空。
原先有挂载google drive的话,卸载掉fusermount -qzu /root/calibre-web/books
rclone 挂载google drive的时候,加上对应的用户和组
/usr/bin/rclone mount techbook: /root/calibre-web/books \
--umask 0000 \
--uid 1000 \
--gid 1000 \
--default-permissions \
--allow-non-empty \
--allow-other \
--vfs-cache-mode full \
--buffer-size 32M \
--dir-cache-time 12h \
--vfs-read-chunk-size 64M \
--vfs-read-chunk-size-limit 256M &
此时books目录的权限是这样的
~/calibre-web# ls -trl
total 12
drwxrwxrwx 1 calibre calibre 0 May 28 13:39 books
-rw-r--r-- 1 calibre calibre 494 May 28 13:39 docker-compose.yml
drwxr-xr-x 2 root root 4096 May 28 13:45 config
drwxr-xr-x 7 calibre calibre 4096 May 28 14:30 app
doicker-compose的配置中添加PUID和GUID配置,见上面的配置。
重新启动容器服务docker-compose up -d
,books目录下会自动生成metadata.db
此时books目录下的文件结构如下
~/calibre-web/books# ls -trl
total 481
-rw-rw-rw- 1 calibre calibre 12900 May 28 13:45 metadata_db_prefs_backup.json
-rw-rw-rw- 1 calibre calibre 32768 May 28 13:47 gdrive.db
-rw-rw-rw- 1 calibre calibre 348160 May 28 14:51 metadata.db
-rw-rw-rw- 1 calibre calibre 98304 May 28 16:26 app.db
解决好权限问题后,calibre-web服务终于可以正常使用了
Be First to Comment