使用 Calibre Web 搭建私人电子图书馆 @ Wings            分类 软件
发布于 星期五, 一月 14 日, 2022 年
更新于 星期五, 一月 14 日, 2022 年

待在宿舍闲来无事, 突然想到很久以前 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 暂时没人提, 因为稳定版没有这个问题… 还好我暂时可以不用到书架.

epub reader 暗色主题/夜间模式

Calibre Web 中阅读 epub 电子书时的夜间模式解决方案

留下昵称和邮箱, 可在第一时间获悉回复通知哦~

2021 FLAG

  • 找个妹子
  • 进计科
  • XCPC拿块金牌
  • 补全算法知识, 整全板子
  • 学会Web开发相关知识
  • 在服务器上搭建电子书库
  • 写个游戏并上线
  • 能弹一首曲子
  • 写首完整的曲子
  • 练习悠悠球

个人简介

我叫 Wings, 来自江西上饶, 目前人在西安, 是西电的一名学生.

常以 WingsWingsZengWingsWings的ID在各大小网站上游走, 一般来说, Wings不是我 😔, WingsZeng 一定是我 😊.

热爱算法, 喜欢钻研各种计算机技术.

业余爱好广泛, 只要不是文化课基本上都感兴趣😏.

开发/项目经历

  1. Android游戏 小墨滴的复仇 (弃坑)
  2. Android游戏 Circle Run (弃坑)
  3. Windows游戏 Snague (可能弃坑了吧)
  4. Python后端 Fathy' (可能弃坑了吧)

to be continued

教育经历

时间 学历 学校
2008-2014 小学 上饶市第十二小学
2014-2017 初中 上饶市第四中学
2017-2020 高中 上饶市第一中学
2020-2024 本科 西安电子科技大学
to be continued

比赛/竞赛经历

太久远太小的记不到了…

  1. 2017 国学竞赛初赛江西 没有分数或排名 二乙
  2. 2018 NOIP提高 258 省二
  3. 2019 CSP-S江西专场 145 省二
  4. 2019 数学竞赛初赛 70 没排名 (复赛打铁qaq)
  5. 2020 Gitee|Python贪吃蛇魔改大赛 可能是第四? 二等奖
  6. 2020 西电ACM训练基地熊猫杯 第四 银牌
  7. 2020 西安三校微软学生俱乐部Hackathon 和二等奖最后一名差0.5分 三等奖
  8. 2020 西电星火杯 三等奖
  9. 2020 西电ACM新生赛 第九 金牌
  10. 2020 ICPC 亚洲区域赛 济南站 132名 铜牌
  11. 2020-2021 第二届全国大学生算法设计与编程挑战赛(冬季赛) 924名 铜牌 (别骂了别骂了)
  12. 2020 ICPC 亚洲区域赛 昆明站 打星
  13. 2020 ICPC Asia-East Continent Final 签完到溜 打铁
  14. 西电"智能星"第一届自动驾驶小车比赛 第五 优胜奖|极速奖 本来可以冠军的别骂了别骂了
  15. 2021团体程序设计天体赛(CCCC) 个人二等奖
  16. 2021 西电 miniL CTF 优胜奖
  17. 2021 西电ACM校赛 第9名 金牌
  18. 2021 西电数模校赛 二等奖
  19. 2021 第15届IEEE 第48名
  20. 2021 CCPC 桂林站 打星
  21. [2021 ICPC 沈阳 105名 真银尾]
  22. [2021 CCPC 哈尔滨 银牌]
  23. [2021 ICPC 南京 铜牌]

to be continued

爱好

技术

  • 算法
  • 独立游戏开发

游戏

  • Minecraft
  • Black Survival
  • I Wanna
  • Celeste
  • Life is Strange
  • Need for speed

运动

  • 篮球
  • 桌球
  • 乒乓球
  • 羽毛球
  • 慢跑

音乐

  • 吉他
  • 词曲
  • 流行

玩具

  • 魔方
    • 三阶速拧
    • 三阶盲拧
    • 高阶
  • yoyo球

追星

  • VAE
  • Benedict Cumberbatch