Как установить сервер электронных книг Calibre на Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Загрузите и установите сервер Caliber.
- Шаг 3. Создайте библиотеку Calibre и добавьте свою первую книгу
- Шаг 4. Запустите сервер Caliber
- Шаг 5. Создайте файл службы systemd
- Шаг 6. Включите аутентификацию пользователя
- Шаг 7. Автоматическое добавление книг в библиотеку
- Шаг 8. Установите Nginx
- Шаг 9. Установите SSL
- Шаг 10. Настройка Nginx
- Заключение
Calibre — бесплатный менеджер электронных книг с открытым исходным кодом. Он работает как кроссплатформенное настольное приложение вместе с серверным компонентом. Настольный компонент может управлять вашей библиотекой электронных книг на одном устройстве. А серверная составляющая позволяет:
- Доступ к своим книгам из любой точки мира.
- Легко переносите свои книги на мобильные устройства.
- Поделитесь книгами с друзьями и семьей.
- Читайте электронные книги прямо в Интернете.
В этом руководстве вы научитесь устанавливать сервер Calibre на компьютер с Ubuntu 22.04.
Предпосылки
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
The Uncomplicated Firewall(UFW) is enabled and running.
-
A Fully Qualified domain name pointed to the server. For our tutorial, we will be using the domain
calibre.example.com
. -
Everything is updated.
$ sudo apt update && sudo apt upgrade
Шаг 1. Настройте брандмауэр
Первым шагом перед установкой любых пакетов является настройка брандмауэра для разрешения подключений HTTP и HTTPS.
Проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть что-то вроде следующего.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Разрешить порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Проверьте статус еще раз для подтверждения.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Шаг 2 - Загрузите и установите сервер Caliber
Ubuntu 22.04 поставляется с Calibre, но лучше установить его напрямую, чтобы получить последнюю версию.
Первым шагом является установка некоторых зависимостей.
$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx
Загрузите установщик сервера Caliber.
$ wget https://download.calibre-ebook.com/linux-installer.sh
Сделайте скрипт установщика исполняемым.
$ chmod +x ./linux-installer.sh
Запустите установщик.
$ sudo ./linux-installer.sh
Вы получите несколько предупреждений, потому что установщик ожидает рабочий стол, а не сервер. Можно безопасно игнорировать предупреждения.
Шаг 3. Создайте библиотеку Calibre и добавьте свою первую книгу.
Следующий шаг — настроить библиотеку Calibre и добавить в нее несколько книг. Для нашего урока мы загрузим книгу Артура Конан Дойля «Приключения Шерлока Холмса» из Project Gutenberg.
$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi
Всегда берите версию книги для Kindle с сайта. Здесь мы переименовываем версию Kindle в filename.mobi
, потому что формат Mobi изначально поддерживается в Kindle, поэтому он так назван на сайте. Он также предлагает лучшие параметры форматирования, чем версия Epub.
Создайте каталог для библиотеки Calibre.
$ mkdir calibre-library
Добавьте книгу, которую вы только что скачали, в библиотеку с помощью команды calibredb
. Мы указали расположение библиотеки в самой команде.
$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/ Added book ids: 1
Вы можете добавить сразу несколько книг следующим образом.
$ calibredb add *.mobi --with-library calibre-library/
Шаг 4 — Запустите сервер Caliber
Теперь, когда у нас есть готовые книги, пришло время запустить сервер Caliber.
$ calibre-server calibre-library
Команда cale-server
принимает в качестве аргумента расположение библиотеки. Вы должны увидеть аналогичный вывод.
calibre server listening on 0.0.0.0:8080 OPDS feeds advertised via BonJour at: your_server_ip port: 8080
Это открывает сервер Calibre через порт 8080. Чтобы просмотреть сервер, вам нужно сначала открыть порт. Выполните следующую команду, чтобы открыть порт 8080.
$ sudo ufw allow 8080
Откройте URL-адрес http://
в своем браузере, и вы увидите следующий экран. Экран будет отображаться как темный или светлый в зависимости от выбора темы вашей операционной системы.
Нажмите на ссылку cauli-library, чтобы просмотреть книгу, которую вы добавили на предыдущем шаге.
Закройте сервер, нажав клавиши Ctrl + C на вашем терминале.
Вы можете использовать другой порт для доступа к серверу Caliber. Для этого используйте следующую команду. Вам нужно будет убедиться, что порт открыт в брандмауэре.
$ calibre-server calibre-library --port 7654
Шаг 5 — Создайте служебный файл systemd
Чтобы процесс сервера Calibre оставался постоянным и выдерживал перезагрузки, вам необходимо создать для него служебный файл systemd.
Создайте файл с именем cale-server.service
в каталоге /etc/sytemd/system/
и откройте его для редактирования.
$ sudo nano /etc/systemd/system/calibre-server.service
Вставьте в него следующий код.
[Unit] Description=Calibre 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
Флаг --enable-local-write
предоставляет серверу доступ на запись для добавления новых книг в библиотеку. Это связано с тем, что вы не можете добавлять книги с помощью команды calibredb
во время работы сервера.
Замените
на имя пользователя вашей системы Linux в приведенном выше коде. Сохраните и закройте файл, нажав Ctrl+W и введя Y при появлении запроса.
Перезагрузите демон службы, чтобы активировать файл службы.
$ sudo systemctl daemon-reload
Включите и запустите службу Calibre.
$ sudo systemctl enable calibre-server $ sudo systemctl start calibre-server
Проверить статус услуги.
$ sudo systemctl status calibre-server ? calibre-server.service - Calibre Server Loaded: loaded (/etc/systemd/system/calibre-server.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-25 07:23:42 UTC; 15s ago Main PID: 1877 (BonJour) Tasks: 13 (limit: 2241) Memory: 53.3M CPU: 762ms CGroup: /system.slice/calibre-server.service ??1877 /opt/calibre/bin/calibre-server /home/<username>/calibre-library --enable-local-write Jul 25 07:23:42 calibre systemd[1]: Started Calibre Server. Jul 25 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-<username>' Jul 25 07:23:42 calibre calibre-server[1877]: calibre server listening on 0.0.0.0:8080 Jul 25 07:23:43 calibre calibre-server[1877]: OPDS feeds advertised via BonJour at: 69.28.84.201 port: 8080
Шаг 6. Включите аутентификацию пользователя.
Вы можете добавить аутентификацию пользователя в Calibre, чтобы защитить свою библиотеку от посторонних. Во-первых, остановите сервер Caliber.
$ sudo systemctl stop calibre-server
Calibre использует базу данных SQLite для хранения учетных данных пользователя. Запустите сценарий управления пользователями Calibers, чтобы добавить пользователя.
$ sudo calibre-server --manage-users
Вам будет предложено четыре варианта, и вам будет предложено выбрать. Нажмите 1, чтобы добавить нового пользователя, и введите имя пользователя и пароль, чтобы завершить добавление нового пользователя.
1) Add a new user 2) Edit an existing user 3) Remove a user 4) Cancel What do you want to do? [1-4]: (Press 1) Enter the username: howtoforge Enter the new password for howtoforge: Re-enter the new password for howtoforge, to verify: User howtoforge added successfully!
Затем вам нужно отредактировать файл службы, чтобы проверить подлинность. Откройте файл для редактирования.
$ 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
Если вы откроете URL-адрес библиотеки, вам будет предложено ввести имя пользователя и пароль, прежде чем разрешить доступ к ней. Введите свои учетные данные и нажмите кнопку «Войти», чтобы получить доступ к библиотеке.
Шаг 7. Автоматическое добавление книг в библиотеку
Calibre позволяет автоматически добавлять книги в библиотеку с помощью задания Cron. Он делает это, регулярно просматривая каталог на наличие новых книг, а затем добавляя их в библиотеку. Это самый быстрый способ добавления книг, когда вы можете просто загрузить их в каталог, и вскоре они появятся в библиотеке без какого-либо ручного вмешательства.
Первым шагом является создание каталога наблюдения.
$ mkdir ~/calibre-watch $ cd ~/calibre-watch
Загрузите книгу Война и мир
Льва Толстого
в этот каталог из Project Gutenberg.
$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi
Если вы заметили, на этот раз мы загружаем версию с изображениями. Это варьируется от книги к книге о Project Gutenberg. У некоторых есть доступные версии изображений, а у некоторых нет. Калибр прекрасно работает с любым форматом.
Откройте редактор Crontab.
$ crontab -e
Если вы впервые используете Crontab, вам будет предложено выбрать редактор.
no crontab for <username> - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny 4. /bin/ed Choose 1-4 [1]:
Введите 1, чтобы выбрать редактор Nano, так как с ним проще всего работать.
Добавьте следующую команду в конец файла.
*/5 * * * * calibredb add /home/<username>/calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/<username>/calibre-watch/*
Этот сценарий добавит все файлы из каталога /home/
в библиотеку caliber и удалит все исходные файлы, так как они больше не нужны. Вышеупомянутое задание будет выполняться каждые 5 минут. Замените
именем пользователя вашей системы Linux и добавьте свои учетные данные Caliber в соответствующих местах.
Сохраните и закройте файл, нажав Ctrl+W и введя Y при появлении запроса. Подождите несколько минут и перезагрузите сайт калибровочного сервера, чтобы только что добавленная книга появилась в библиотеке.
Шаг 8 — Установите Nginx
Ubuntu 22.04 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.
Импортировать ключ подписи Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Обновите системные репозитории.
$ sudo apt update
Установите Нгинкс.
$ sudo apt install nginx
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.0
Шаг 9 — Установите SSL
Прямо сейчас Caliber доступен через HTTP-порт через IP-адрес. Чтобы лучше защитить его, мы включим доступ через выделенный домен с использованием SSL-сертификата.
Нам нужно установить Certbot для создания SSL-сертификата для Caliber. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.
$ sudo snap install core
Установите Сертбот.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на каталог /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выполните следующую команду, чтобы сгенерировать SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d calibre.example.com
Вышеупомянутая команда загрузит сертификат в каталог /etc/letsencrypt/live/calibre.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Откройте файл /etc/letsencrypt/renewal/calibre.example.com.conf
для редактирования.
$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf
Вставьте следующий код внизу.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Мы создали сертификат SSL, используя автономную опцию Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть отключен во время обновления. Команды pre_hook и post_hook запускаются до и после обновления, чтобы автоматически закрыть и перезапустить сервер Nginx, не требуя ручного вмешательства.
Чтобы проверить, нормально ли работает обновление SSL, выполните пробный запуск процесса.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.
Шаг 10 — Настройте Nginx
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте и откройте файл /etc/nginx/conf.d/calere.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/calibre.conf
Вставьте в него следующий код. Замените cale.example.com
своим доменным именем. Мы установили значение переменной client_max_body_size
на 50 МБ. Вы можете изменить его в соответствии с вашими требованиями.
server { listen 443 ssl http2; listen [::]:443 ssl http2; http2_push_preload on; # Enable HTTP/2 Server Push # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; server_name calibre.example.com; client_max_body_size 50M; access_log /var/log/nginx/calibre.access.log; error_log /var/log/nginx/calibre.error.log; ssl_certificate /etc/letsencrypt/live/calibre.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/calibre.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/calibre.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; 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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name calibre.example.com; return 301 https://$host$request_uri; }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте конфигурацию Nginx.
$ sudo nginx -t
Перезапустите сервер Nginx, чтобы включить файлы конфигурации.
$ sudo systemctl restart nginx
Посетите https://calere.example.com
в своем браузере, чтобы получить доступ к Calibre. Вы можете видеть, что книга, добавленная через Cron, также доступна в библиотеке.
Заключение
На этом мы завершаем наше руководство по установке Calibre Server на компьютер с Ubuntu 22.04 с использованием Nginx. Мы также настроили Caliber для включения базовой аутентификации и добавления поддержки автоматического добавления новых книг. Calibre Server поставляется с множеством инструментов командной строки. Чтобы узнать о них больше, вы можете посетить документацию Calibre. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.