Гид по технологиям

Установка Wallabag на Rocky Linux 9

8 min read Self-hosting Обновлено 18 Nov 2025
Установка Wallabag на Rocky Linux 9
Установка 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 или иллюстрация установки

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

Некоторые пакеты могут быть уже установлены.

Основные шаги и структура

  1. Настройка брандмауэра
  2. Установка PHP 8.1 и расширений
  3. Composer
  4. MySQL
  5. Nginx
  6. SSL (Certbot)
  7. Установка Wallabag
  8. SELinux и права
  9. Конфигурация Nginx и PHP-FPM
  10. Проверка и отладка

Шаблоны ролей и ответственность

  • 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.x

4. Установка 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 nginx

6. Установка 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/wallabag

8. 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 nginx

10. Доступ к Wallabag

Откройте в браузере https://wallabag.example.com и выполните вход с учётными данными администратора, созданными при установке.

Экран входа Wallabag

Панель Wallabag

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

Меню пользователя Wallabag

Страница Howto Wallabag

Проверка и отладка

  • Логи 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 и сопутствующих компонентов

Общий порядок обновления:

  1. Сделайте полный бэкап БД и каталога приложения.
  2. На стенде протестируйте обновление Composer и миграции.
  3. Обновите код Wallabag (скачать новый пакет или git pull) и зависимости:
$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
$ php bin/console doctrine:migrations:migrate --env=prod
  1. Перезапустите 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/<ваш-домен>

Миграция на другой сервер

  1. Остановите службу Nginx на старом сервере.
  2. Создайте дамп БД и архив директории приложения.
  3. На новом сервере восстановите дамп и распакуйте файлы, примените права и SELinux контексты.
  4. Обновите 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. Проведите регулярное резервное копирование и тесты обновления.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Получение разрешения экрана в Linux
Linux

Получение разрешения экрана в Linux

Удалить пины в Pinterest — поштучно и массово
Социальные сети

Удалить пины в Pinterest — поштучно и массово

Live Text на iPhone, iPad и Mac — инструкция
How-to

Live Text на iPhone, iPad и Mac — инструкция

Клавиатурные сокращения для символов в Excel 2013
Excel

Клавиатурные сокращения для символов в Excel 2013

Исправить системные файлы Windows — SFC и DISM
Windows

Исправить системные файлы Windows — SFC и DISM

Удалить язык интерфейса в Windows 11 быстро
Windows

Удалить язык интерфейса в Windows 11 быстро