Поиск по сайту:

Как установить сервер электронных книг Calibre на Ubuntu 20.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Настройка брандмауэра
  3. Загрузите и установите сервер caulibre
  4. Создайте библиотеку и добавьте свою первую книгу
  5. Запустите сервер caulibre
  6. Создание службы для сервера caulibre
  7. Добавить аутентификацию пользователя на сервер caulibre
  8. Автоматически добавлять книги в библиотеку
  9. Установите Nginx
  10. Установить SSL
  11. Настройте Nginx для обслуживания Caliber через прокси-сервер с использованием SSL.
  12. Заключение

Calibre — бесплатный менеджер электронных книг с открытым исходным кодом. Он поставляется как кроссплатформенное настольное приложение вместе с серверным компонентом и может использоваться для управления вашей библиотекой электронных книг.

Настройка caliber в качестве сервера позволяет вам получать доступ к своим книгам из любой точки мира и позволяет вам делиться ими с друзьями и семьей. Вы также можете перенести их на свои мобильные устройства для последующего чтения. Сервер Calibre также позволяет читать электронные книги прямо в Интернете.

В этом руководстве вы узнаете, как установить и использовать сервер электронных книг caulibre на сервере под управлением Ubuntu 20.04.

Предпосылки

  1. An Ubuntu 20.04 based server with a user with sudo privileges.

  2. Keep the server updated.

    $ sudo apt update && sudo apt upgrade
    

Настроить брандмауэр

Ubuntu 20.04 по умолчанию поставляется с несложным брандмауэром (UFW). Если это не так, сначала установите его.

$ sudo apt install ufw

Включить SSH-порт.

$ sudo ufw allow "OpenSSH"

Включите брандмауэр.

$ sudo ufw enable

Включите порты 8080, которые используются сервером Calibre.

$ sudo ufw allow 8080

Проверьте состояние брандмауэра.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8080                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)

Загрузите и установите сервер caulibre.

Ubuntu 20.04 поставляется с калибром, но лучше установить его прямо с их сайта, чтобы получить последнюю версию.

Во-первых, вам нужно установить некоторые зависимости.

$ sudo apt install libfontconfig libgl1-mesa-glx

Загрузите установщик сервера калибровки.

$ wget https://download.calibre-ebook.com/linux-installer.sh

Установите сценарий установки как исполняемый файл.

$ chmod +x ./linux-installer.sh

Запустите установщик.

$ sudo ./linux-installer.sh

Вы получите некоторые предупреждения, потому что установщик ожидает настольную систему, а не безголовый сервер. Игнорировать их безопасно.

Создайте библиотеку и добавьте свою первую книгу

Для нашего урока мы загрузим книгу из Project Gutenberg в качестве примера. Project Gutenberg — это огромный репозиторий бесплатных общедоступных книг.

Выполните следующую команду, чтобы загрузить свою первую книгу. В духе недавнего праздника Хеллоуин скачаем страшилку Генри Джеймса «Поворот винта».

$ wget http://www.gutenberg.org/ebooks/209.kindle.noimages -O turnofthescrew.mobi

Создайте каталог для вашей библиотеки calibre.

$ mkdir calibre-library

Добавьте книгу, которую вы только что загрузили, в свою библиотеку calibre с помощью команды calibredb.

$ calibredb add *.mobi --with-library calibre-library/
Added book ids: 1

Пришло время начать калибр.

Запускаем калибровочный сервер

Выполните следующую команду, чтобы запустить сервер содержимого caulibre.

$ calibre-server calibre-library

cale-server — это команда, используемая для запуска сервера, а calibre-library — это имя каталога, который мы только что создали и который будет использоваться сервером для загрузки интерфейса.

Вы должны увидеть аналогичный вывод.

calibre server listening on 0.0.0.0:8080
OPDS feeds advertised via BonJour at: your_server_ip port: 8080

Запустите URL-адрес http://:8080 в своем браузере, и вы увидите экран калибра по умолчанию.

Нажмите на Calibre-Library, и вы увидите книгу The Turn of the Screw, которую вы только что скачали.

Вы можете остановить сервер, нажав Ctrl+C в командной строке.

Сервер Calibre по умолчанию использует порт 8080. Вы можете изменить его, изменив команду во время запуска.

$ calibre-server calibre-library --port 7530

Затем вы можете проверить, запустив URL-адрес http://:7530 в своем браузере.

Вам также необходимо будет разрешить порт через брандмауэр.

$ sudo ufw allow 7530

Создадим сервис для калибровочного сервера

Вы, вероятно, хотели бы, чтобы caliber работал вечно даже после перезапуска сервера. Для этого вам нужно будет создать службу для caliber, которая будет запускать ее автоматически при загрузке.

Создайте файл /etc/systemd/system/calere-server.service и откройте его для редактирования с помощью редактора Nano.

$ sudo nano /etc/systemd/system/calibre-server.service

Вставьте следующий код.

## startup service
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --enable-local-write

[Install]
WantedBy=multi-user.target

Замените <username> фактическим системным пользователем на вашем сервере Ubuntu.

Сохраните и закройте файл, нажав Ctrl+W и введя Y при появлении запроса.

Включите и запустите службу калибра.

$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server

Вы можете проверить, перезагрузив службу.

$ sudo reboot

Подождите пару минут и откройте в браузере http://:8080, чтобы убедиться, что caliber работает.

Добавить аутентификацию пользователя на сервер калибровки

На данный момент любой, кто знает IP-адрес вашего сервера, может получить доступ к серверу caulibre. Мы можем изменить это, добавив аутентификацию пользователя на сервер.

Во-первых, остановите сервер caulibre.

$ sudo systemctl stop calibre-server

Запустите сценарий управления пользователями калибров. Вы можете указать путь, по которому будет храниться база данных пользователей. Он хранится в виде базы данных SQLite.

$ sudo calibre-server --userdb /home/<username>/.config/calibre/server-users.sqlite --manage-users
1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

What do you want to do? [1-4]: 1
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

Введите 1, чтобы создать нового пользователя и выбрать надежный пароль.

Далее нам нужно отредактировать сервис caulibre, который мы настроили ранее.

Откройте файл службы.

$ sudo nano /etc/systemd/system/calibre-server.service

Добавьте флаг --enable-auth в конец строки, начинающейся с ExecStart, чтобы включить аутентификацию пользователя.

. . .
ExecStart=/opt/calibre/calibre-server "/home/<username>/calibre-library" --userdb "/home/<username>/.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
. . .

Сохраните и закройте файл, нажав Ctrl+W и введя Y при появлении запроса.

Обновите демон службы, чтобы перезагрузить измененный файл службы и снова запустить службу.

sudo systemctl daemon-reload
sudo systemctl start calibre-server

В следующий раз, когда вы запустите сайт, вам будет предложено ввести имя пользователя и пароль перед доступом к библиотеке.

Автоматически добавлять книги в вашу библиотеку

Мы можем настроить папку наблюдения, которую может отслеживать сервер caliber, поэтому всякий раз, когда вы добавляете новую книгу в папку, она будет автоматически добавляться в библиотеку Caliber.

Создайте папку для просмотра и переключитесь на нее.

$ mkdir ~/watchbooks
$ cd ~/watchbooks

Загрузите новую книгу в папку с помощью следующей команды.

$ wget http://www.gutenberg.org/ebooks/514.epub.noimages -o littlewomen.epub

Затем откройте редактор Crontab.

$ crontab -e

Добавьте следующую строку в конце.

*/5 * * * * calibredb add /home/<username>/watchbooks/ -r --with-library http://localhost:8080#calibre-library --username calibreuser --password YourPassword && rm -r /home/<username>/watchbooks/*

Этот скрипт добавит все файлы из каталога /home//watchbooks в библиотеку caulibre и удалит все исходные файлы, так как они больше не нужны.

Задание cron будет запускаться каждые 5 минут. Подождите несколько минут и перезагрузите сайт калибровочного сервера, чтобы только что добавленная книга появилась в библиотеке.

Установите Nginx

На этом этапе мы установим веб-сервер Nginx для обслуживания сервера caulibre через прокси. Таким образом, вы можете получить к нему доступ через доменное имя, например, cale.yourdomain.com. Вам также не нужно беспокоиться об указании номеров портов. А наличие Nginx в качестве прокси позволяет нам обслуживать сайт через SSL.

Выполните следующую команду, чтобы установить Nginx.

$ sudo apt install nginx

Откройте порты 80 и 443 и закройте порт 8080, так как он больше не нужен.

$ sudo ufw allow "Nginx Full"
$ sudo ufw delete allow 8080

Nginx Full — это профиль приложения для брандмауэра ufw, который автоматически открывает порты 80 и 443.

$ sudo ufw status
Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere
Nginx Full  		   ALLOW       Anywhere	
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full		   ALLOW       Anywhere (v6)

Установить SSL

Мы установим SSL с помощью сервиса Let’s Encrypt.

Для этого установите Certbot.

$ sudo apt install certbot

Остановите Nginx, потому что он будет мешать процессу Certbot.

$ sudo systemctl stop nginx

Сгенерируйте сертификат. Нам также необходимо создать сертификат DHParams.

$ export LDOMAIN="calibre.yourdomain.com"
$ export LEMAIL=""
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Нам также нужно настроить задание cron для автоматического обновления SSL. Чтобы открыть редактор crontab, выполните следующую команду

$ sudo crontab -e

Приведенная выше команда открывает редактор Crontab.

Вставьте следующую строку внизу.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

Приведенное выше задание cron будет запускать certbot в 2:25 каждый день. Вы можете изменить его на что угодно.

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Настройте Nginx для обслуживания Caliber через прокси-сервер с использованием SSL

Нам нужно отредактировать файл конфигурации Nginx, чтобы добавить конфигурацию SSL.

Выполните следующую команду, чтобы добавить файл конфигурации для сервера Caliber.

$ sudo nano /etc/nginx/sites-available/calibre.conf

Вставьте следующий код в редактор.

server {
    listen 80;
    listen [::]:80;
    server_name calibre.yourdomain.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name calibre.yourdomain.com;

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

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    ssl_certificate /etc/letsencrypt/live/calibre.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/calibre.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Нажмите Ctrl + X, чтобы закрыть редактор, и нажмите Y, когда будет предложено сохранить файл.

Активируйте этот файл конфигурации, связав его с каталогом sites-enabled.

$ sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/

Протестируйте конфигурацию Nginx.

$ sudo nginx -t

Вы должны увидеть следующий вывод, указывающий, что ваша конфигурация верна.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезагрузите службу Nginx.

$ sudo systemctl reload nginx

Теперь вы можете запустить сайт по URL-адресу https://calibre.yourdomain.com.

Заключение

В этом руководстве вы узнали, как установить и запустить сервер электронных книг Caliber и запустить его через Nginx вместе с аутентификацией пользователя и возможностью автоматического добавления книг. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.