此文章是在我安装成功后整理的,可能部分配置文件中的域名和端口稍有出入,影响不大,只需要在操作过程中都改用你自己的域名和端口就行

即:将abc.com改为你的域名,端口9886改为你想用的端口即可

安装

为了数据安全,首先登录root账户给Calibre创建一个低权限的账户并切换到calibre账户

1
2
3
useradd -m -s /bin/bash -p 密码 calibre
su calibre
cd ~

https://github.com/kovidgoyal/calibre/releases 下载软件

一般选64bit Linux binary

有两种下载方法

第一种(推荐):直接点击链接下载到本地,解压(我用的是360压缩),然后通过sftp上传到服务器

第二种:在链接上右键,复制链接地址,然后在服务器上用wget下载解压,这个txz格式真的是太少见了,需要额外安装xz-utils,解压不方便,推荐方法一

先按Ctrl + D退出calibre用户,使用root安装xz-utils:apt install xz-utils

安装成功后再进入calibre用户:

1
2
3
4
su calibre
wget https://github.com/kovidgoyal/calibre/releases/download/v4.12.0/calibre-4.12.0-x86_64.txz
mkdir calibre-4.12.0
tar xvf calibre-4.12.0-x86_64.txz -C calibre-4.12.0

到这里就算解压完成,进入calibre-4.12.0就可以了:

1
cd calibre-4.12.0

正常到这里使用命令./calibre-server --help就可以看到帮助信息了,但是我用的OMV系统(openmediavault)报错了:

1
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

这时候得再返回root用户,安装依赖

1
2
Ctrl + D
apt install libgl1-mesa-glx

再进入calibre用户su calibre

这个时候再运行./calibre-server --help,成功显示帮助信息

但是还不能直接运行服务器,因为默认运行网页是英文

参考我之前的《Linux搭建Calibre内容服务器修改中文语言》

把语言改为中文就可以了

导入Windows中现有书库

我准备把书库放到/home/calibre/Lib下,所以新建一个文件夹

1
mkdir /home/calibre/Lib

通过ftp把windows下的calibre库上传到Lib里

这里必须上传一个库现有库,不然无法运行服务器。暂时没找到用命令创建书库的方法。

上传时尽量用calibre用户上传,如果是用root账号上传的,需要修改书库的权限

以root身份进入/home/calibre/Lib

1
ls -all

查看权限:

image-20200317193849432

可以看到所属用户和所属组都是root

修改所属用户和所属组:

1
2
chown -R calibre *
chgrp -R calibre *

再次查看权限:

image-20200317194246226

ok

运行测试:

1
2
cd /home/calibre/calibre-4.12.0/
./calibre-server --port 9886 /home/calibre/Lib

浏览器访问http://服务器IP:9886

访问成功,Ctrl + C停止服务器,继续设置开机后台运行

创建服务

新建文件:

1
vim /etc/systemd/system/calibre-server.service

将以下内容粘贴进去

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/home/calibre/calibre-4.12.0/calibre-server --port=9886 "/home/calibre/Lib"

[Install]
WantedBy=multi-user.target

运行测试:

1
service calibre-server start

再次访问成功

添加用户名密码认证:

1
2
3
4
service calibre-server stop         #停止服务器
su calibre #切换到calibre用户
cd /home/calibre/calibre-4.12.0/ #进入服务器目录
./calibre-server --manage-users #启动用户管理程序

根据提示操作

image-20200317200115883

返回root用户,再次编辑calibre-server.service

1
vim /etc/systemd/system/calibre-server.service

ExecStart中加入 --enable-auth

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=calibre
Group=calibre
ExecStart=/home/calibre/calibre-4.12.0/calibre-server --enable-auth --port=9886 "/home/calibre/Lib"

[Install]
WantedBy=multi-user.target

再次启动服务

1
service calibre-server start

网页刷新,要求用户名密码,成功

image-20200317200644115

通过nginx反向代理:

1
vim /etc/nginx/sites-available/calibre

粘贴以下内容

1
2
3
4
5
6
7
8
9
server {
listen 80;
listen [::]:80;
server_name calibre.abc.com;

location / {
proxy_pass http://127.0.0.1:9880;
}
}

修改server_name为你的域名

重启nginx

1
service nginx restart

访问http://calibre.abc.com成功

既然代理成功,calibre服务器的9880端口就不要监听外网了

/etc/systemd/system/calibre-server.service中的ExecStart改为如下内容

1
ExecStart=/home/calibre/calibre-4.12.0/calibre-server --enable-auth  --listen-on=127.0.0.1  --port=9886  "/home/calibre/Lib"

现在就只能通过nginx反向代理登陆了。

在nginx中添加SSL证书以开启https协议

1
vim /etc/nginx/sites-available/calibre

修改以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#server {
# #listen 9880;
# listen [::]:9880 ipv6only=off;
# server_name calibre.abc.com;
#
# location / {
# proxy_pass http://127.0.0.1:9886;
# }
#
#} 注释之前的内容

server {
listen [::]:80 ssl ipv6only=off;
server_name abc.com;

ssl on;
#这里要记得改成你的ssl证书所在位置
ssl_certificate /etc/nginx/cert/xxxxxxx_abc.com.pem;
ssl_certificate_key /etc/nginx/cert/xxxxxxx_abc.com.key;

ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

#配置反向代理
location /books {
proxy_pass http://127.0.0.1:9886;
}
}

重启nginx后,通过访问https://books.abc.com即可成功访问Calibre服务器。

评论