Cómo instalar Wallabag en Ubuntu 22.04
Wallabag es un tipo de servicio de lectura posterior. Le permite guardar páginas web para leerlas más tarde a su ritmo libre. Hay muchos servicios que te permiten hacerlo como Pocket, Instapaper, etc., pero tener un servicio instalado en un servidor de tu propiedad es mucho mejor. Por un lado, no cerrará y eliminará los enlaces con él.
Este tutorial cubrirá la instalación y configuración de Wallabag en un servidor que ejecuta Ubuntu 22.04. También cubrirá cómo configurar Nginx, MySQL, Composer y PHP, todos los cuales son necesarios para que Wallabag se ejecute.
Requisitos previos
Un servidor que ejecuta Ubuntu 22.04.
Un usuario no root con privilegios sudo.
Un nombre de dominio completo (FQDN) como wallabag.example.com
.
Asegúrate de que todo esté actualizado.
$ sudo apt update
$ sudo apt upgrade
Pocos paquetes que tu sistema necesita.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Es posible que algunos de estos paquetes ya estén instalados en su sistema.
Paso 1: configurar el firewall
El primer paso es configurar el firewall. Ubuntu viene con ufw (Firewall sin complicaciones) de forma predeterminada.
Compruebe si el firewall se está ejecutando.
$ sudo ufw status
Debería obtener el siguiente resultado.
Status: inactive
Permita el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSH
Permita también los puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Habilitar el cortafuegos
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Verifique nuevamente el estado del firewall.
$ sudo ufw status
Deberías ver un resultado similar.
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)
Paso 2: instala PHP y sus extensiones
Ubuntu 22.04 viene con la versión PHP 8.1.2 que está un poco desactualizada. Instalaremos la última versión de PHP 8.1 utilizando el repositorio PHP de Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
A continuación, instale PHP y sus extensiones requeridas por 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
Verifique la instalación.
$ 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
Paso 3: instalar el compositor
Composer es una herramienta de gestión de dependencias para PHP y es necesaria para la instalación de Wallabag.
Ejecute los siguientes comandos para descargar el binario de Composer. Wallabag solo funciona con Composer 2.2 LTS, por lo que modificamos el comando en consecuencia.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
Instale Composer moviendo el binario al directorio /usr/local/bin
.
$ sudo mv composer.phar /usr/local/bin/composer
Verifique la instalación comprobando su versión.
$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40
Paso 4: instale MySQL
Ubuntu 22.04 viene con la última versión de MySQL. Puedes instalarlo con un solo comando.
$ sudo apt install mysql-server
Verifique la versión de MySQL.
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Este paso es necesario para las versiones de MySQL 8.0.28 y superiores. Ingrese al shell MySQL.
$ sudo mysql
Ejecute el siguiente comando para establecer la contraseña para su usuario root. Asegúrese de que tenga una combinación de números, mayúsculas, minúsculas y caracteres especiales.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Sal del caparazón.
mysql> exit
Ejecute el script de instalación segura de MySQL.
$ sudo mysql_secure_installation
Primero, se le pedirá su contraseña de root. Ingresarlo. A continuación, se le pedirá que instale el componente Validar contraseña. Comprueba la seguridad de las contraseñas utilizadas en MySQL. Presione Y para instalarlo. A continuación, se le pedirá que establezca el nivel de la política de validación de contraseña. Elija 2 ya que es el más fuerte.
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
A continuación, ingrese N para negarse a cambiar su contraseña de root. Además, ingrese Y para eliminar usuarios anónimos, no permitir inicios de sesión remotos como root, eliminar la base de datos de prueba y volver a cargar las tablas de privilegios.
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!
Paso 5: configurar MySQL
Inicie sesión en el shell MySQL. Ingrese su contraseña de root cuando se le solicite.
$ sudo mysql -u root -p
Cree una base de datos de muestra.
mysql> CREATE DATABASE wallabag;
Cree una cuenta de usuario SQL.
mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';
Otorgue todos los privilegios sobre la base de datos al usuario.
mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';
Eliminar privilegios de usuario.
mysql> FLUSH PRIVILEGES;
Sal del caparazón.
mysql> exit
Paso 6: instalar Nginx
Ubuntu 22.04 viene con una versión anterior de Nginx. Debe descargar el repositorio oficial de Nginx para instalar la última versión.
Importe la clave de firma de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Agregue el repositorio para la versión estable 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
Actualizar los repositorios del sistema.
$ sudo apt update
Instale Nginx.
$ sudo apt install nginx
Verifique la instalación.
$ nginx -v
nginx version: nginx/1.22.1
Inicie el servidor Nginx.
$ sudo systemctl start nginx
Paso 7: instale SSL
Necesitamos instalar Certbot para generar el certificado SSL. Puede instalar Certbot usando el repositorio de Ubuntu o obtener la última versión usando la herramienta Snapd. Usaremos la versión Snapd.
Ubuntu 22.04 viene con Snapd instalado de forma predeterminada. Ejecute los siguientes comandos para asegurarse de que su versión de Snapd esté actualizada.
$ sudo snap install core && sudo snap refresh core
Instale Certbot.
$ sudo snap install --classic certbot
Utilice el siguiente comando para asegurarse de que el comando Certbot se pueda ejecutar creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ejecute el siguiente comando para generar un certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d wallabag.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/wallabag.example.com
de su servidor.
Genere un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Consulte el servicio de programación de renovaciones de Certbot.
$ sudo systemctl list-timers
Encontrará snap.certbot.renew.service
como uno de los servicios programados para ejecutarse.
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
Realice un ensayo del proceso para comprobar si la renovación de SSL funciona bien.
$ sudo certbot renew --dry-run
Si no ve ningún error, ya está todo listo. Su certificado se renovará automáticamente.
Paso 8 - Instalar Wallabag
Cree el directorio /var/www/wallabag/html
.
$ sudo mkdir /var/www/html/wallabag -p
Descarga la última versión de Wallabag.
$ wget https://wllbg.org/latest-v2-package
Extrae el archivo.
$ tar xzf latest-v2-package
Mueva los archivos del directorio extraído al directorio creado anteriormente. Puede consultar la última versión de Wallabag desde la página de lanzamientos de GitHub. La última versión al momento de escribir este tutorial es 2.5.4.
$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag
Cree el directorio de activos.
$ sudo mkdir /var/www/html/wallabag/data/assets
Cambie los permisos del directorio /var/www/html/wallabag
al usuario que ha iniciado sesión actualmente.
$ sudo chown -R $USER:$USER /var/www/html/wallabag
Cambie al directorio.
$ cd /var/www/html/wallabag
Cree el archivo parameters.yml
copiando el archivo de ejemplo.
$ cp app/config/parameters.yml.dist app/config/parameters.yml
Antes de comenzar a configurar Wallabag, genere una clave secreta. Anote la clave que se utilizará más adelante.
$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=
Abra el archivo de parámetros para editarlo.
$ nano app/config/parameters.yml
Busque la siguiente sección y complete las credenciales de la base de datos. El puerto de la base de datos es 3306 para MySQL.
..........
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: wallabag
database_user: wallabaguser
database_password: Your_password2
Complete la descripción del servidor y el nombre de dominio.
domain_name: https://wallabag.example.com
server_name: "Howtoforge Wallabag"
Complete sus datos SMTP. En nuestro caso, utilizamos el servicio 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
Complete la clave secreta generada anteriormente. Si desea mantener la autenticación de dos factores, asegúrese de que se apliquen las siguientes configuraciones. Si desea desactivar el registro de usuarios, establezca el valor de fouser_registration
en false
. La variable fouser_confirmation
está configurada en verdadero, lo que significa que cada registro de usuario deberá confirmarse por correo electrónico. Cambie el valor de la variable from_email
al ID de correo electrónico de su elección.
# 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
.....
Hay más centinelas relacionados con la configuración de Redis, RabbitMQ y Sentry. Puede configurarlos según sus necesidades después de instalar dichos paquetes.
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Utilice Composer para descargar e instalar las dependencias requeridas por Wallabag.
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
Finalice la instalación utilizando la herramienta de línea de comandos de Wallabag.
$ php bin/console wallabag:install --env=prod
Se le preguntará si desea restablecer la base de datos y su esquema. Ingrese no
como respuesta en ambas ocasiones. A continuación, se le preguntará si desea crear una cuenta de administrador. Escriba yes
para continuar e ingrese el nombre de usuario, la contraseña y la identificación de correo electrónico de la cuenta.
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
Vuelva a cambiar el permiso del directorio a Nginx.
$ sudo chown -R nginx:nginx /var/www/html/wallabag
Paso 9: configurar Nginx y PHP
Configurar PHP-FPM
Abra el archivo /etc/php/8.1/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Necesitamos configurar el usuario/grupo de procesos PHP de Unix en nginx. Busque las líneas user=www-data
y group=www-data
en el archivo y cámbielas a 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
...
Busque las líneas listen.owner=www-data
y listen.group=www-data
en el archivo y cámbielas a 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
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Aumente el tiempo de ejecución de PHP-FPM y PHP-CLI a 60 segundos.
$ 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
Aumente el límite de memoria para PHP-FPM de 128 MB a 256 MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
Reinicie el servicio PHP-FPM.
$ sudo systemctl restart php8.1-fpm
Cambie el grupo del directorio de sesiones de PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Configurar Nginx
Cree y abra el archivo /etc/nginx/conf.d/wallabag.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/wallabag.conf
Pegue el siguiente código en él.
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;
}
Observe que el directorio raíz que se utilizará en la configuración de Nginx es /var/www/html/wallabag/public/
.
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.
Abra el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Verifique la sintaxis del archivo de configuración 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
Reinicie el servicio Nginx.
$ sudo systemctl restart nginx
Paso 10: acceda a Wallabag
Abra la URL https://wallabag.example.com
en su navegador y aparecerá la siguiente pantalla de inicio de sesión.
Ingrese sus credenciales creadas durante la instalación y presione el botón INICIAR SESIÓN para continuar. Serás recibido con el panel de Wallabag.
Wallabag le proporciona una multitud de aplicaciones para cada navegador, dispositivo móvil o lector de libros electrónicos mediante las cuales puede agregar enlaces. Y si no le apetece nada más, incluso puede utilizar un Bookmarklet, a cuyos detalles puede acceder desde la sección Cómo
haciendo clic en el icono de usuario en la parte superior derecha del panel.
Se le proporcionarán enlaces a las extensiones del navegador, aplicaciones móviles y al marcador de Wallabag.
Eso es todo. Puede comenzar a usar Wallabag para guardar artículos para leerlos más tarde.
Conclusión
Con esto concluye nuestro tutorial sobre la instalación de Wallabag en un servidor Ubuntu 22.04. Si tiene alguna pregunta, publíquela en los comentarios a continuación.