Instalação · 15 min read · Dec 19, 2025

Como Instalar Wallabag no Ubuntu 22.04

Wallabag é um serviço do tipo leia-depois. Ele permite que você salve páginas da web para ler mais tarde no seu próprio ritmo. Existem muitos serviços que permitem fazer isso, como Pocket, Instapaper, etc, mas ter um serviço instalado em um servidor que você possui é muito melhor. Por um lado, ele não vai falir e levar os links junto.

Este tutorial abordará a instalação e configuração do Wallabag em um servidor rodando Ubuntu 22.04. Também abordará como configurar Nginx, MySQL, Composer e PHP, que são todos necessários para o Wallabag funcionar.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04.
  • Um usuário não-root com privilégios sudo.
  • Um nome de domínio totalmente qualificado (FQDN) como wallabag.example.com.
  • Certifique-se de que tudo esteja atualizado. $ sudo apt update $ sudo apt upgrade
  • Alguns pacotes que seu sistema precisa. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alguns desses pacotes podem já estar instalados em seu sistema.

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Ubuntu vem com ufw (Uncomplicated Firewall) por padrão.

Verifique se o firewall está em execução.

$ sudo ufw status

Você deve obter a seguinte saída.

Status: inactive

Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.

$ sudo ufw allow OpenSSH

Permita também as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Ative o Firewall

$ sudo ufw enable
Comando pode interromper conexões ssh existentes. Prosseguir com a operação (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema

Verifique o status do firewall novamente.

$ sudo ufw status

Você deve ver uma saída semelhante.

Status: active

Para                         Ação      De
--                         ------      ----
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)

Passo 2 - Instalar PHP e suas extensões

O Ubuntu 22.04 vem com a versão PHP 8.1.2, que está um pouco desatualizada. Vamos instalar a versão mais recente do PHP 8.1 usando o repositório PHP do Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Em seguida, instale o PHP e suas extensões necessárias para o 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 a instalação.

$ 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

Passo 3 - Instalar o Composer

O Composer é uma ferramenta de gerenciamento de dependências para PHP e é necessária para a instalação do Wallabag.

Execute os seguintes comandos para baixar o binário do Composer. O Wallabag só funciona com o Composer 2.2 LTS, então modificamos o comando de acordo.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Instale o Composer movendo o binário para o diretório /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Verifique a instalação verificando sua versão.

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

Passo 4 - Instalar MySQL

O Ubuntu 22.04 vem com a versão mais recente do MySQL. Você pode instalá-lo com um único comando.

$ sudo apt install mysql-server

Verifique a versão do MySQL.

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Este passo é necessário para versões do MySQL 8.0.28 e superiores. Acesse o Shell do MySQL.

$ sudo mysql

Execute o seguinte comando para definir a senha do seu usuário root. Certifique-se de que tenha uma mistura de números, letras maiúsculas, minúsculas e caracteres especiais.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Saia do shell.

mysql> exit

Execute o script de instalação segura do MySQL.

$ sudo mysql_secure_installation

Primeiro, você será solicitado a inserir sua senha root. Digite-a. Em seguida, você será solicitado a instalar o Componente de Validação de Senha. Ele verifica a força das senhas usadas no MySQL. Pressione Y para instalá-lo. Em seguida, você será solicitado a definir o nível da política de validação de senhas. Escolha 2, pois é o mais forte.

Proteger a implantação do servidor MySQL.

Digite a senha para o usuário root:

O COMPONENTE DE VALIDAÇÃO DE SENHA pode ser usado para testar senhas
e melhorar a segurança. Ele verifica a força da senha
e permite que os usuários definam apenas aquelas senhas que são
suficientemente seguras. Você gostaria de configurar o componente de VALIDAÇÃO DE SENHA?

Pressione y|Y para Sim, qualquer outra tecla para Não: Y

Existem três níveis de política de validação de senha:

BAIXO    Comprimento >= 8
MÉDIO Comprimento >= 8, numérico, letras mistas e caracteres especiais
FORTE Comprimento >= 8, numérico, letras mistas, caracteres especiais e dicionário                  arquivo

Por favor, insira 0 = BAIXO, 1 = MÉDIO e 2 = FORTE: 2
Usando a senha existente para root.

Força estimada da senha: 100

Em seguida, digite N para recusar a alteração da sua senha root. Além disso, digite Y para remover usuários anônimos, desabilitar logins remotos de root, remover o banco de dados de teste e recarregar as tabelas de privilégios.

Alterar a senha para root? ((Pressione y|Y para Sim, qualquer outra tecla para Não) : N

 ... pulando.
Por padrão, uma instalação do MySQL tem um usuário anônimo,
permitindo que qualquer pessoa faça login no MySQL sem ter
uma conta de usuário criada para ela. Isso é destinado apenas para
teste, e para tornar a instalação um pouco mais suave.
Você deve removê-los antes de passar para um ambiente de produção.

Remover usuários anônimos? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Normalmente, o root deve ser permitido apenas conectar-se de
'localhost'. Isso garante que alguém não possa adivinhar a
senha root pela rede.

Desabilitar login remoto de root? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Por padrão, o MySQL vem com um banco de dados chamado 'teste' que
qualquer um pode acessar. Isso também é destinado apenas para teste,
e deve ser removido antes de passar para um ambiente de produção.

Remover banco de dados de teste e acesso a ele? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
 - Removendo banco de dados de teste...
Sucesso.

 - Removendo privilégios no banco de dados de teste...
Sucesso.

Recarregar as tabelas de privilégios garantirá que todas as alterações
feitas até agora tenham efeito imediato.

Recarregar tabelas de privilégios agora? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Tudo pronto!

Passo 5 - Configurar MySQL

Faça login no shell do MySQL. Digite sua senha root quando solicitado.

$ sudo mysql -u root -p

Crie um banco de dados de exemplo.

mysql> CREATE DATABASE wallabag;

Crie uma conta de usuário SQL.

mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';

Conceda todos os privilégios no banco de dados ao usuário.

mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';

Atualize os privilégios do usuário.

mysql> FLUSH PRIVILEGES;

Saia do shell.

mysql> exit

Passo 6 - Instalar Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Você precisa baixar o repositório oficial do Nginx para instalar a versão mais recente.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do 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

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.22.1

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 7 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Nós usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/wallabag.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifique o serviço do agendador de renovação do Certbot.

$ sudo systemctl list-timers

Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.

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

Faça um teste do processo para verificar se a renovação do SSL está funcionando corretamente.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 8 - Instalar Wallabag

Crie o diretório /var/www/wallabag/html.

$ sudo mkdir /var/www/html/wallabag -p

Baixe a versão mais recente do Wallabag.

$ wget https://wllbg.org/latest-v2-package

Extraia o arquivo.

$ tar xzf latest-v2-package

Mova os arquivos do diretório extraído para o diretório criado anteriormente. Você pode verificar a versão mais recente do Wallabag na página de lançamentos do GitHub. A versão mais recente no momento da redação deste tutorial é 2.5.4.

$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag

Crie o diretório de ativos.

$ sudo mkdir /var/www/html/wallabag/data/assets

Altere as permissões do diretório /var/www/html/wallabag para o usuário atualmente logado.

$ sudo chown -R $USER:$USER /var/www/html/wallabag

Mude para o diretório.

$ cd /var/www/html/wallabag

Crie o arquivo parameters.yml copiando o arquivo de exemplo.

$ cp app/config/parameters.yml.dist app/config/parameters.yml

Antes de começarmos a configurar o Wallabag, gere uma chave secreta. Anote a chave para ser usada mais tarde.

$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

Abra o arquivo de parâmetros para edição.

$ nano app/config/parameters.yml

Encontre a seguinte seção e preencha as credenciais do banco de dados. A porta do banco de dados é 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  

Preencha a descrição do servidor e o nome do domínio.

    domain_name: https://wallabag.example.com  
    server_name: "Howtoforge Wallabag"  

Preencha seus detalhes SMTP. No nosso caso, estamos usando o serviço 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  

Preencha a chave secreta gerada anteriormente. Se você quiser manter a autenticação de dois fatores, certifique-se de que as seguintes configurações sejam aplicadas. Se você quiser desativar o registro de usuários, defina o valor de fouser_registration como false. A variável fouser_confirmation está definida como verdadeira, o que significa que cada registro de usuário precisará ser confirmado por e-mail. Altere o valor da variável from_email para o e-mail de sua escolha.

    # Uma chave secreta que é usada para gerar certos tokens relacionados à segurança  
    secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=  

    # coisas de dois fatores  
    twofactor_auth: true  
    twofactor_sender: [email protected]  

    # coisas do fosuser  
    fosuser_registration: true  
    fosuser_confirmation: true  
.....  
    from_email: [email protected]  
.....  

Existem mais sentinelas relacionadas ao Redis, RabbitMQ e configurações do Sentry. Você pode configurá-las conforme suas necessidades após instalar os pacotes mencionados.

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Use o Composer para baixar e instalar as dependências necessárias para o Wallabag.

$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist

Finalize a instalação usando a ferramenta de linha de comando do Wallabag.

$ php bin/console wallabag:install --env=prod

Você será solicitado se deseja redefinir o banco de dados e seu esquema. Digite no como resposta ambas as vezes. Em seguida, você será perguntado se deseja criar uma conta de administrador. Digite yes para prosseguir e insira o nome de usuário, senha e e-mail para a conta.

wallabag installer
==================

Passo 1 de 4: Verificando requisitos do sistema.
------------------------------------------

 ------------------------ -------- ---------------- 
  Verificado                  Status   Recomendação  
 ------------------------ -------- ---------------- 
  PDO Driver (pdo_mysql)   OK!                      
  Conexão com o banco de dados      OK!                      
  Versão do banco de dados         OK!                      
  curl_exec                OK!                      
  curl_multi_init          OK!                      
 ------------------------ -------- ---------------- 

 [OK] Sucesso! Seu sistema pode rodar o wallabag corretamente.                                                                    
                                                                                                                         

Passo 2 de 4: Configurando o banco de dados.
---------------------------------

 Parece que seu banco de dados já existe. Você gostaria de redefini-lo? (sim/não) [não]:
 > não

 Parece que seu banco de dados contém esquema. Você deseja redefini-lo? (sim/não) [não]:
 > não

 Limpando o cache...

 Banco de dados configurado com sucesso.

Passo 3 de 4: Configuração da administração.
----------------------------------

 Você gostaria de criar um novo usuário administrador (recomendado)? (sim/não) [sim]:
 > sim

 Nome de usuário [wallabag]:
 > navjot

 Senha [wallabag]:
 > 

 E-mail [[email protected]]:
 > [email protected]

 Configuração da administração concluída com sucesso.

Passo 4 de 4: Configuração.
--------------------------

 Configuração concluída com sucesso.
                                                                                                 
 [OK] wallabag foi instalado com sucesso.                                                                                 
                                                                                                                      
 [OK] Agora você pode configurar seu servidor web, veja https://doc.wallabag.org

Mude novamente a permissão do diretório para o Nginx.

$ sudo chown -R nginx:nginx /var/www/html/wallabag

Passo 9 - Configurar Nginx e PHP

Configurar PHP-FPM

Abra o arquivo /etc/php/8.1/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Precisamos definir o usuário/grupo Unix dos processos PHP para nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere para nginx.

...
; Usuário/grupo Unix dos processos
; Nota: O usuário é obrigatório. Se o grupo não for definido, o grupo do usuário padrão
;       será usado.
; RPM: usuário apache escolhido para fornecer acesso aos mesmos diretórios que httpd
user = nginx
; RPM: Mantenha um grupo permitido para escrever no diretório de log.
group = nginx
...

Encontre as linhas listen.owner = www-data e listen.group = www-data no arquivo e altere para nginx.

; Defina permissões para o socket unix, se um for usado. No Linux, leitura/escrita
; permissões devem ser definidas para permitir conexões de um servidor web. Muitos
; sistemas derivados do BSD permitem conexões independentemente das permissões. O proprietário
; e grupo podem ser especificados pelo nome ou pelos seus IDs numéricos.
; Valores Padrão: usuário e grupo são definidos como o usuário em execução
;                 modo é definido como 0660
listen.owner = nginx
listen.group = nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Aumente o tempo de execução para PHP-FPM e PHP-CLI para 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 o limite de memória para PHP-FPM de 128MB para 256MB.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Altere o grupo do diretório de sessões PHP para Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Configurar Nginx

Crie e abra o arquivo /etc/nginx/conf.d/wallabag.conf para edição.

$ sudo nano /etc/nginx/conf.d/wallabag.conf

Cole o seguinte código nele.

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;
    }

    # Passar Scripts PHP para o Servidor FastCGI
    location ~ ^/app\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depende da versão do PHP
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }
}

# forçar HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  wallabag.example.com;
    return 301   https://$host$request_uri;
}

Observe que o diretório raiz a ser usado na configuração do Nginx é /var/www/html/wallabag/public/.

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique a sintaxe do arquivo de configuração do Nginx.

$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf a sintaxe está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf bem-sucedido

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Passo 10 - Acessar Wallabag

Abra a URL https://wallabag.example.com em seu navegador e você verá a seguinte tela de login.

Tela de Login do Wallabag

Digite suas credenciais criadas durante a instalação e pressione o botão LOG IN para prosseguir. Você será recebido com o painel do Wallabag.

Painel do Wallabag

Wallabag fornece uma infinidade de aplicativos para cada navegador, celular ou leitor de Ebook, com os quais você pode adicionar links. E se nada mais lhe agradar, você pode até usar um Bookmarklet, cujos detalhes você pode acessar na seção Como clicando no ícone do usuário no canto superior direito do painel.

Menu suspenso do usuário do Wallabag

Você receberá links para as extensões do navegador, aplicativos móveis e o bookmarklet do Wallabag.

Página Howto do Wallabag

É isso. Você pode começar a usar o Wallabag para salvar artigos para leitura posterior.

Conclusão

Isso conclui nosso tutorial sobre como instalar o Wallabag em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.