Installation · 15 min read · Dec 19, 2025
Comment installer Wallabag sur Ubuntu 22.04

Wallabag est un service de type « lire plus tard ». Il vous permet d’enregistrer des pages web à lire plus tard à votre rythme. Il existe de nombreux services qui vous permettent de le faire, comme Pocket, Instapaper, etc., mais avoir un service installé sur un serveur que vous possédez est bien mieux. D’une part, il ne fera pas faillite et ne supprimera pas les liens avec lui.
Ce tutoriel couvrira l’installation et la configuration de Wallabag sur un serveur exécutant Ubuntu 22.04. Il couvrira également comment configurer Nginx, MySQL, Composer et PHP, qui sont tous nécessaires au fonctionnement de Wallabag.
Prérequis
- Un serveur exécutant Ubuntu 22.04.
- Un utilisateur non-root avec des privilèges sudo.
- Un nom de domaine entièrement qualifié (FQDN) comme
wallabag.example.com. - Assurez-vous que tout est à jour.
$ sudo apt update $ sudo apt upgrade - Quelques paquets dont votre système a besoin.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -yCertains de ces paquets peuvent déjà être installés sur votre système.
Étape 1 - Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (Uncomplicated Firewall) par défaut.
Vérifiez si le pare-feu est en cours d’exécution.
$ sudo ufw status
Vous devriez obtenir la sortie suivante.
Status: inactive
Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.
$ sudo ufw allow OpenSSH
Autorisez également les ports HTTP et HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Activez le pare-feu
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Vérifiez à nouveau l’état du pare-feu.
$ sudo ufw status
Vous devriez voir une sortie similaire.
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)
Étape 2 - Installer PHP et ses extensions
Ubuntu 22.04 est livré avec la version PHP 8.1.2 qui est un peu obsolète. Nous allons installer la dernière version PHP 8.1 en utilisant le dépôt PHP d’Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
Ensuite, installez PHP et ses extensions requises par 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
Vérifiez l’installation.
$ 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
Étape 3 - Installer Composer
Composer est un outil de gestion des dépendances pour PHP et est requis pour l’installation de Wallabag.
Exécutez les commandes suivantes pour télécharger le binaire de Composer. Wallabag ne fonctionne qu’avec Composer 2.2 LTS, nous avons donc modifié la commande en conséquence.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
Installez Composer en déplaçant le binaire dans le répertoire /usr/local/bin.
$ sudo mv composer.phar /usr/local/bin/composer
Vérifiez l’installation en vérifiant sa version.
$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40
Étape 4 - Installer MySQL
Ubuntu 22.04 est livré avec la dernière version de MySQL. Vous pouvez l’installer avec une seule commande.
$ sudo apt install mysql-server
Vérifiez la version de MySQL.
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Cette étape est nécessaire pour les versions de MySQL 8.0.28 et supérieures. Entrez dans le shell MySQL.
$ sudo mysql
Exécutez la commande suivante pour définir le mot de passe de votre utilisateur root. Assurez-vous qu’il contient un mélange de chiffres, de majuscules, de minuscules et de caractères spéciaux.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Quittez le shell.
mysql> exit
Exécutez le script d’installation sécurisée de MySQL.
$ sudo mysql_secure_installation
Tout d’abord, on vous demandera votre mot de passe root. Entrez-le. Ensuite, on vous demandera d’installer le composant de validation des mots de passe. Il vérifie la force des mots de passe utilisés dans MySQL. Appuyez sur Y pour l’installer. Ensuite, on vous demandera de définir le niveau de la politique de validation des mots de passe. Choisissez 2 car c’est le plus fort.
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
Ensuite, entrez N pour refuser de changer votre mot de passe root. Entrez également Y pour supprimer les utilisateurs anonymes, interdire les connexions root à distance, supprimer la base de données de test et recharger les tables de privilèges.
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!
Étape 5 - Configurer MySQL
Connectez-vous au shell MySQL. Entrez votre mot de passe root lorsqu’on vous le demande.
$ sudo mysql -u root -p
Créez une base de données d’exemple.
mysql> CREATE DATABASE wallabag;
Créez un compte utilisateur SQL.
mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';
Accordez tous les privilèges sur la base de données à l’utilisateur.
mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';
Rafraîchissez les privilèges de l’utilisateur.
mysql> FLUSH PRIVILEGES;
Quittez le shell.
mysql> exit
Étape 6 - Installer Nginx
Ubuntu 22.04 est livré avec une version plus ancienne de Nginx. Vous devez télécharger le dépôt officiel de Nginx pour installer la dernière version.
Importez la clé de signature de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Ajoutez le dépôt pour la version stable de 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
Mettez à jour les dépôts du système.
$ sudo apt update
Installez Nginx.
$ sudo apt install nginx
Vérifiez l’installation.
$ nginx -v
nginx version: nginx/1.22.1
Démarrez le serveur Nginx.
$ sudo systemctl start nginx
Étape 7 - Installer SSL
Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt d’Ubuntu, soit obtenir la dernière version en utilisant l’outil Snapd. Nous allons utiliser la version Snapd.
Ubuntu 22.04 est livré avec Snapd installé par défaut. Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.
$ sudo snap install core && sudo snap refresh core
Installez Certbot.
$ sudo snap install --classic certbot
Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Exécutez la commande suivante pour générer un certificat SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.com
La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/wallabag.example.com sur votre serveur.
Générez un certificat de groupe Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Vérifiez le service de planification de renouvellement de Certbot.
$ sudo systemctl list-timers
Vous trouverez snap.certbot.renew.service comme l’un des services programmés pour s’exécuter.
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
Faites un essai de la procédure pour vérifier si le renouvellement SSL fonctionne correctement.
$ sudo certbot renew --dry-run
Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.
Étape 8 - Installer Wallabag
Créez le répertoire /var/www/wallabag/html.
$ sudo mkdir /var/www/html/wallabag -p
Téléchargez la dernière version de Wallabag.
$ wget https://wllbg.org/latest-v2-package
Extrayez l’archive.
$ tar xzf latest-v2-package
Déplacez les fichiers du répertoire extrait vers le répertoire créé précédemment. Vous pouvez vérifier la dernière version de Wallabag sur la page des versions de GitHub. La dernière version au moment de la rédaction de ce tutoriel est 2.5.4.
$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag
Créez le répertoire des actifs.
$ sudo mkdir /var/www/html/wallabag/data/assets
Changez les permissions du répertoire /var/www/html/wallabag pour l’utilisateur actuellement connecté.
$ sudo chown -R $USER:$USER /var/www/html/wallabag
Accédez au répertoire.
$ cd /var/www/html/wallabag
Créez le fichier parameters.yml en copiant le fichier exemple.
$ cp app/config/parameters.yml.dist app/config/parameters.yml
Avant de commencer à configurer Wallabag, générez une clé secrète. Notez la clé à utiliser plus tard.
$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=
Ouvrez le fichier de paramètres pour l’édition.
$ nano app/config/parameters.yml
Trouvez la section suivante et remplissez les informations d’identification de la base de données. Le port de la base de données est 3306 pour MySQL.
..........
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: wallabag
database_user: wallabaguser
database_password: Your_password2
Remplissez la description du serveur et le nom de domaine.
domain_name: https://wallabag.example.com
server_name: "Howtoforge Wallabag"
Remplissez vos détails SMTP. Dans notre cas, nous utilisons le service 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
Remplissez la clé secrète générée précédemment. Si vous souhaitez conserver l’authentification à deux facteurs, assurez-vous que les paramètres suivants sont appliqués. Si vous souhaitez désactiver l’enregistrement des utilisateurs, définissez la valeur de fouser_registration sur false. La variable fouser_confirmation est définie sur true, ce qui signifie que chaque enregistrement d’utilisateur devra être confirmé par e-mail. Changez la valeur de la variable from_email pour l’adresse e-mail de votre choix.
# 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]
.....
Il y a plus de sentinelles liées à Redis, RabbitMQ et aux paramètres de Sentry. Vous pouvez les configurer selon vos besoins après avoir installé les paquets mentionnés.
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Utilisez Composer pour télécharger et installer les dépendances requises par Wallabag.
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
Terminez l’installation en utilisant l’outil en ligne de commande de Wallabag.
$ php bin/console wallabag:install --env=prod
On vous demandera si vous souhaitez réinitialiser la base de données et son schéma. Entrez no comme réponse deux fois. Ensuite, on vous demandera si vous souhaitez créer un compte administrateur. Tapez yes pour continuer et entrez le nom d’utilisateur, le mot de passe et l’adresse e-mail pour le compte.
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
Revenez aux permissions du répertoire à Nginx.
$ sudo chown -R nginx:nginx /var/www/html/wallabag
Étape 9 - Configurer Nginx et PHP
Configurer PHP-FPM
Ouvrez le fichier /etc/php/8.1/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Nous devons définir l’utilisateur/groupe Unix des processus PHP sur nginx. Trouvez les lignes user=www-data et group=www-data dans le fichier et changez-les en 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
...
Trouvez les lignes listen.owner = www-data et listen.group = www-data dans le fichier et changez-les en 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
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Augmentez le temps d’exécution pour PHP-FPM et PHP-CLI à 60 secondes.
$ 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
Augmentez la limite de mémoire pour PHP-FPM de 128 Mo à 256 Mo.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
Redémarrez le service PHP-FPM.
$ sudo systemctl restart php8.1-fpm
Changez le groupe du répertoire des sessions PHP en Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Configurer Nginx
Créez et ouvrez le fichier /etc/nginx/conf.d/wallabag.conf pour l’édition.
$ sudo nano /etc/nginx/conf.d/wallabag.conf
Collez le code suivant dedans.
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;
}
Remarquez que le répertoire racine à utiliser dans la configuration de Nginx est /var/www/html/wallabag/public/.
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.
Ouvrez le fichier /etc/nginx/nginx.conf pour l’édition.
$ sudo nano /etc/nginx/nginx.conf
Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Vérifiez la syntaxe du fichier de configuration de 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
Redémarrez le service Nginx.
$ sudo systemctl restart nginx
Étape 10 - Accéder à Wallabag
Ouvrez l’URL https://wallabag.example.com dans votre navigateur et vous obtiendrez l’écran de connexion suivant.

Entrez vos identifiants créés lors de l’installation et appuyez sur le bouton LOG IN pour continuer. Vous serez accueilli avec le tableau de bord de Wallabag.

Wallabag vous fournit une multitude d’applications pour chaque navigateur, mobile ou lecteur Ebook, que vous pouvez utiliser pour ajouter des liens. Et si rien d’autre ne vous plaît, vous pouvez même utiliser un Bookmarklet, dont les détails sont accessibles depuis la section Comment faire en cliquant sur l’icône utilisateur en haut à droite du tableau de bord.

Vous recevrez des liens vers les extensions de navigateur, les applications mobiles et le bookmarklet Wallabag.

C’est tout. Vous pouvez commencer à utiliser Wallabag pour enregistrer des articles à lire plus tard.
Conclusion
Cela conclut notre tutoriel sur l’installation de Wallabag sur un serveur Ubuntu 22.04. Si vous avez des questions, posez-les dans les commentaires ci-dessous.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.