Comment installer Wallabag sur Ubuntu 22.04
Wallabag est un type de service à lire plus tard. Il vous permet de sauvegarder des pages Web pour les 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 didacticiel couvrira l'installation et la configuration de Wallabag sur un serveur exécutant Ubuntu 22.04. Il expliquera également comment configurer Nginx, MySQL, Composer et PHP, qui sont tous requis par Wallabag pour fonctionner.
Conditions préalables
Un serveur exécutant Ubuntu 22.04.
Un utilisateur non root avec les privilèges sudo.
Un nom de domaine complet (FQDN) tel que wallabag.example.com
.
Assurez-vous que tout est mis à jour.
$ sudo apt update
$ sudo apt upgrade
Peu de packages 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 -y
Certains de ces packages sont peut-être déjà installés sur votre système.
Étape 1 - Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Ubuntu est livré par défaut avec ufw (Uncomplicated Firewall).
Vérifiez si le pare-feu est en cours d'exécution.
$ sudo ufw status
Vous devriez obtenir le résultat suivant.
Status: inactive
Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle en l'activant.
$ sudo ufw allow OpenSSH
Autorisez également les ports HTTP et HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Activer 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 - Installez PHP et ses extensions
Ubuntu 22.04 est livré avec la version PHP 8.1.2 qui est un peu obsolète. Nous installerons la dernière version de PHP 8.1 en utilisant le référentiel 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 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 vers 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 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 MySQL.
$ sudo mysql_secure_installation
Tout d’abord, il vous sera demandé votre mot de passe root. Entrez-le. Ensuite, il vous sera demandé d'installer le composant de validation du mot de passe. Il vérifie la force des mots de passe utilisés dans MySQL. Appuyez sur Y pour l'installer. Ensuite, il vous sera demandé 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, saisissez N pour refuser de modifier votre mot de passe root. Saisissez é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 lorsque vous y êtes invité.
$ sudo mysql -u root -p
Créez un exemple de base de données.
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';
Vider les privilèges utilisateur.
mysql> FLUSH PRIVILEGES;
Quittez le shell.
mysql> exit
Étape 6 - Installer Nginx
Ubuntu 22.04 est livré avec une ancienne version de Nginx. Vous devez télécharger le référentiel officiel 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 référentiel 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 référentiels 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 à l'aide du référentiel Ubuntu, soit récupérer la dernière version à l'aide de l'outil Snapd. Nous utiliserons 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 -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 Certbot.
$ sudo systemctl list-timers
Vous trouverez snap.certbot.renew.service
comme l'un des services dont l'exécution est planifiée.
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
Effectuez un essai à sec du processus 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 consulter 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 la 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
Modifiez les autorisations du répertoire /var/www/html/wallabag
pour l'utilisateur actuellement connecté.
$ sudo chown -R $USER:$USER /var/www/html/wallabag
Basculez vers le répertoire.
$ cd /var/www/html/wallabag
Créez le fichier parameters.yml
en copiant le fichier d'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 le modifier.
$ nano app/config/parameters.yml
Recherchez 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 informations 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 inscription d'utilisateur devra être confirmée par e-mail. Remplacez la valeur de la variable from_email
par l'identifiant de messagerie 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
# fosuser stuff
fosuser_registration: true
fosuser_confirmation: true
.....
from_email: [email
.....
Il existe d'autres sentinelles liées aux paramètres Redis, RabbitMQ et Sentry. Vous pouvez les configurer selon vos besoins après avoir installé lesdits packages.
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant 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 à l'aide de l'outil de ligne de commande Wallabag.
$ php bin/console wallabag:install --env=prod
Vous serez invité si vous souhaitez réinitialiser la base de données et son schéma. Entrez non
comme réponse à chaque fois. Ensuite, il vous sera demandé si vous souhaitez créer un compte administrateur. Tapez oui
pour continuer et saisissez le nom d'utilisateur, le mot de passe et l'identifiant de messagerie du 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 ]:
> [email
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
Rétablissez l'autorisation du répertoire sur 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 de processus PHP sur nginx. Recherchez les lignes user=www-data
et group=www-data
dans le fichier et remplacez-les par 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
...
Recherchez les lignes listen.owner=www-data
et listen.group=www-data
dans le fichier et remplacez-les par 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 saisissant Y lorsque vous y êtes invité.
Augmentez le temps d'exécution de 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 le modifier.
$ sudo nano /etc/nginx/conf.d/wallabag.conf
Collez-y le code suivant.
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;
}
Notez que le répertoire racine à utiliser dans la configuration 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 le modifier.
$ 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 saisissant Y lorsque vous y êtes invité.
Vérifiez la syntaxe du fichier de configuration 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édez à Wallabag
Ouvrez l'URL https://wallabag.example.com
dans votre navigateur et vous obtiendrez l'écran de connexion suivant.
Entrez vos informations d'identification créées lors de l'installation et appuyez sur le bouton CONNEXION pour continuer. Vous serez accueilli avec le tableau de bord Wallabag.
Wallabag vous propose une multitude d'applications pour chaque navigateur, mobile ou lecteur de livre électronique à l'aide desquelles vous pouvez ajouter des liens. Et si rien d'autre ne vous plaît, vous pouvez même utiliser un Bookmarklet, dont vous pouvez accéder aux détails 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 ça. Vous pouvez commencer à utiliser Wallabag pour enregistrer des articles afin de les lire plus tard.
Conclusion
Ceci conclut notre tutoriel sur l'installation de Wallabag sur un serveur Ubuntu 22.04. Si vous avez des questions, postez-les dans les commentaires ci-dessous.