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

Установка Etherpad с Nginx и SSL Let's Encrypt на AlmaLinux 8

• 5 min read • DevOps • Обновлено 22 Nov 2025
Etherpad на AlmaLinux 8 с Nginx и HTTPS
Etherpad на AlmaLinux 8 с Nginx и HTTPS

О чём эта инструкция

Etherpad — бесплатный open-source веб-редактор для совместной работы в реальном времени. Эта инструкция показывает, как развернуть Etherpad на AlmaLinux 8 с использованием MariaDB, Node.js, Nginx в роли обратного прокси и автоматического SSL от Let’s Encrypt.

В конце добавлены рекомендации по безопасности, альтернативные подходы и чек-листы для администратора.

Требования

  • Сервер с AlmaLinux 8.
  • Домен, указывающий на IP сервера (A-запись).
  • Настроен пароль root или доступ по sudo у вашей учетной записи.

Важно: операции выполняются в терминале от имени root или через sudo.

Установка и настройка MariaDB

Etherpad использует MariaDB в качестве бэкенда базы данных.

Установите MariaDB:

dnf install mariadb-server -y

Запустите и включите службу:

systemctl start mariadb
systemctl enable mariadb

Запустите скрипт повышения безопасности и задайте пароль root:

mysql_secure_installation

Ответьте так, как показано ниже:

Enter current password for root (enter for none): 
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Затем войдите в MariaDB и создайте базу данных и пользователя для Etherpad:

mysql -u root -p

Внутри MariaDB выполните:

MariaDB [(none)]> CREATE DATABASE etherpad;
MariaDB [(none)]> CREATE USER 'etherpad'@'localhost' identified by 'password';
MariaDB [(none)]> GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad.* to 'etherpad'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Примечание: замените ‘password’ на надёжный пароль и сохраните его в безопасном месте.

Установка Node.js

Установите Node.js 16 (поддерживаемая ветка для многих версий Etherpad):

curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -
dnf install nodejs -y

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

node --version

Ожидаемый вывод (пример):

v16.13.1

Установка Etherpad на AlmaLinux 8

Создайте системного пользователя для Etherpad и установите git:

adduser --system --home /opt/etherpad --create-home --user-group etherpad
dnf install git -y

Затем переключитесь на пользователя etherpad и скачайте код:

su - etherpad
git clone --branch master git://github.com/ether/etherpad-lite.git

Запустите Etherpad вручную для первой проверки:

cd etherpad-lite
./src/bin/run.sh

Ожидаемый вывод (фрагмент):

[2022-01-07 08:40:11.840] [INFO] http - HTTP server listening for connections
[2022-01-07 08:40:11.841] [INFO] console - You can access your Etherpad instance at http://0.0.0.0:9001/

Нажмите CTRL+C, чтобы остановить процесс — дальше мы настроим запуск как службу.

Настройка подключения к базе и прокси

Отредактируйте файл settings.json (в каталоге etherpad-lite) и замените встроенную dirty-базу на MySQL/MariaDB.

Откройте файл:

nano settings.json

Удалите секцию:

  "dbType": "dirty",
  "dbSettings": {
    "filename": "var/dirty.db"
  },

Затем установите настройки БД и прокси, заменив соответствующие поля на ваши значения:

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpad",
    "host":     "localhost",
    "port":     3306,
    "password": "password",
    "database": "etherpad",
    "charset":  "utf8mb4"
  },

  "trustProxy": true,

Сохраните файл и выйдите из пользователя etherpad:

exit

Совет: используйте уникальный пароль и ограничьте доступ к базе только с localhost, как показано выше.

Создание systemd unit для Etherpad

Создайте файл службы:

nano /etc/systemd/system/etherpad.service

Вставьте следующее:

[Unit]
Description=Etherpad, a collaborative web editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

Примените и запустите службу:

systemctl daemon-reload
systemctl enable etherpad --now
systemctl status etherpad

Проверьте, что процесс слушает порт 9001:

ss -antpl | grep 9001

Если видите LISTEN на 0.0.0.0:9001 — сервис запущен.

Настройка Nginx как обратного прокси

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

dnf install nginx -y
systemctl start nginx
systemctl enable nginx

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/conf.d/etherpad.conf

Добавьте конфигурацию (замените server_name на ваш домен):

server {
    listen       80;
    server_name  etherpad.exampledomain.com;
    access_log  /var/log/nginx/etherpad.access.log;
    error_log   /var/log/nginx/etherpad.error.log;
    
    location / {
        rewrite  ^/$ / break;
        rewrite  ^/locales/(.*) /locales/$1 break;
        rewrite  ^/locales.json /locales.json break;
        rewrite  ^/admin(.*) /admin/$1 break;
        rewrite  ^/p/(.*) /p/$1 break;
        rewrite  ^/static/(.*) /static/$1 break;
        rewrite  ^/pluginfw/(.*) /pluginfw/$1 break;
        rewrite  ^/javascripts/(.*) /javascripts/$1 break;
        rewrite  ^/socket.io/(.*) /socket.io/$1 break;
        rewrite  ^/ep/(.*) /ep/$1 break;
        rewrite  ^/minified/(.*) /minified/$1 break;
        rewrite  ^/api/(.*) /api/$1 break;
        rewrite  ^/ro/(.*) /ro/$1 break;
        rewrite  ^/error/(.*) /error/$1 break;
        rewrite  ^/jserror(.*) /jserror$1 break;
        rewrite  ^/redirect(.*) /redirect$1 break;
        rewrite  /favicon.ico /favicon.ico break;
        rewrite  /robots.txt /robots.txt break;
        rewrite  /(.*) /p/$1;
        
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off;
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # proxy headers
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_http_version  1.1;

        # websocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Проверьте синтаксис и перезапустите Nginx:

nginx -t
systemctl restart nginx
systemctl status nginx

Настройка брандмауэра

Разрешите HTTP и HTTPS во firewalld:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

Доступ к веб-интерфейсу

Откройте в браузере:

http://etherpad.exampledomain.com

Вы увидите экран запроса имени pad.

! Экран запроса имени новой заметки в Etherpad

Введите имя pad и нажмите кнопку OK. Вы попадёте в редактор:

! Интерфейс Etherpad с открытой заметкой и панелью редактирования

Совет: если вы хотите задать учётные данные администратора, отредактируйте раздел “users” в settings.json.

Защита сайта сертификатом Let’s Encrypt

Установите certbot и получите сертификат, автоматически интегрируя его с Nginx:

dnf install epel-release -y
dnf install certbot -y
certbot --nginx -d etherpad.exampledomain.com

Следуйте подсказкам — укажите e-mail и примите условия. Рекомендуется выбрать перенаправление HTTP→HTTPS (вариант 2), чтобы весь трафик шёл по TLS.

После успешной установки certbot вы увидите путь к сертификатам:

/etc/letsencrypt/live/etherpad.exampledomain.com/fullchain.pem
/etc/letsencrypt/live/etherpad.exampledomain.com/privkey.pem

Важно: certbot настраивает автоматическое обновление через cron/systemd. Проверьте dry-run обновления:

certbot renew --dry-run

Устранение неполадок — когда что-то идёт не так

  • Etherpad не запускается: проверьте journalctl -u etherpad и права на /opt/etherpad.
  • Порт 9001 не слушает: убедитесь, что NODE_ENV=production и что ExecStart указывает на правильный путь server.js.
  • Nginx возвращает 502/504: проверьте, доступен ли localhost:9001 (curl http://127.0.0.1:9001/) и нет ли SELinux, блокирующего соединение.
  • Ошибки подключения к MariaDB: проверьте credentials, хост и что MariaDB слушает локально.

Альтернативные подходы и рекомендации

  • Docker-контейнер: используйте официальные/сообществе Docker-образы Etherpad для изоляции и удобства деплоя.
  • Использовать Traefik вместо Nginx для автоматического управления сертификатами и маршрутизацией.
  • Хранение файлов/резервные копии: настраивайте регулярные дампы базы данных и бэкапы каталога /opt/etherpad.
  • HA/масштабирование: Etherpad лучше подходит для небольших команд; для большого числа пользователей продумайте горизонтальное масштабирование через sticky sessions и сессионирование.

Рекомендации по безопасности

  • Запускайте Node.js от непровилегированного пользователя (мы используем etherpad).
  • Обновляйте систему и пакеты регулярно: dnf update.
  • Включите SELinux (если выключен) и настройте необходимые политика; при проблемах временно смотрите audit.log.
  • Ограничьте SSH доступ по ключам и отключите вход по паролю.
  • Разрешите доступ к MariaDB только с localhost и используйте сложные пароли.
  • Рассмотрите установку fail2ban для защиты от брутфорс-атак.

Чек-лист для ролей

Для системного администратора:

  • Создать пользователя etherpad и установить зависимости.
  • Настроить и зафиксировать пароль БД.
  • Настроить systemd unit и автозапуск.
  • Настроить брандмауэр и SSL.

Для оператора безопасности:

  • Проверить SELinux и логи аудита.
  • Настроить бэкапы / тестирование восстановления.
  • Проверить автоматическое обновление certbot.

Для разработчика/поддержки:

  • Тестировать плагины на тестовой инстанции.
  • Следить за обновлениями Etherpad и совместимостью плагинов.

Краткий метод развертывания (микро-процесс)

  1. Подготовить сервер, домен и root-доступ.
  2. Установить MariaDB и создать базу/пользователя.
  3. Установить Node.js и git, скачать Etherpad.
  4. Настроить settings.json для MySQL и trustProxy.
  5. Создать systemd unit и запустить сервис.
  6. Настроить Nginx и получить сертификат через certbot.
  7. Настроить бэкапы и мониторинг.

1-строчный глоссарий

  • Etherpad — веб-редактор для совместного редактирования документов в реальном времени.
  • Certbot — клиент для автоматического получения сертификатов Let’s Encrypt.
  • reverse proxy — обратный прокси, который принимает запросы от клиентов и пересылает на внутренний сервис.

Заключение

Поздравляем — теперь у вас работает Etherpad с обратным прокси Nginx и HTTPS от Let’s Encrypt на AlmaLinux 8. Для продакшена рекомендуем дополнительно настроить бэкапы, мониторинг и базовые меры безопасности.

Вопросы и уточнения приветствуются — если нужно, помогу адаптировать эту инструкцию под Docker, SELinux или кластерную архитектуру.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро