Ricerca nel sito web

Come installare Calibre Ebook Server su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

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

Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Scarica e installa il server Calibre
  4. Passaggio 3: crea una libreria Calibre e aggiungi il tuo primo libro
  5. Passaggio 4 - Avvia Calibre Server
  6. Passaggio 5 - Crea un file di servizio systemd
  7. Passaggio 6: abilita l'autenticazione utente
  8. Passaggio 7 - Aggiungi automaticamente libri alla libreria
  9. Passaggio 8 - Installa Nginx
  10. Passaggio 9 - Installa SSL
  11. Passaggio 10 - Configura Nginx
  12. Conclusione

Calibre è un gestore di e-book gratuito e open source. Funziona come un'applicazione desktop multipiattaforma insieme a un componente server. Il componente desktop può gestire la tua libreria di ebook su un singolo dispositivo. E il componente server ti consente di:

  • Accedi ai tuoi libri da qualsiasi parte del mondo.
  • Trasferisci facilmente i tuoi libri su dispositivi mobili.
  • Condividi i libri con i tuoi amici e familiari.
  • Leggi gli ebook direttamente sul Web.

In questo tutorial imparerai a installare il server Calibre su una macchina Ubuntu 22.04.

Prerequisiti

  • 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
    

Passaggio 1: configurare il firewall

Il primo passo prima di installare qualsiasi pacchetto è configurare il firewall per consentire le connessioni HTTP e HTTPS.

Controlla lo stato del firewall.

$ sudo ufw status

Dovresti vedere qualcosa di simile al seguente.

Status: active

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

Consenti porte HTTP e HTTPs.

$ sudo ufw allow http
$ sudo ufw allow https

Controlla di nuovo lo stato per confermare.

$ 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)

Passaggio 2: scarica e installa il server Calibre

Ubuntu 22.04 viene fornito con Calibre ma è meglio installarlo direttamente per ottenere l'ultima versione.

Il primo passo è installare alcune dipendenze.

$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx

Scarica il programma di installazione del server Calibre.

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

Rendere eseguibile lo script del programma di installazione.

$ chmod +x ./linux-installer.sh

Esegui il programma di installazione.

$ sudo ./linux-installer.sh

Riceverai alcuni avvisi perché il programma di installazione si aspetta un desktop e non un server. È sicuro ignorare gli avvertimenti.

Passaggio 3: crea una libreria Calibre e aggiungi il tuo primo libro

Il passaggio successivo consiste nell'impostare una libreria Calibre e aggiungervi alcuni libri. Per il nostro tutorial, scaricheremo il libro Le avventure di Sherlock Holmes di Arthur Conan Doyle dal Progetto Gutenberg.

$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi

Prendi sempre la versione Kindle del libro dal sito. Qui, stiamo rinominando la versione Kindle in filename.mobi perché il formato Mobi è supportato nativamente in Kindle, motivo per cui è così chiamato sul sito. Offre anche migliori opzioni di formattazione rispetto alla versione Epub.

Crea una directory per la libreria Calibre.

$ mkdir calibre-library

Aggiungi il libro che hai appena scaricato alla libreria usando il comando calibredb. Abbiamo specificato la posizione della libreria nel comando stesso.

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

Puoi aggiungere più libri contemporaneamente nel modo seguente.

$ calibredb add *.mobi --with-library calibre-library/

Passo 4 - Avvia Calibre Server

Ora che abbiamo i nostri libri pronti, è il momento di avviare il server Calibre.

$ calibre-server calibre-library

Il comando calibre-server prende la posizione della libreria come suo argomento. Dovresti vedere un output simile.

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

Ciò espone il server Calibre alla porta 8080. Per visualizzare il server, devi prima aprire la porta. Eseguire il seguente comando per aprire la porta 8080.

$ sudo ufw allow 8080

Apri l'URL http://:8080/ nel tuo browser e otterrai la seguente schermata. Lo schermo apparirà scuro o chiaro a seconda della scelta del tema dei sistemi operativi.

Fai clic sul collegamento calibre-library per visualizzare il libro che hai aggiunto nel passaggio precedente.

Chiudi il server premendo i tasti Ctrl + C sul tuo terminale.

Puoi utilizzare una porta diversa per esporre il server Calibre. Per farlo, usa il seguente comando. Dovrai assicurarti che la porta sia aperta nel firewall.

$ calibre-server calibre-library --port 7654

Passaggio 5: creare un file di servizio systemd

Per rendere persistente il processo del server Calibre e sopravvivere ai riavvii, è necessario creare un file di servizio systemd per lo stesso.

Crea un file chiamato calibre-server.service nella directory /etc/sytemd/system/ e aprilo per modificarlo.

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

Incolla il seguente codice al suo interno.

[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

Il flag --enable-local-write fornisce al server l'accesso in scrittura per aggiungere nuovi libri alla libreria. Questo perché non puoi aggiungere libri usando il comando calibredb mentre il server è in esecuzione.

Sostituisci con il nome utente del tuo sistema Linux nel codice precedente. Salva e chiudi il file premendo Ctrl+W e immettendo Y quando richiesto.

Ricarica il demone del servizio per attivare il file del servizio.

$ sudo systemctl daemon-reload

Abilita e avvia il servizio Calibre.

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

Controlla lo stato del servizio.

$ 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

Passaggio 6: abilitare l'autenticazione dell'utente

Puoi aggiungere l'autenticazione utente a Calibre per proteggere la tua libreria dall'essere disponibile a chiunque. Innanzitutto, arresta il server Calibre.

$ sudo systemctl stop calibre-server

Calibre utilizza un database SQLite per memorizzare le credenziali dell'utente. Avvia lo script di gestione degli utenti di Calibres per aggiungere un utente.

$ sudo calibre-server --manage-users

Ti verranno date quattro opzioni e ti verrà chiesto di scegliere. Premere 1 per aggiungere un nuovo utente e fornire il nome utente e la password per completare l'aggiunta di un nuovo utente.

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!

Successivamente, è necessario modificare il file di servizio per verificare l'autenticazione. Apri il file per la modifica.

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

Aggiungi il flag --enable-auth alla fine della riga che inizia con ExecStart per abilitare l'autenticazione dell'utente.

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

Salva e chiudi il file premendo Ctrl+W e immettendo Y quando richiesto.

Ricarica il demone del servizio e avvia il servizio.

$ sudo systemctl daemon-reload
$ sudo systemctl start calibre-server

Se apri l'URL della libreria, ti verrà richiesto il nome utente e la password prima di consentirti di accedervi. Inserisci le tue credenziali e premi il pulsante Accedi per accedere alla libreria.

Passaggio 7: aggiungi automaticamente libri alla libreria

Calibre ti consente di aggiungere automaticamente libri alla libreria utilizzando un lavoro Cron. Lo fa guardando una directory a intervalli regolari per nuovi libri e quindi aggiungendoli alla biblioteca. Questo è il modo più veloce per aggiungere libri in cui puoi semplicemente caricarli nella directory e appariranno presto nella libreria senza alcun intervento manuale.

Il primo passo è creare una directory di controllo.

$ mkdir ~/calibre-watch
$ cd ~/calibre-watch

Scarica il libro Guerra e pace di Leo Tolstoy in questa directory dal Progetto Gutenberg.

$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi

Se noti, questa volta stiamo scaricando una versione con immagini. Varia da libro a libro sul Progetto Gutenberg. Alcuni hanno versioni di immagini disponibili mentre altri no. Calibre funziona bene con entrambi i formati.

Apri l'editor Crontab.

$ crontab -e

Se è la prima volta che utilizzi Crontab, ti verrà chiesto di scegliere un editor.

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]:

Immettere 1 per scegliere l'editor Nano in quanto è il più semplice da utilizzare.

Aggiungi il seguente comando nella parte inferiore del file.

*/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/*

Questo script aggiungerà tutti i file nella directory /home//calibre-watch alla libreria di Calibre ed eliminerà tutti i file originali poiché non sono più necessari. Il lavoro sopra verrà eseguito ogni 5 minuti. Sostituisci con il nome utente del tuo sistema Linux e aggiungi le tue credenziali Calibre nelle posizioni appropriate.

Salva e chiudi il file premendo Ctrl+W e immettendo Y quando richiesto. Attendi qualche minuto e ricarica il sito del server calibre per vedere il libro che hai appena aggiunto apparire nella libreria.

Passaggio 8: installa Nginx

Ubuntu 22.04 viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, devi scaricare il repository Nginx ufficiale.

Importa la chiave di firma Nginxs.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Aggiungi il repository per la versione stabile di Nginxs.

$ 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

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verificare l'installazione.

$ nginx -v
nginx version: nginx/1.22.0

Passaggio 9: installa SSL

In questo momento, Calibre è esposto su una porta HTTP tramite un indirizzo IP. Per proteggerlo meglio, abiliteremo l'accesso tramite un dominio dedicato utilizzando un certificato SSL.

Dobbiamo installare Certbot per generare il certificato SSL per Calibre. Puoi installare Certbot usando il repository Ubuntus o prendere l'ultima versione usando lo strumento Snapd. Useremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.

$ sudo snap install core

Installa Cerbot.

$ sudo snap install --classic certbot

Utilizzare il seguente comando per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Eseguire il seguente comando per generare un certificato SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d calibre.example.com

Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/calibre.example.com sul tuo server.

Genera un certificato di gruppo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Apri il file /etc/letsencrypt/renewal/calibre.example.com.conf per la modifica.

$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf

Incolla il seguente codice in fondo.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Abbiamo generato il certificato SSL utilizzando l'opzione standalone di Certbot. Esegue il suo server Web per creare il certificato, il che significa che Nginx dovrebbe essere spento durante il rinnovo. I comandi pre_hook e post_hook vengono eseguiti prima e dopo il rinnovo per arrestare e riavviare automaticamente il server Nginx, quindi non richiedono alcun intervento manuale.

Per verificare se il rinnovo SSL funziona correttamente, eseguire un'esecuzione a secco del processo.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passaggio 10: configurare Nginx

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Crea e apri il file /etc/nginx/conf.d/calibre.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/calibre.conf

Incolla il seguente codice al suo interno. Sostituisci calibre.example.com con il tuo nome di dominio. Abbiamo impostato il valore della variabile client_max_body_size su 50 MB. Puoi cambiarlo secondo le tue esigenze.

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;
}

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verifica la configurazione di Nginx.

$ sudo nginx -t

Riavvia il server Nginx per abilitare i file di configurazione.

$ sudo systemctl restart nginx

Visita https://calibre.example.com nel tuo browser per accedere a Calibre. Puoi vedere che il libro aggiunto tramite Cron è disponibile anche nella libreria.

Conclusione

Questo conclude il nostro tutorial sull'installazione di Calibre Server su una macchina Ubuntu 22.04 utilizzando Nginx. Abbiamo anche configurato Calibre per abilitare l'autenticazione di base e aggiungere il supporto per l'aggiunta automatica di nuovi libri. Calibre Server viene fornito con molti strumenti da riga di comando. Per saperne di più su di loro, puoi visitare la documentazione di Calibre. Se hai domande, pubblicale nei commenti qui sotto.