Установка Wallabag на Rocky Linux 9
Wallabag — self-hosted сервис «чтобы прочитать позже». В этой инструкции пошагово показано, как установить Wallabag на сервер с Rocky Linux 9: подготовка системы, установка PHP 8.1 и расширений, Composer, MySQL, Nginx, Certbot (SSL), настройка SELinux, запуск Wallabag и базовая безопасность. Включены чек-листы для администратора, отладка, резервное копирование и советы по обновлению.
Важно: в примерах используется домен wallabag.example.com. Замените его на ваш FQDN и используйте сильные пароли.

Wallabag — это self-hosted сервис для сохранения веб-страниц и чтения их позже без зависимости от сторонних сервисов. В отличие от облачных решений, установленный на вашем сервере экземпляр остаётся под вашим контролем и не исчезнет, если провайдер закроется.
Эта инструкция охватывает установку Wallabag на Rocky Linux 9 и настройку необходимых компонентов: Nginx, MySQL, Composer и PHP.
О чём эта инструкция
- Подготовка сервера и необходи́мые пакеты
- Конфигурация брандмауэра
- Установка PHP 8.1 и расширений
- Установка Composer
- Установка MySQL и создание базы
- Установка Nginx и SSL через Certbot
- Установка и финальная настройка Wallabag
- SELinux и разрешения
- Безопасность, резервные копии, восстановление и отладка
Кому это нужно
- Системным администраторам и DevOps, которые хотят self-hosted решение для «read-it-later»
- Пользователям, которые ценят конфиденциальность и контроль над данными
Требования перед началом
- Сервер с Rocky Linux 9
- Неразрешённый пользователь с sudo-привилегиями
- Полное доменное имя (FQDN), например
wallabag.example.com - Обновлённая система
Выполните обновление пакетов:
$ sudo dnf updateУстановите базовые утилиты:
$ sudo dnf install wget curl nano unzip yum-utils -yНекоторые пакеты могут быть уже установлены.
Основные шаги и структура
- Настройка брандмауэра
- Установка PHP 8.1 и расширений
- Composer
- MySQL
- Nginx
- SSL (Certbot)
- Установка Wallabag
- SELinux и права
- Конфигурация Nginx и PHP-FPM
- Проверка и отладка
Шаблоны ролей и ответственность
- DevOps/администратор: установка и настройка сервисов (PHP, MySQL, Nginx, Certbot), SELinux, резервное копирование.
- Владелец сервиса: администрирование пользователей Wallabag, настройка почты и политики регистрации.
- Разработчик/интегратор: интеграция внешних приложений, API-ключи, миграции данных.
1. Настройка брандмауэра
Rocky Linux использует firewalld. Проверьте статус:
$ sudo firewall-cmd --state
runningПроверьте активные службы в зоне public (по умолчанию):
$ sudo firewall-cmd --permanent --list-servicesОткройте порты HTTP и HTTPS:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reloadПовторно проверьте список служб:
$ sudo firewall-cmd --permanent --list-servicesВ выводе должны присутствовать http и https.
Важно: если сервер находится за дополнительным внешним фаерволом (облачный безопасности), откройте порты и там.
2. Установка PHP и расширений
Wallabag требует PHP 8.1. Подготовьте репозитории EPEL и Remi:
$ sudo dnf install epel-release -y
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpmПроверьте доступные потоки PHP:
$ dnf module list php -yСбросьте текущий модуль и включите remi-8.1:
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1Установите PHP и необходимые расширения:
$ sudo dnf install php-fpm php-mysql php-bcmath php-xml php-zip php-curl php-mbstring php-gd php-tidy php-intl php-cli php-opcacheПроверьте версию PHP:
$ php --version
PHP 8.1.x (cli)Конфигурация PHP-FPM: откройте /etc/php-fpm.d/www.conf и смените пользователя и группу на nginx (фрагменты ниже — точные строки в файле):
user = nginx
group = nginxНастройте права сокета:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
;listen.acl_users = apache,nginxПрисвойте права каталогу с сессиями:
$ sudo chown -R nginx:nginx /var/lib/php/session/Включите и запустите php-fpm:
$ sudo systemctl enable php-fpm --nowВажно: имена файлов конфигурации могут отличаться в зависимости от пакета PHP в вашей системе. В Rocky Linux 9 используйте вывод команды, чтобы найти точный путь.
3. Установка Composer
Composer — менеджер зависимостей PHP. Wallabag требует Composer 2.2 LTS. Скачайте и установите Composer 2.2:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 2.2.x4. Установка MySQL
Установите MySQL server:
$ sudo dnf install mysql-server
$ sudo systemctl enable mysqld --now
$ mysql --versionЗапустите скрипт безопасной настройки MySQL:
$ sudo mysql_secure_installationВ процессе включите Validate Password Component и выберите уровень 2 (STRONG). Затем задайте пароль root и удалите анонимных пользователей, запретите удалённый вход для root и удалите тестовую базу.
Создайте базу и пользователя для Wallabag:
$ sudo mysql -u root -p
mysql> CREATE DATABASE wallabag;
mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exitВажно: замените Your_password2 на надёжный пароль или используйте менеджер секретов.
5. Установка Nginx
Добавьте официальный репозиторий Nginx, создав /etc/yum.repos.d/nginx.repo с содержимым ниже, затем установите пакет:
$ sudo nano /etc/yum.repos.d/nginx.repo(Вставьте содержимое репозитория как в исходной инструкции)
$ sudo dnf install -y nginx
$ sudo systemctl enable nginx --now
$ nginx -vПроверьте статус сервера:
$ sudo systemctl status nginx6. Установка SSL с помощью Certbot
Установим Certbot через snapd. Snap может требовать EPEL (уже установлен ранее).
$ sudo dnf install -y snapd
$ sudo systemctl enable snapd --now
$ sudo snap install core && sudo snap refresh core
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --versionСоздайте сертификат (замените email и домен):
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.comСертификаты сохраняются в /etc/letsencrypt/live/wallabag.example.com.
Сгенерируйте Diffie-Hellman параметры:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Проверьте таймеры systemd и сделайте пробное продление:
$ sudo systemctl list-timers
$ sudo certbot renew --dry-runЕсли ошибок нет — автоматическое продление настроено.
7. Установка Wallabag
Создайте каталог сайта и загрузите пакет Wallabag:
$ sudo mkdir /var/www/html/wallabag -p
$ wget https://wllbg.org/latest-v2-package
$ tar xzf latest-v2-packageПереместите файлы в целевой каталог (замените номер версии, если нужно):
$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag
$ sudo mkdir /var/www/html/wallabag/data/assets
$ sudo chown -R $USER:$USER /var/www/html/wallabag
$ cd /var/www/html/wallabag
$ cp app/config/parameters.yml.dist app/config/parameters.ymlСгенерируйте секретный ключ:
$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=Откройте app/config/parameters.yml и заполните данные подключения к базе и параметры сервера:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: 3306
database_name: wallabag
database_user: wallabaguser
database_password: Your_password2
domain_name: https://wallabag.example.com
server_name: "Howtoforge Wallabag"
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
secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=
twofactor_auth: true
twofactor_sender: [email protected]
fosuser_registration: true
fosuser_confirmation: true
from_email: [email protected]Настройте дополнительные интеграции (Redis, RabbitMQ, Sentry) при необходимости.
Установите зависимости Composer для production окружения:
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-distЗапустите инсталлятор Wallabag:
$ php bin/console wallabag:install --env=prodВо время установки выберите no для сброса базы (если вы хотите сохранить данные), затем создайте администратора.
После установки переключите права на nginx:
$ sudo chown -R nginx:nginx /var/www/html/wallabag8. SELinux и контексты безопасности
Для корректной работы при включённом SELinux примените контексты:
$ sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/wallabag(/.*)?"
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wallabag/data(/.*)?"
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/html/wallabag/var/logs(/.*)?"
$ sudo semanage fcontext -a -t httpd_cache_t "/var/www/html/wallabag/var/cache(/.*)?"
$ sudo restorecon -R -v /var/www/html/wallabag
$ sudo setsebool -P httpd_can_network_connect_db 1Важно: если на вашей системе команда semanage отсутствует, установите пакет policycoreutils-python-utils.
9. Настройка PHP-FPM и Nginx
Настройка PHP-FPM (файлы могут находиться по путям, отличным от демонстрационных):
Откройте конфигурацию пула и замените пользователя и группу на nginx, настройте права сокета, как описано ранее.
Увеличьте время выполнения и память в php.ini:
$ 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
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
$ sudo systemctl restart php8.1-fpm
$ sudo chgrp -R nginx /var/lib/php/sessionsКонфигурация Nginx для Wallabag: создайте /etc/nginx/conf.d/wallabag.conf и вставьте конфигурацию ниже (проверьте пути root и сокета php):
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;
}В конфигурации Nginx укажите root /var/www/html/wallabag/public/; если у вашей сборки корневой каталог отличается.
Добавьте server_names_hash_bucket_size 64; в /etc/nginx/nginx.conf перед include /etc/nginx/conf.d/*.conf;.
Проверьте конфигурацию и перезапустите Nginx:
$ sudo nginx -t
$ sudo systemctl restart nginx10. Доступ к Wallabag
Откройте в браузере https://wallabag.example.com и выполните вход с учётными данными администратора, созданными при установке.


В панели доступна документация, приложения и расширения. Меню пользователя дает ссылки на мобильные приложения, расширения браузера и bookmarklet.


Проверка и отладка
- Логи Nginx: /var/log/nginx/wallabag.error.log и wallabag.access.log
- Логи PHP-FPM: journalctl -u php8.1-fpm или /var/log/php-fpm/*
- Логи Wallabag: /var/www/html/wallabag/var/logs
Типичные ошибки и действия:
- 502 Bad Gateway: проверьте, что php-fpm запущен и путь сокета совпадает в конфигурации Nginx.
- Ошибки прав доступа: проверьте владельца и контексты SELinux (restorecon) и права на каталоги data, var.
- Проблемы с SSL: используйте
sudo certbot renew --dry-runи проверяйте таймеры systemd.
Безопасность и hardening
- Используйте сильные пароли и, при возможности, менеджер секретов (Vault, Secrets Manager).
- Ограничьте доступ к админ-панели по IP, если это уместно.
- Отключите регистрацию пользователей, если сервис только для личного использования (
fosuser_registration: false). - Включите двухфакторную аутентификацию (
twofactor_auth: true). - Регулярно обновляйте пакеты и зависимости Composer: сначала тестируйте на стенде.
- Безопасные заголовки в Nginx: добавьте Content-Security-Policy, X-Frame-Options, X-Content-Type-Options.
Пример минимальных заголовков в server блоке Nginx:
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;Резервное копирование и восстановление
Рекомендации:
- Дамп базы регулярно:
mysqldump -u root -p wallabag > wallabag.sql - Бэкап директорий:
/var/www/html/wallabag, особенноdata/иvar/. - Храните резервные копии вне сервера (S3, внешнее хранилище).
Пример автоматизации архивации (cron):
0 2 * * * /usr/bin/mysqldump -u root -p"root_password" wallabag | gzip > /backup/wallabag-$(date +\%F).sql.gz
0 3 * * * /usr/bin/tar -czf /backup/wallabag-www-$(date +\%F).tar.gz /var/www/html/wallabagКритерии приёмки
- Сайт доступен по HTTPS
- Админ может войти в систему
- Сохранение и чтение статей работают
- Автопродление сертификата работает (
certbot renew --dry-runпроходит)
Обновление Wallabag и сопутствующих компонентов
Общий порядок обновления:
- Сделайте полный бэкап БД и каталога приложения.
- На стенде протестируйте обновление Composer и миграции.
- Обновите код Wallabag (скачать новый пакет или git pull) и зависимости:
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
$ php bin/console doctrine:migrations:migrate --env=prod- Перезапустите php-fpm и nginx.
Всегда проверяйте релизные заметки Wallabag (GitHub Releases) на предмет несовместимостей.
Подготовка к миграции с других сервисов
- Экспортируйте сохранённые ссылки в формате читаемом вашей старой платформой (если доступно).
- Импортируйте через API Wallabag или через web-интерфейс (если поддерживается).
Совместимость и примечания по версиям
- PHP: 8.1 (рекомендовано для этой инструкции)
- MySQL: 8.x
- Nginx: рекомендуется актуальная стабильная ветка (1.22+)
- Composer: 2.2 LTS
Если вы используете другие версии ОС или PHP, проверьте официальную документацию Wallabag на предмет поддерживаемых версий.
Рольные чек-листы
Чек-лист для системного администратора
- Обновить систему и установить базовые утилиты
- Настроить firewalld
- Установить PHP 8.1 и все перечисленные расширения
- Настроить php-fpm под пользователя nginx
- Установить MySQL и создать базу/пользователя
- Установить Nginx и Certbot, получить SSL
- Настроить SELinux контексты
- Перенести права на файлы на nginx
- Проверить автопродление сертификата
Чек-лист для владельца сервиса
- Настроить SMTP для уведомлений и подтверждения регистрации
- Настроить политику регистрации пользователей
- Включить двухфакторную аутентификацию
- Настроить резервное копирование
Типичные тесты приёмки
- Войти под админом
- Сохранить 5-10 статей разного формата (статья, страница с JS, длинная страница)
- Проверить экспорт/импорт
- Проверить, что фоновые задачи (если используются) работают
Частые ошибки и как их решать
- Приложение показывает пустую страницу: включите дебаг в логах и проверьте
var/logs. - 403 Forbidden: убедитесь в правах и SELinux контекстах.
- Проблемы с отправкой почты: проверьте параметры SMTP и доступность порта (firewall).
Быстрые советы и эвристики
- Всегда делайте бэкап перед обновлением.
- Настройте staging-окружение для проверки обновлений Composer.
- Для небольших установок CPU 1 vCPU и 1–2 GB RAM достаточно, но для многопользовательских развёртываний увеличьте ресурсы.
Факт-бокс
- Минимальная версия PHP: 8.1
- Рекомендуемый Composer: 2.2 LTS
- Папка приложения: /var/www/html/wallabag
- Сертификаты Let’s Encrypt: /etc/letsencrypt/live/<ваш-домен>
Миграция на другой сервер
- Остановите службу Nginx на старом сервере.
- Создайте дамп БД и архив директории приложения.
- На новом сервере восстановите дамп и распакуйте файлы, примените права и SELinux контексты.
- Обновите DNS или балансировщик и проверьте доступность.
Короткая проверка после установки
- Проверка сокета PHP-FPM:
ss -ltnp | grep phpилиsystemctl status php8.1-fpm - Проверка Nginx:
sudo nginx -tиsystemctl status nginx - Проверка MySQL:
mysql -u wallabaguser -p -e "SHOW DATABASES;"
Заключение
Вы установили Wallabag на Rocky Linux 9, настроили Nginx, PHP-FPM, MySQL и SSL, применили SELinux контексты и настроили права. Теперь вы можете начать сохранять статьи и использовать клиентские приложения или bookmarklet. Для продакшн-развёртывания дополнительно настройте мониторинг, резервное копирование и тестирование обновлений.
Если возникнут вопросы — опишите проблему с логами и шагами воспроизведения.
Краткая сводка
Wallabag установлен и доступен по HTTPS. Настроены PHP 8.1, MySQL, Nginx и Certbot. Проверены права и SELinux. Проведите регулярное резервное копирование и тесты обновления.
Похожие материалы
Получение разрешения экрана в Linux
Удалить пины в Pinterest — поштучно и массово
Live Text на iPhone, iPad и Mac — инструкция
Клавиатурные сокращения для символов в Excel 2013
Исправить системные файлы Windows — SFC и DISM