1.项目介绍
1.1项目地址
GitHub:https://github.com/janeczku/calibre-web
1.2项目特点
- Bootstrap 3 HTML5界面
- 全图形化管理界面
- 具有细化的每个用户权限的用户管理
- 支持巴西语、捷克语、荷兰语、英语、芬兰语、法语、加利西亚语、德语、希腊语、匈牙利语、意大利语、日语、高棉语、韩国语、波兰语、俄语、简体和繁体中文、西班牙语、瑞典语、土耳其语、乌克兰语、越南语
- 支持用于电子书阅读器应用程序的OPDS feed
- 支持通过标题、作者、标签、系列、书籍格式和语言进行过滤和搜索
- 支持创建一个自定义的图书集(书架)
- 支持编辑电子书元数据和从Calibre图书馆删除电子书
- 支持从各种来源下载电子书元数据,来源可以通过外部插件扩展
- 支持通过Calibre二进制文件转换电子书
- 支持限制电子书下载给已登录的用户
- 支持公共用户注册
- 支持通过点击按钮将电子书发送到电子阅读器上
- 支持通过Calibre-Web与您的Calibre图书馆同步您的Kobo设备
- 支持在浏览器中直接阅读电子书(.txt, .epub, .pdf, .cbr, .cbt, .cbz, .djvu)
- 支持上传多种格式的新书,包括音频格式(.mp3、.m4a、.m4b)。
- 支持Calibre自定义列
- 能够根据类别和每个用户的自定义栏目内容来隐藏内容
- 自动更新
- “魔力链接 “登录,使之易于登录电子阅读器
- 通过LDAP、google/github oauth和通过代理认证登录
2.环境准备
这里我们采用ubuntu 22.04
【docker】在服务器上安装docker
【docker】反向代理神器——Nginx Proxy Manager
3.正式部署
代码语言:javascript复制sudo -i
mkdir -p /root/data/docker_data/calibre-web
cd /root/data/docker_data/calibre-web
代码语言:javascript复制vim docker-compose.yml
代码语言:javascript复制---
version: "2.1"
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
container_name: calibre-web
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- DOCKER_MODS=linuxserver/mods:universal-calibre #optional
- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
volumes:
- ./data:/config
- ./library:/books
ports:
- 8083:8083
restart: unless-stopped
注意,这边是以root身份来运行的,所以这边的PUID=0,PGID=0。
如果不知道id,我们可以在命令行里输入id
,查看当前的id情况,如果你也是root运行的,那么不需要改。如果你是别的用户运行的,请把0改成对应id输出的数字,不然后续会出现无法连接数据库的情况。
没什么问题的话,复制完上面的内容后,
按一下esc
,然后:wq
保存退出,之后,
cd /root/data/docker_data/calibre-web # 来到dockercompose文件所在的文件夹下
docker-compose up -d
代码语言:javascript复制docker exec -it calibre-web sh #进入容器内部
cd /app/calibre/bin #进入bin文件夹
calibredb restore_database --really-do-it --with-library /books #创建一个数据库
chmod a w /books/metadata.db #添加写的权限
exit # 退出容器
默认用户名:admin
默认密码:admin123
4.反向代理
4.1Nginx Proxy Manager
Nginx Proxy Manager的使用
4.2宝塔反代
代码语言:javascript复制 location / {
proxy_pass http://127.0.0.1:8083/; # 注意改成你实际使用的端口
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
[1]