使用 Calibre Web 搭建私人电子图书馆
待在宿舍闲来无事, 突然想到很久以前 TODO 里有一项是搭建一个电子书库, 并且当时还预留了域名. 那搞呗!
Calibre 是个非常著名的电子书管理软件, 可惜他真的太丑太丑了… Calibre Web 是一个开源项目, 利用了 Calibre 的数据库, 把电子书库搬到 web 上实现了.
安装
非常简单, clone 下来装好依赖, 安装, 运行就可以了.
默认文件路径在 /usr/local/python3/bin/cps
, 不知道为什么我的服务器上这个目录不是可执行目录. 不过无所谓.
启动后是个 py 程序, 默认在 8083 端口开放 (赞! 不抢我 80 和 443).
注册服务以启动
注册一个服务来管理程序, 可能是一个更优雅的方式.
在 /etc/systemd/system/
目录下创建一个服务文件 calibre-web.service
, 写入以下内容:
[Unit]
Description=Calibre-Web
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/python3/bin/cps
Restart=always
[Install]
WantedBy=multi-user.target
重载服务
$ systemctl daemon-reload
启动服务
$ systemctl start calibre-web.service
设置自启动
$ systemctl enable calibre-web.service
Nginx 代理
添加 Nginx 代理使其能够被访问, 其中可视情况添加 Https 代理. 我的配置如下:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /your/certificate;
ssl_certificate_key /your/key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name your.domain.com;
client_max_body_size 500m;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8083;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
其中需要注意的是设置 client_max_body_size
, 最大上传限制, 默认好像是 20m, 有些电子书可能比较大, 就上传不上去了.
配置 Calibre Web
访问设置好的域名, 默认管理员帐号密码分别是 admin
, admin123
. 进去以后会让你选数据存放位置.
这里需要一个 Calibre 的 metadata.db
, 可以在 Calibre 里创建一个空的文件, 找到 metadata.db
文件, 然后上传到服务器. 网站设置到这个文件所在目录即可.
然后就可以设置一些权限和功能什么的了, 这个看个人习惯.
问题与解决
epub 支持在线阅读, 但是, 会有很多问题. 比如无法加书签, 点击了以后会返回 bad request
(还是啥来着忘记了), 以及图片无法显示. Calibre Web 版本号还是打 0 开头的, 有很多 bug…
解决方法是设置更新渠道为 Nightly, 然后更新到最新的就行了.
然后就会解锁新的bug, 真的就是我修复了一个 bug, 同时引入了更多 bug
现在书架无法添加图书,,, issue 暂时没人提, 因为稳定版没有这个问题… 还好我暂时可以不用到书架.