Installazione · 14 min read · Dec 19, 2025

Come installare Wallabag su Ubuntu 22.04

Wallabag è un servizio di tipo leggi-dopo. Ti consente di salvare pagine web da leggere in seguito a tuo piacimento. Ci sono molti servizi che ti permettono di farlo come Pocket, Instapaper, ecc., ma avere un servizio installato su un server di tua proprietà è molto meglio. Per prima cosa, non andrà in bancarotta e non rimuoverà i link.

Questo tutorial tratterà l’installazione e la configurazione di Wallabag su un server che esegue Ubuntu 22.04. Tratterà anche come configurare Nginx, MySQL, Composer e PHP, tutti necessari per eseguire Wallabag.

Prerequisiti

  • Un server che esegue Ubuntu 22.04.
  • Un utente non root con privilegi sudo.
  • Un nome di dominio completamente qualificato (FQDN) come wallabag.example.com.
  • Assicurati che tutto sia aggiornato. $ sudo apt update $ sudo apt upgrade
  • Alcuni pacchetti di cui il tuo sistema ha bisogno. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alcuni di questi pacchetti potrebbero già essere installati sul tuo sistema.

Passo 1 - Configurare il Firewall

Il primo passo è configurare il firewall. Ubuntu viene fornito di default con ufw (Uncomplicated Firewall).

Controlla se il firewall è attivo.

$ sudo ufw status

Dovresti ottenere il seguente output.

Status: inactive

Consenti la porta SSH in modo che il firewall non interrompa la connessione attuale quando viene abilitato.

$ sudo ufw allow OpenSSH

Consenti anche le porte HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Abilita il Firewall

$ sudo ufw enable
Il comando potrebbe interrompere le connessioni ssh esistenti. Procedere con l'operazione (y|n)? y
Il firewall è attivo e abilitato all'avvio del sistema

Controlla di nuovo lo stato del firewall.

$ sudo ufw status

Dovresti vedere un output simile.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Installare PHP e le sue estensioni

Ubuntu 22.04 viene fornito con la versione PHP 8.1.2 che è un po’ obsoleta. Installeremo l’ultima versione PHP 8.1 utilizzando il repository PHP di Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Successivamente, installa PHP e le sue estensioni richieste da Wallabag.

$ sudo apt install php8.1-fpm php8.1-mysql php8.1-bcmath php8.1-xml php8.1-zip php8.1-curl php8.1-mbstring php8.1-gd php8.1-tidy php8.1-intl php8.1-cli 

Verifica l’installazione.

$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:35:37) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies

Passo 3 - Installare Composer

Composer è uno strumento di gestione delle dipendenze per PHP ed è necessario per l’installazione di Wallabag.

Esegui i seguenti comandi per scaricare il binario di Composer. Wallabag funziona solo con Composer 2.2 LTS, quindi abbiamo modificato il comando di conseguenza.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Installa Composer spostando il binario nella directory /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Verifica l’installazione controllando la sua versione.

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

Passo 4 - Installare MySQL

Ubuntu 22.04 viene fornito con l’ultima versione di MySQL. Puoi installarlo con un solo comando.

$ sudo apt install mysql-server

Controlla la versione di MySQL.

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Questo passaggio è necessario per le versioni di MySQL 8.0.28 e superiori. Entra nella Shell di MySQL.

$ sudo mysql

Esegui il seguente comando per impostare la password per il tuo utente root. Assicurati che abbia una combinazione di numeri, maiuscole, minuscole e caratteri speciali.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Esci dalla shell.

mysql> exit

Esegui lo script di installazione sicura di MySQL.

$ sudo mysql_secure_installation

Per prima cosa, ti verrà chiesta la password di root. Inseriscila. Successivamente, ti verrà chiesto di installare il componente di validazione della password. Controlla la forza delle password utilizzate in MySQL. Premi Y per installarlo. Successivamente, ti verrà chiesto di impostare il livello della politica di validazione delle password. Scegli 2 poiché è il più forte.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Successivamente, inserisci N per rifiutare di cambiare la tua password di root. Inoltre, inserisci Y per rimuovere gli utenti anonimi, vietare i login remoti di root, rimuovere il database di test e ricaricare le tabelle dei privilegi.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Passo 5 - Configurare MySQL

Accedi alla shell di MySQL. Inserisci la tua password di root quando richiesto.

$ sudo mysql -u root -p

Crea un database di esempio.

mysql> CREATE DATABASE wallabag;

Crea un account utente SQL.

mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';

Concedi tutti i privilegi sul database all’utente.

mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';

Flush dei privilegi dell’utente.

mysql> FLUSH PRIVILEGES;

Esci dalla shell.

mysql> exit

Passo 6 - Installare Nginx

Ubuntu 22.04 viene fornito con una versione più vecchia di Nginx. Devi scaricare il repository ufficiale di Nginx per installare l’ultima versione.

Importa la chiave di firma di Nginx.

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

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verifica l’installazione.

$ nginx -v
nginx version: nginx/1.22.1

Avvia il server Nginx.

$ sudo systemctl start nginx

Passo 7 - Installare SSL

Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Ubuntu o scaricare l’ultima versione utilizzando lo strumento Snapd. Useremo la versione Snapd.

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

$ sudo snap install core && sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Usa il seguente comando per assicurarti che il comando Certbot possa essere eseguito creando un link simbolico alla directory /usr/bin.

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

Esegui il seguente comando per generare un certificato SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.com

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

Genera un certificato Diffie-Hellman group.

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

Controlla il servizio di pianificazione del rinnovo di Certbot.

$ sudo systemctl list-timers

Troverai snap.certbot.renew.service come uno dei servizi programmati per l’esecuzione.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Fai un test del processo per controllare se il rinnovo SSL funziona correttamente.

$ sudo certbot renew --dry-run

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

Passo 8 - Installare Wallabag

Crea la directory /var/www/wallabag/html.

$ sudo mkdir /var/www/html/wallabag -p

Scarica l’ultima versione di Wallabag.

$ wget https://wllbg.org/latest-v2-package

Estrai l’archivio.

$ tar xzf latest-v2-package

Sposta i file dalla directory estratta nella directory creata in precedenza. Puoi controllare l’ultima versione di Wallabag dalla pagina delle release di GitHub. L’ultima versione al momento della scrittura di questo tutorial è 2.5.4.

$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag

Crea la directory degli asset.

$ sudo mkdir /var/www/html/wallabag/data/assets

Cambia i permessi della directory /var/www/html/wallabag all’utente attualmente connesso.

$ sudo chown -R $USER:$USER /var/www/html/wallabag

Passa alla directory.

$ cd /var/www/html/wallabag

Crea il file parameters.yml copiando il file di esempio.

$ cp app/config/parameters.yml.dist app/config/parameters.yml

Prima di iniziare a configurare Wallabag, genera una chiave segreta. Annotati la chiave da utilizzare in seguito.

$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

Apri il file dei parametri per la modifica.

$ nano app/config/parameters.yml

Trova la seguente sezione e compila le credenziali del database. La porta del database è 3306 per MySQL.

..........
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 3306
    database_name: wallabag
    database_user: wallabaguser
    database_password: Your_password2

Compila la descrizione del server e il nome di dominio.

    domain_name: https://wallabag.example.com
    server_name: "Howtoforge Wallabag"

Compila i tuoi dettagli SMTP. Nel nostro caso, stiamo utilizzando il servizio Amazon SES.

    mailer_transport:  smtp
    mailer_user:       YOUR_AES_USERNAME
    mailer_password:   YOUR_AES_PASSWORD
    mailer_host:       email-smtp.us-west-2.amazonaws.com
    mailer_port:       587
    mailer_encryption: tls

Compila la chiave segreta generata in precedenza. Se desideri mantenere l’autenticazione a due fattori, assicurati che le seguenti impostazioni siano applicate. Se desideri disattivare la registrazione degli utenti, imposta il valore di fouser_registration su false. La variabile fouser_confirmation è impostata su true, il che significa che ogni registrazione utente dovrà essere confermata via email. Cambia il valore della variabile from_email con l’indirizzo email di tua scelta.

    # A secret key that's used to generate certain security-related tokens
    secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

    # two factor stuff
    twofactor_auth: true
    twofactor_sender: [email protected]

    # fosuser stuff
    fosuser_registration: true
    fosuser_confirmation: true
.....
    from_email: [email protected]
.....

Ci sono più sentinelle relative a Redis, RabbitMQ e impostazioni di Sentry. Puoi configurarle secondo le tue esigenze dopo aver installato i pacchetti indicati.

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

Usa Composer per scaricare e installare le dipendenze richieste da Wallabag.

$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist

Completa l’installazione utilizzando lo strumento da riga di comando di Wallabag.

$ php bin/console wallabag:install --env=prod

Ti verrà chiesto se desideri ripristinare il database e il suo schema. Inserisci no come risposta entrambe le volte. Successivamente, ti verrà chiesto se desideri creare un account amministratore. Digita yes per procedere e inserisci il nome utente, la password e l’indirizzo email per l’account.

wallabag installer
==================

Step 1 of 4: Checking system requirements.
------------------------------------------

 ------------------------ -------- ---------------- 
  Checked                  Status   Recommendation  
 ------------------------ -------- ---------------- 
  PDO Driver (pdo_mysql)   OK!                      
  Database connection      OK!                      
  Database version         OK!                      
  curl_exec                OK!                      
  curl_multi_init          OK!                      
 ------------------------ -------- ---------------- 

 [OK] Success! Your system can run wallabag properly.                                                                   
                                                                                                                         

Step 2 of 4: Setting up database.
---------------------------------

 It appears that your database already exists. Would you like to reset it? (yes/no) [no]:
 > no

 Seems like your database contains schema. Do you want to reset it? (yes/no) [no]:
 > no

 Clearing the cache...

 Database successfully setup.

Step 3 of 4: Administration setup.
----------------------------------

 Would you like to create a new admin user (recommended)? (yes/no) [yes]:
 > yes

 Username [wallabag]:
 > navjot

 Password [wallabag]:
 > 

 Email [[email protected]]:
 > [email protected]

 Administration successfully setup.

Step 4 of 4: Config setup.
--------------------------

 Config successfully setup.
                                                                                                 
 [OK] wallabag has been successfully installed.                                                                                 
                                                                                                                      
 [OK] You can now configure your web server, see https://doc.wallabag.org

Ripristina i permessi della directory a Nginx.

$ sudo chown -R nginx:nginx /var/www/html/wallabag

Passo 9 - Configurare Nginx e PHP

Configurare PHP-FPM

Apri il file /etc/php/8.1/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Dobbiamo impostare l’utente/gruppo Unix dei processi PHP su nginx. Trova le righe user=www-data e group=www-data nel file e cambiale in nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Trova le righe listen.owner = www-data e listen.group = www-data nel file e cambiale in nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

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

Aumenta il tempo di esecuzione per PHP-FPM e PHP-CLI a 60 secondi.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.1/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.1/cli/php.ini

Aumenta il limite di memoria per PHP-FPM da 128MB a 256MB.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini

Riavvia il servizio PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Cambia il gruppo della directory delle sessioni PHP a Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Configurare Nginx

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

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

Incolla il seguente codice.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  wallabag.example.com;

    access_log  /var/log/nginx/wallabag.access.log;
    error_log   /var/log/nginx/wallabag.error.log;

    # SSL
    ssl_certificate      /etc/letsencrypt/live/wallabag.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/wallabag.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wallabag.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;
    resolver 8.8.8.8;

    root /var/www/html/wallabag/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~ ^/app\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  wallabag.example.com;
    return 301   https://$host$request_uri;
}

Nota che la directory root da utilizzare nella configurazione di Nginx è /var/www/html/wallabag/public/.

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

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

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la seguente riga 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.

Verifica la sintassi del file di configurazione di 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

Riavvia il servizio Nginx.

$ sudo systemctl restart nginx

Passo 10 - Accedere a Wallabag

Apri l’URL https://wallabag.example.com nel tuo browser e vedrai la seguente schermata di accesso.

Schermata di accesso a Wallabag

Inserisci le tue credenziali create durante l’installazione e premi il pulsante LOG IN per procedere. Sarai accolto con il dashboard di Wallabag.

Dashboard di Wallabag

Wallabag ti offre una moltitudine di app per ogni browser, mobile o lettore di Ebook tramite le quali puoi aggiungere link. E se nulla ti attira, puoi anche usare un Bookmarklet, i cui dettagli puoi accedere dalla sezione How to cliccando sull’icona dell’utente in alto a destra del dashboard.

Menu a discesa utente di Wallabag

Ti verranno forniti link alle estensioni del browser, alle app mobili e al bookmarklet di Wallabag.

Pagina Howto di Wallabag

Questo è tutto. Puoi iniziare a usare Wallabag per salvare articoli da leggere in seguito.

Conclusione

Questo conclude il nostro tutorial su come installare Wallabag su un server Ubuntu 22.04. Se hai domande, pubblicale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.