Búsqueda de sitios web

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.

Artículos relacionados: