summaryrefslogtreecommitdiff
path: root/content/calibre.md
blob: e1e9faa073a36cf73d145c0414299791c3ae25db (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
---
title: "Calibre"
date: 2021-08-03
icon: "calibre.png"
short_desc: 'A public or private digital library.'
tags: ['service']
---

The Calibre library server is a great way to store your eBooks. It
allows you to:

-   Share your books with others.
-   Easily transfer your books between devices and access them from
    anywhere.

## Installation

Install the Calibre package. You might also want rsync to upload books.

```sh
apt install -y calibre rsync
mkdir /opt/calibre
```

Either upload your existing library using `rsync`. For example to
`/opt/calibre/`.

```sh
cd ~/Documents
rsync -avuP your-library-dir root@{{<hl>}}example.org{{</hl>}}:/opt/calibre/
```

Or create a library and add a book to it:

```sh
cd /opt/calibre
calibredb add book.epub --with-library your-library
```

For more information about the `calibredb` command see `man calibredb`.

Add a new user to protect your server:

```sh
calibre-server --manage-users
```

## Creating a service

Create a new file `/etc/systemd/system/calibre-server.service` and add
the following:

```systemd
[Unit]
Description=Calibre library server
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/calibre-server --enable-auth --enable-local-write /opt/calibre/your_library --listen-on 127.0.0.1

[Install]
WantedBy=multi-user.target
```

You can change the port with the `--port` prefix. Additional information
`man calibre-server`.

Issue `systemctl daemon-reload` to apply the changes.

Enable and start the service.

```sh
systemctl enable calibre-server
systemctl start calibre-server
```

## A reverse proxy with Nginx

Create a new file `/etc/nginx/sites-available/calibre` and enter the
following:

```nginx
server {
    listen 80;
    client_max_body_size 64M; # to upload large books
    server_name {{<hl>}}calibre.example.org{{</hl>}} ;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}
```

Issue a Let\'s Encrypt certificate. [Detailed instructions and additional information](/basic/certbot).

```sh
certbot --nginx
```

Now just go to **calibre.example.org**. The server will request an
username and a password.

{{< img src="/pix/calibre/calibre-1.png" alt="calibre" >}}


After login you will see something like this.

{{< img src="/pix/calibre/calibre-2.png" alt="calibre" >}}

## Contribution

Author: rflx -- [website](https://rflx.xyz) \-- XMR:
`48T5XpHTXAZ5Nn8YCypA4aWn1ffQLHJkFGDArXQB6cmrP6cqLY72cu7CR2iq2MmL5Ndu3d47e5MKjGpL4prYgdrTCFAHD9c`