Instalación · 15 min read · Dec 19, 2025
Cómo instalar Wallabag en Ubuntu 22.04

Wallabag es un servicio de tipo leer-después. Te permite guardar páginas web para leer más tarde a tu propio ritmo. Hay muchos servicios que te permiten hacerlo como Pocket, Instapaper, etc., pero tener un servicio instalado en un servidor que posees es mucho mejor. Por un lado, no se irá a la quiebra y no eliminará los enlaces con él.
Este tutorial cubrirá la instalación y configuración de Wallabag en un servidor que ejecute Ubuntu 22.04. También cubrirá cómo configurar Nginx, MySQL, Composer y PHP, que son todos necesarios para que Wallabag funcione.
Prerrequisitos
- Un servidor que ejecute Ubuntu 22.04.
- Un usuario no root con privilegios de sudo.
- Un nombre de dominio completamente calificado (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 -yAlgunos de estos paquetes pueden ya estar instalados en tu sistema.
Paso 1 - Configurar el Firewall
El primer paso es configurar el firewall. Ubuntu viene con ufw (Uncomplicated Firewall) por defecto.
Verifica si el firewall está en funcionamiento.
$ sudo ufw status
Deberías obtener la siguiente salida.
Estado: inactivo
Permite el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSH
Permite también los puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Habilita el Firewall
$ sudo ufw enable
El comando puede interrumpir conexiones ssh existentes. ¿Proceder con la operación (y|n)? y
El firewall está activo y habilitado al inicio del sistema
Verifica el estado del firewall nuevamente.
$ sudo ufw status
Deberías ver una salida similar.
Estado: activo
Para Acción Desde
-- ------ ----
OpenSSH PERMITIR En cualquier lugar
80/tcp PERMITIR En cualquier lugar
443 PERMITIR En cualquier lugar
OpenSSH (v6) PERMITIR En cualquier lugar (v6)
80/tcp (v6) PERMITIR En cualquier lugar (v6)
443 (v6) PERMITIR En cualquier lugar (v6)
Paso 2 - Instalar 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 usando el repositorio de PHP de Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
A continuación, instala 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
Verifica la instalación.
$ php --version
PHP 8.1.16 (cli) (construido: Feb 14 2023 18:35:37) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
con Zend OPcache v8.1.16, Copyright (c), de Zend Technologies
Paso 3 - Instalar Composer
Composer es una herramienta de gestión de dependencias para PHP y es necesaria para la instalación de Wallabag.
Ejecuta los siguientes comandos para descargar el binario de Composer. Wallabag solo funciona con Composer 2.2 LTS, así que hemos modificado 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');"
Instala Composer moviendo el binario al directorio /usr/local/bin.
$ sudo mv composer.phar /usr/local/bin/composer
Verifica la instalación comprobando su versión.
$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40
Paso 4 - Instalar MySQL
Ubuntu 22.04 viene con la última versión de MySQL. Puedes instalarlo con un solo comando.
$ sudo apt install mysql-server
Verifica la versión de MySQL.
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 para Linux en x86_64 ((Ubuntu))
Este paso es necesario para las versiones de MySQL 8.0.28 y superiores. Ingresa al Shell de MySQL.
$ sudo mysql
Ejecuta el siguiente comando para establecer la contraseña de tu usuario root. Asegúrate de que tenga una mezcla de números, mayúsculas, minúsculas y caracteres especiales.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Sal del shell.
mysql> exit
Ejecuta el script de instalación segura de MySQL.
$ sudo mysql_secure_installation
Primero, se te pedirá tu contraseña de root. Ingrésala. A continuación, se te pedirá que instales el Componente de Validación de Contraseña. Verifica la fortaleza de las contraseñas utilizadas en MySQL. Presiona Y para instalarlo. A continuación, se te pedirá que establezcas el nivel de la política de validación de contraseñas. Elige 2 ya que es el más fuerte.
Asegurando la implementación del servidor MySQL.
Ingresa la contraseña para el usuario root:
EL COMPONENTE DE VALIDACIÓN DE CONTRASEÑA se puede usar para probar contraseñas
y mejorar la seguridad. Verifica la fortaleza de la contraseña
y permite a los usuarios establecer solo aquellas contraseñas que son
es suficientemente seguras. ¿Te gustaría configurar el componente de VALIDACIÓN DE CONTRASEÑA?
Presiona y|Y para Sí, cualquier otra tecla para No: Y
Hay tres niveles de política de validación de contraseñas:
BAJO Longitud >= 8
MEDIO Longitud >= 8, numérico, mayúsculas y minúsculas, y caracteres especiales
FUERTE Longitud >= 8, numérico, mayúsculas y minúsculas, caracteres especiales y archivo de diccionario
Por favor, ingresa 0 = BAJO, 1 = MEDIO y 2 = FUERTE: 2
Usando la contraseña existente para root.
Fortaleza estimada de la contraseña: 100
A continuación, ingresa N para rechazar cambiar tu contraseña de root. También, ingresa Y para eliminar usuarios anónimos, deshabilitar inicios de sesión remotos de root, eliminar la base de datos de prueba y recargar las tablas de privilegios.
¿Cambiar la contraseña para root? ((Presiona y|Y para Sí, cualquier otra tecla para No) : N
... omitiendo.
Por defecto, una instalación de MySQL tiene un usuario anónimo,
permitiendo que cualquiera inicie sesión en MySQL sin tener que tener
una cuenta de usuario creada para ellos. Esto está destinado solo para
testing, y para hacer que la instalación sea un poco más fluida.
Deberías eliminarlos antes de pasar a un entorno de producción.
¿Eliminar usuarios anónimos? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
Normalmente, root solo debería poder conectarse desde
'localhost'. Esto asegura que alguien no pueda adivinar la
contraseña de root desde la red.
¿Deshabilitar el inicio de sesión remoto de root? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
Por defecto, MySQL viene con una base de datos llamada 'test' que
cualquiera puede acceder. Esto también está destinado solo para testing,
y debe ser eliminado antes de pasar a un entorno de producción.
¿Eliminar la base de datos de prueba y el acceso a ella? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
- Eliminando la base de datos de prueba...
Éxito.
- Eliminando privilegios en la base de datos de prueba...
Éxito.
Recargar las tablas de privilegios asegurará que todos los cambios
realizados hasta ahora surtan efecto de inmediato.
¿Recargar tablas de privilegios ahora? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
¡Todo listo!
Paso 5 - Configurar MySQL
Inicia sesión en el shell de MySQL. Ingresa tu contraseña de root cuando se te solicite.
$ sudo mysql -u root -p
Crea una base de datos de muestra.
mysql> CREATE DATABASE wallabag;
Crea una cuenta de usuario SQL.
mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';
Otorga todos los privilegios en la base de datos al usuario.
mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';
Actualiza los privilegios del usuario.
mysql> FLUSH PRIVILEGES;
Sal del shell.
mysql> exit
Paso 6 - Instalar Nginx
Ubuntu 22.04 viene con una versión más antigua de Nginx. Necesitas descargar el repositorio oficial de Nginx para instalar la última versión.
Importa 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
Agrega 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
Actualiza los repositorios del sistema.
$ sudo apt update
Instala Nginx.
$ sudo apt install nginx
Verifica la instalación.
$ nginx -v
nginx version: nginx/1.22.1
Inicia el servidor Nginx.
$ sudo systemctl start nginx
Paso 7 - Instalar SSL
Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot usando el repositorio de Ubuntu o obtener la última versión usando la herramienta Snapd. Usaremos la versión de Snapd.
Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd esté actualizada.
$ sudo snap install core && sudo snap refresh core
Instala Certbot.
$ sudo snap install --classic certbot
Usa el siguiente comando para asegurarte de que el comando Certbot pueda ejecutarse creando un enlace simbólico al directorio /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ejecuta el siguiente comando para generar un Certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/wallabag.example.com en tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Verifica el servicio programador de renovación de Certbot.
$ sudo systemctl list-timers
Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Dom 2023-02-26 06:32:00 UTC 9h left Sáb 2023-02-25 18:04:05 UTC 2h 59min ago snap.certbot.renew.timer snap.certbot.renew.service
Dom 2023-02-26 06:43:20 UTC 9h left Sáb 2023-02-25 10:49:23 UTC 10h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Dom 2023-02-26 09:00:06 UTC 11h left Sáb 2023-02-25 20:58:06 UTC 5min ago apt-daily.timer apt-daily.service
Haz una prueba en seco del proceso para verificar si la renovación de SSL está funcionando correctamente.
$ sudo certbot renew --dry-run
Si no ves errores, estás listo. Tu certificado se renovará automáticamente.
Paso 8 - Instalar Wallabag
Crea 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
Mueve los archivos del directorio extraído al directorio creado anteriormente. Puedes verificar la última versión de Wallabag en 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
Crea el directorio de activos.
$ sudo mkdir /var/www/html/wallabag/data/assets
Cambia 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
Cambia al directorio.
$ cd /var/www/html/wallabag
Crea 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, genera una clave secreta. Anota la clave para usarla más tarde.
$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=
Abre el archivo de parámetros para editar.
$ nano app/config/parameters.yml
Encuentra la siguiente sección y completa 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
Completa la descripción del servidor y el nombre de dominio.
domain_name: https://wallabag.example.com
server_name: "Howtoforge Wallabag"
Completa tus detalles SMTP. En nuestro caso, estamos usando 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
Completa la clave secreta generada anteriormente. Si deseas mantener la autenticación de dos factores, asegúrate de que se apliquen las siguientes configuraciones. Si deseas desactivar el registro de usuarios, establece el valor de fouser_registration en false. La variable fouser_confirmation está configurada en true, lo que significa que cada registro de usuario necesitará ser confirmado por correo electrónico. Cambia el valor de la variable from_email a la dirección de correo electrónico de tu elección.
# Una clave secreta que se usa para generar ciertos tokens relacionados con la seguridad
secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=
# cosas de dos factores
twofactor_auth: true
twofactor_sender: [email protected]
# cosas de fosuser
fosuser_registration: true
fosuser_confirmation: true
.....
from_email: [email protected]
.....
Hay más sentencias relacionadas con Redis, RabbitMQ y configuraciones de Sentry. Puedes configurarlas según tus necesidades después de instalar los paquetes mencionados.
Guarda el archivo presionando Ctrl + X y luego ingresando Y cuando se te solicite.
Usa Composer para descargar e instalar las dependencias requeridas por Wallabag.
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
Finaliza la instalación usando la herramienta de línea de comandos de Wallabag.
$ php bin/console wallabag:install --env=prod
Se te preguntará si deseas restablecer la base de datos y su esquema. Ingresa no como respuesta ambas veces. A continuación, se te preguntará si deseas crear una cuenta de administrador. Escribe yes para continuar e ingresa el nombre de usuario, la contraseña y la dirección de correo electrónico para la cuenta.
instalador de wallabag
==================
Paso 1 de 4: Verificando requisitos del sistema.
------------------------------------------
------------------------ -------- ----------------
Verificado Estado Recomendación
------------------------ -------- ----------------
PDO Driver (pdo_mysql) ¡OK!
Conexión a la base de datos ¡OK!
Versión de la base de datos ¡OK!
curl_exec ¡OK!
curl_multi_init ¡OK!
------------------------ -------- ----------------
[¡OK!] ¡Éxito! Tu sistema puede ejecutar wallabag correctamente.
Paso 2 de 4: Configurando la base de datos.
---------------------------------
Parece que tu base de datos ya existe. ¿Te gustaría restablecerla? (sí/no) [no]:
> no
Parece que tu base de datos contiene esquema. ¿Quieres restablecerlo? (sí/no) [no]:
> no
Limpiando la caché...
Base de datos configurada con éxito.
Paso 3 de 4: Configuración de administración.
----------------------------------
¿Te gustaría crear un nuevo usuario administrador (recomendado)? (sí/no) [sí]:
> sí
Nombre de usuario [wallabag]:
> navjot
Contraseña [wallabag]:
>
Correo electrónico [[email protected]]:
> [email protected]
Administración configurada con éxito.
Paso 4 de 4: Configuración de config.
--------------------------
Configuración configurada con éxito.
[¡OK!] wallabag se ha instalado con éxito.
[¡OK!] Ahora puedes configurar tu servidor web, consulta https://doc.wallabag.org
Cambia de nuevo los permisos del directorio a Nginx.
$ sudo chown -R nginx:nginx /var/www/html/wallabag
Paso 9 - Configurar Nginx y PHP
Configurar PHP-FPM
Abre el archivo /etc/php/8.1/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Necesitamos establecer el usuario/grupo Unix de los procesos PHP en nginx. Encuentra las líneas user=www-data y group=www-data en el archivo y cámbialas a nginx.
...
; Usuario/grupo Unix de procesos
; Nota: El usuario es obligatorio. Si el grupo no está establecido, se usará el grupo del usuario predeterminado
; se usará.
; RPM: usuario de apache elegido para proporcionar acceso a los mismos directorios que httpd
user = nginx
; RPM: Mantener un grupo permitido para escribir en el directorio de registros.
group = nginx
...
Encuentra las líneas listen.owner = www-data y listen.group = www-data en el archivo y cámbialas a nginx.
; Establecer permisos para el socket unix, si se usa uno. En Linux, leer/escribir
; los permisos deben establecerse para permitir conexiones desde un servidor web. Muchos
; sistemas derivados de BSD permiten conexiones independientemente de los permisos. El propietario
; y el grupo pueden especificarse ya sea por nombre o por sus IDs numéricos.
; Valores predeterminados: el usuario y el grupo se establecen como el usuario en ejecución
; el modo se establece en 0660
listen.owner = nginx
listen.group = nginx
Guarda el archivo presionando Ctrl + X y luego ingresando Y cuando se te solicite.
Aumenta el tiempo de ejecución para 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
Aumenta el límite de memoria para PHP-FPM de 128MB a 256MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
Reinicia el servicio PHP-FPM.
$ sudo systemctl restart php8.1-fpm
Cambia el grupo del directorio de sesiones de PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Configurar Nginx
Crea y abre el archivo /etc/nginx/conf.d/wallabag.conf para editar.
$ sudo nano /etc/nginx/conf.d/wallabag.conf
Pega 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;
}
# Pasar scripts PHP al servidor FastCGI
location ~ ^/app\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depende de la versión de PHP
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
include fastcgi_params;
internal;
}
location ~ \.php$ {
return 404;
}
}
# forzar HTTPS
server {
listen 80;
listen [::]:80;
server_name wallabag.example.com;
return 301 https://$host$request_uri;
}
Nota que el directorio raíz que se usará en la configuración de Nginx es /var/www/html/wallabag/public/.
Guarda el archivo presionando Ctrl + X y luego ingresando Y cuando se te solicite al finalizar.
Abre el archivo /etc/nginx/nginx.conf para editar.
$ sudo nano /etc/nginx/nginx.conf
Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Guarda el archivo presionando Ctrl + X y luego ingresando Y cuando se te solicite.
Verifica la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa
Reinicia el servicio Nginx.
$ sudo systemctl restart nginx
Paso 10 - Acceder a Wallabag
Abre la URL https://wallabag.example.com en tu navegador y verás la siguiente pantalla de inicio de sesión.

Ingresa tus credenciales creadas durante la instalación y presiona el botón INICIAR SESIÓN para continuar. Serás recibido con el panel de control de Wallabag.

Wallabag te proporciona una multitud de aplicaciones para cada navegador, móvil o lector de Ebook con las que puedes agregar enlaces. Y si nada más te gusta, incluso puedes usar un Bookmarklet, cuyos detalles puedes acceder desde la sección Cómo haciendo clic en el ícono de usuario en la parte superior derecha del panel de control.

Se te darán enlaces a las extensiones del navegador, aplicaciones móviles y el bookmarklet de Wallabag.

Eso es todo. Puedes comenzar a usar Wallabag para guardar artículos para leer más tarde.
Conclusión
Esto concluye nuestro tutorial sobre la instalación de Wallabag en un servidor Ubuntu 22.04. Si tienes alguna pregunta, publícalas en los comentarios a continuación.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.