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 -yAlguns 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.

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.

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.

Você receberá links para as extensões do navegador, aplicativos móveis e o bookmarklet 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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.