Установка · 13 min read · Dec 19, 2025

Как установить Wallabag на Ubuntu 22.04

Wallabag — это сервис для чтения позже. Он позволяет сохранять веб-страницы для последующего чтения в удобное время. Существует множество сервисов, которые позволяют это делать, таких как Pocket, Instapaper и т. д., но наличие установленного на вашем сервере сервиса гораздо лучше. Во-первых, он не закроется и не удалит ссылки вместе с собой.

Этот учебник охватывает установку и настройку Wallabag на сервере с Ubuntu 22.04. Он также охватывает настройку Nginx, MySQL, Composer и PHP, которые необходимы для работы Wallabag.

Предварительные требования

  • Сервер с установленной Ubuntu 22.04.
  • Пользователь без прав root с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN), например wallabag.example.com.
  • Убедитесь, что все обновлено. $ sudo apt update $ sudo apt upgrade
  • Несколько пакетов, которые нужны вашей системе. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Некоторые из этих пакетов могут уже быть установлены на вашей системе.

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. По умолчанию Ubuntu поставляется с ufw (Uncomplicated Firewall).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы должны получить следующий вывод.

Status: inactive

Разрешите SSH-порт, чтобы брандмауэр не разорвал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Включите брандмауэр

$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы

Проверьте статус брандмауэра снова.

$ sudo ufw status

Вы должны увидеть аналогичный вывод.

Status: active

To                         Action      From
--                         ------      ----
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)

Шаг 2 - Установка PHP и его расширений

Ubuntu 22.04 поставляется с версией PHP 8.1.2, которая немного устарела. Мы установим последнюю версию PHP 8.1, используя репозиторий PHP от Ondrej.

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

Далее установите PHP и его расширения, необходимые для 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 

Проверьте установку.

$ 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

Шаг 3 - Установка Composer

Composer — это инструмент управления зависимостями для PHP и необходим для установки Wallabag.

Запустите следующие команды, чтобы скачать бинарный файл Composer. Wallabag работает только с Composer 2.2 LTS, поэтому мы изменили команду соответственно.

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

Установите Composer, переместив бинарный файл в директорию /usr/local/bin.

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

Проверьте установку, проверив его версию.

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

Шаг 4 - Установка MySQL

Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить его одной командой.

$ sudo apt install mysql-server

Проверьте версию MySQL.

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

Этот шаг необходим для версий MySQL 8.0.28 и выше. Войдите в оболочку MySQL.

$ sudo mysql

Запустите следующую команду, чтобы установить пароль для вашего пользователя root. Убедитесь, что он содержит смесь цифр, заглавных и строчных букв, а также специальных символов.

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

Выйдите из оболочки.

mysql> exit

Запустите скрипт безопасной установки MySQL.

$ sudo mysql_secure_installation

Сначала вас попросят ввести пароль root. Введите его. Далее вас попросят установить компонент проверки пароля. Он проверяет надежность паролей, используемых в MySQL. Нажмите Y, чтобы установить его. Затем вам будет предложено установить уровень политики проверки пароля. Выберите 2, так как это самый строгий уровень.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Далее введите N, чтобы отказаться от изменения пароля для root. Также введите Y, чтобы удалить анонимных пользователей, запретить удаленный вход root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Шаг 5 - Настройка MySQL

Войдите в оболочку MySQL. Введите свой пароль root, когда будет предложено.

$ sudo mysql -u root -p

Создайте тестовую базу данных.

mysql> CREATE DATABASE wallabag;

Создайте учетную запись SQL пользователя.

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

Предоставьте все привилегии на базу данных пользователю.

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

Обновите привилегии пользователей.

mysql> FLUSH PRIVILEGES;

Выйдите из оболочки.

mysql> exit

Шаг 6 - Установка Nginx

Ubuntu 22.04 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.

Импортируйте ключ подписи Nginx.

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

Добавьте репозиторий для стабильной версии 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

Обновите системные репозитории.

$ sudo apt update

Установите Nginx.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.1

Запустите сервер Nginx.

$ sudo systemctl start nginx

Шаг 7 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Ubuntu, или получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Запустите следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку в директории /usr/bin.

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

Запустите следующую команду, чтобы сгенерировать SSL-сертификат.

$ 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 group.

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

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных служб.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Сделайте пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 8 - Установка Wallabag

Создайте директорию /var/www/wallabag/html.

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

Скачайте последнюю версию Wallabag.

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

Извлеките архив.

$ tar xzf latest-v2-package

Переместите файлы из извлеченной директории в ранее созданную директорию. Вы можете проверить последнюю версию Wallabag на странице релизов GitHub. Последняя версия на момент написания этого учебника — 2.5.4.

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

Создайте директорию assets.

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

Измените права доступа к директории /var/www/html/wallabag на текущего вошедшего пользователя.

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

Перейдите в директорию.

$ cd /var/www/html/wallabag

Создайте файл parameters.yml, скопировав файл примера.

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

Прежде чем начать настраивать Wallabag, сгенерируйте секретный ключ. Запишите ключ для дальнейшего использования.

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

Откройте файл параметров для редактирования.

$ nano app/config/parameters.yml

Найдите следующий раздел и заполните учетные данные базы данных. Порт базы данных — 3306 для MySQL.

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

Заполните свои данные SMTP. В нашем случае мы используем сервис 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

Заполните сгенерированный ранее секретный ключ. Если вы хотите сохранить двухфакторную аутентификацию, убедитесь, что применены следующие настройки. Если вы хотите отключить регистрацию пользователей, установите значение переменной fouser_registration в false. Переменная fouser_confirmation установлена в true, что означает, что каждая регистрация пользователя должна быть подтверждена по электронной почте. Измените значение переменной from_email на адрес электронной почты по вашему выбору.

    # A secret key that's used to generate certain security-related tokens
    secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

    # two factor stuff
    twofactor_auth: true
    twofactor_sender: [email protected]

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

Существуют и другие параметры, связанные с Redis, RabbitMQ и настройками Sentry. Вы можете настроить их в соответствии с вашими потребностями после установки указанных пакетов.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Используйте Composer для загрузки и установки зависимостей, необходимых для Wallabag.

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

Завершите установку с помощью инструмента командной строки Wallabag.

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

Вас спросят, хотите ли вы сбросить базу данных и ее схему. Введите no в ответ оба раза. Далее вас спросят, хотите ли вы создать учетную запись администратора. Введите yes, чтобы продолжить, и введите имя пользователя, пароль и адрес электронной почты для учетной записи.

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

Step 1 of 4: Checking system requirements.
------------------------------------------

 ------------------------ -------- ---------------- 
  Checked                  Status   Recommendation  
 ------------------------ -------- ---------------- 
  PDO Driver (pdo_mysql)   OK!                      
  Database connection      OK!                      
  Database version         OK!                      
  curl_exec                OK!                      
  curl_multi_init          OK!                      
 ------------------------ -------- ---------------- 

 [OK] Success! Your system can run wallabag properly.                                                                   
                                                                                                                         

Step 2 of 4: Setting up database.
---------------------------------

 It appears that your database already exists. Would you like to reset it? (yes/no) [no]:
 > no

 Seems like your database contains schema. Do you want to reset it? (yes/no) [no]:
 > no

 Clearing the cache...

 Database successfully setup.

Step 3 of 4: Administration setup.
----------------------------------

 Would you like to create a new admin user (recommended)? (yes/no) [yes]:
 > yes

 Username [wallabag]:
 > navjot

 Password [wallabag]:
 > 

 Email [[email protected]]:
 > [email protected]

 Administration successfully setup.

Step 4 of 4: Config setup.
--------------------------

 Config successfully setup.
                                                                                                                                                        
 [OK] wallabag has been successfully installed.                                                                                                                                        
                                                                                                                      
 [OK] You can now configure your web server, see https://doc.wallabag.org

Смените права доступа к директории на Nginx.

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

Шаг 9 - Настройка Nginx и PHP

Настройка PHP-FPM

Откройте файл /etc/php/8.1/fpm/pool.d/www.conf.

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

Нам нужно установить Unix-пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Найдите строки listen.owner = www-data и listen.group = www-data в файле и измените их на nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Увеличьте время выполнения для PHP-FPM и PHP-CLI до 60 секунд.

$ 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

Увеличьте лимит памяти для PHP-FPM с 128 МБ до 256 МБ.

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

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Измените группу директории сессий PHP на Nginx.

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

Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/wallabag.conf для редактирования.

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

Вставьте следующий код в него.

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, — это /var/www/html/wallabag/public/.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте синтаксис конфигурационного файла Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Шаг 10 - Доступ к Wallabag

Откройте URL https://wallabag.example.com в вашем браузере, и вы увидите следующий экран входа.

Экран входа Wallabag

Введите свои учетные данные, созданные во время установки, и нажмите кнопку LOG IN, чтобы продолжить. Вы будете встречены панелью управления Wallabag.

Панель управления Wallabag

Wallabag предоставляет вам множество приложений для каждого браузера, мобильного устройства или электронного ридера, с помощью которых вы можете добавлять ссылки. И если ничего другого вам не понравится, вы даже можете использовать закладку, детали которой вы можете найти в разделе How to, нажав на значок пользователя в правом верхнем углу панели управления.

Выпадающее меню пользователя Wallabag

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

Страница Howto Wallabag

Вот и все. Вы можете начать использовать Wallabag для сохранения статей для чтения позже.

Заключение

На этом наш учебник по установке Wallabag на сервер Ubuntu 22.04 завершен. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.