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

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

• 6 min read • DevOps • Обновлено 27 Nov 2025
Установка Etherpad на Rocky Linux 8
Установка Etherpad на Rocky Linux 8

Логотип Etherpad или иллюстрация веб-редактора

Etherpad — это опенсорсный онлайн-редактор для совместного редактирования в реальном времени прямо в браузере. Он написан на Node.js и может быть размещён на собственном сервере. Etherpad интегрируется с платформами вроде WordPress, Drupal, Odoo, Discourse и Joomla.

В этом руководстве мы установим Etherpad на Rocky Linux 8, настроим MariaDB как базу данных, задействуем Nginx как обратный прокси и подключим бесплатный SSL от Let’s Encrypt для работы по HTTPS.

Что нужно знать заранее

  • OS: Rocky Linux 8
  • Необходим пользователь с sudo (не root)
  • Доменное имя, указывающее на сервер
  • Node.js уже установлен (следуйте вашему выбранному методу установки Node.js)
  • Обновите систему: выполните sudo dnf update

Важно: в примерах используются имена хостов и пароли-заглушки. Используйте реальные домены и сильные пароли в продакшене.

Содержание

  • Предварительная проверка и подготовка
  • Конфигурация брандмауэра
  • Установка Git
  • Установка и настройка MariaDB
  • Скачивание и установка Etherpad
  • Конфигурация Etherpad (settings.json)
  • Создание systemd-сервиса
  • Получение SSL через Let’s Encrypt
  • Установка и настройка Nginx
  • Обновление, резервное копирование и откат
  • Безопасность, отладка и чек-листы
  • Краткий глоссарий и контрольный список приёмки

Важные термины

  • Node.js: среда выполнения JavaScript на сервере.
  • MariaDB: форк MySQL, СУБД для хранения данных.
  • Nginx: веб-сервер и обратный прокси.
  • Certbot: клиент для получения сертификатов Let’s Encrypt.

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

Rocky Linux использует firewalld. Сначала проверьте статус:

$ sudo firewall-cmd --state
running

Разрешите HTTP и HTTPS и откройте порт 9001, который использует Etherpad:

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=9001/tcp
$ sudo firewall-cmd --reload

Проверьте текущие сервисы:

$ sudo firewall-cmd --permanent --list-services

Совет: если у вас настроены кастомные зоны, убедитесь, что изменения применены в нужной зоне (например, –zone=public).

Шаг 2 — Установка Git

Установите Git и выполните базовую настройку:

$ sudo dnf install git
$ git --version
git version 2.27.0
$ git config --global user.name "YourName"
$ git config --global user.email "[email protected]"
$ git config --list

Шаг 3 — Установка MariaDB

Rocky Linux содержит модуль MariaDB. Список доступных потоков:

$ sudo dnf module list mariadb

Если хотите использовать 10.5 вместо дефолтной 10.3, включите поток и установите сервер:

$ sudo dnf module enable mariadb:10.5
$ sudo dnf install mariadb-server
$ sudo systemctl enable mariadb --now
$ sudo systemctl status mariadb

Запустите скрипт безопасности:

$ sudo mysql_secure_installation

Рекомендованные ответы: включить unix_socket, удалить анонимных пользователей, запретить удалённый доступ root, удалить тестовую БД и перезагрузить привилегии.

Подключение к серверу MariaDB:

$ sudo mysql

Шаг 4 — Настройка MariaDB для Etherpad

Внутри mysql-оболочки создайте базу и пользователя:

$ sudo mysql
create database `etherpad_lite_db`;
CREATE USER 'etherpaduser'@'localhost' identified by 'password';
grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to 'etherpaduser'@'localhost';
exit

Важно: используйте сложный пароль и, при необходимости, ограничьте доступ по IP.

Шаг 5 — Скачивание и установка Etherpad

Создайте системного пользователя и домашнюю директорию:

$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
$ sudo -u etherpad bash
[etherpad@etherpad ~]$ cd /opt/etherpad
[etherpad@etherpad ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
[etherpad@etherpad ~]$ cd etherpad-lite
[etherpad@etherpad etherpad-lite]$ src/bin/run.sh

Откройте http://YOURSERVERIP:9001 чтобы проверить интерфейс.

Главная страница Etherpad в браузере

Если вы запустили run.sh в текущем терминале, процесс будет выполняться на переднем плане. Остановите его (Ctrl+C) и создайте systemd-сервис, чтобы Etherpad работал постоянно.

Шаг 6 — Конфигурация Etherpad

Файл настроек: settings.json в каталоге установки. Отредактируйте его от имени пользователя etherpad.

[etherpad@etherpad etherpad-lite]$ nano settings.json

По умолчанию Etherpad может использовать встроенное хранилище “dirty”. Отключите его (закомментируйте) и включите MySQL/MariaDB:

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

Замените на настройки MariaDB (уберите / и / если присутствуют):

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

Обязательно включите trustProxy для корректной работы за Nginx:

  "trustProxy": true,

Сохраните файл и выйдите из учётной записи etherpad:

[etherpad@etherpad etherpad-lite]$ exit

Шаг 7 — Создание systemd-сервиса

Создайте файл /etc/systemd/system/etherpad.service:

$ sudo 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

Активируйте сервис и проверьте статус:

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

Если служба не запускается, проверьте логи:

$ sudo journalctl -u etherpad -b --no-pager

Шаг 8 — Установка SSL с помощью Let’s Encrypt

Добавьте EPEL и установите certbot:

$ sudo dnf install epel-release
$ sudo dnf install certbot

Получение сертификата (standalone):

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com

Сертификаты появятся в /etc/letsencrypt/live/etherpad.example.com

Создайте DH-параметры:

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

Создайте webroot для автообновления и cron-задачу:

$ sudo mkdir -p /var/lib/letsencrypt
$ sudo nano /etc/cron.daily/certbot-renew

Вставьте:

#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Сделайте исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Совет: альтернативный подход — использовать certbot nginx плагин (certbot –nginx), который автоматически конфигурирует Nginx.

Шаг 9 — Установка и настройка Nginx

Добавьте репозиторий nginx и установите пакет:

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте нужные репозитории (stable/mainline). Затем:

$ sudo dnf install nginx
$ sudo systemctl enable nginx

Создайте конфигурацию /etc/nginx/conf.d/etherpad.conf (замените server_name и пути на ваши):

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  etherpad.example.com;

    access_log  /var/log/nginx/etherpad.access.log;
    error_log   /var/log/nginx/etherpad.error.log;
    
    ssl_certificate      /etc/letsencrypt/live/etherpad.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    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;

    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;
}

server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.com;
    return 301   https://$host$request_uri;
}

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

$ sudo nginx -t

Если получите ошибку about server_names_hash_bucket_size, откройте /etc/nginx/nginx.conf и добавьте перед include:

server_names_hash_bucket_size  64;

Запустите Nginx:

$ sudo systemctl start nginx

Откройте https://etherpad.example.com и убедитесь, что интерфейс доступен.

Обновление Etherpad

Для обновления переключитесь на пользователя etherpad и выполните git pull:

$ sudo -u etherpad bash
[etherpad@etherpad ~]$ cd /opt/etherpad/etherpad-lite
[etherpad@etherpad etherpad-lite]$ git pull origin
[etherpad@etherpad etherpad-lite]$ src/bin/run.sh

После обновления перезапустите systemd-сервис:

$ sudo systemctl restart etherpad

Резервное копирование и откат

Рекомендации по резервному копированию:

  • Бэкап базы данных MariaDB (регулярные дампы):
$ mysqldump -u root -p etherpad_lite_db > /backups/etherpad_lite_db-$(date +%F).sql
  • Архив конфигураций (/opt/etherpad/etherpad-lite/settings.json и /etc/nginx/conf.d/etherpad.conf)
  • Резерв ваших плагинов и файлов в /opt/etherpad

Откат: восстановите дамп и верните прежнюю ветку в git, затем перезапустите сервисы.

Производительность и масштабирование

  • Для небольшой команды достаточно одного сервера с 1–2 CPU и 1–2 ГБ ОЗУ.
  • Для больших нагрузок горизонтально масштабируйте фронтенд (Nginx) и используйте отдельный экземпляр базы.
  • Отключите proxy_buffering в Nginx, как в примере, чтобы снизить задержки в реальном времени.

Безопасность и жёсткие настройки

  • Используйте SELinux в Enforcing режиме и проверьте контексты доступа для /opt/etherpad и /var/lib/letsencrypt.
  • Примените обновления OS и Node.js регулярно.
  • Ограничьте доступ к MariaDB и разрешайте подключение только с доверенных хостов.
  • Включите брандмауэр и audit логи.

Частые ошибки и способы устранения

  • Служба systemd не стартует: проверьте путь ExecStart и права пользователя etherpad.
  • Неправильные права на /opt/etherpad: установите владельца и права:
$ sudo chown -R etherpad:etherpad /opt/etherpad
  • Ошибки SSL: убедитесь, что пути к сертификатам в Nginx совпадают с /etc/letsencrypt/live/ВАШ_ДОМЕН.
  • Проблемы с проксированием WebSocket: убедитесь, что proxy_set_header Upgrade и Connection заданы корректно.

Чек-листы по ролям

Системный администратор:

  • Обновить OS и Node.js
  • Настроить брандмауэр
  • Настроить systemd и мониторинг

DevOps / инженер по развертыванию:

  • Подготовить CI для обновлений
  • Настроить резервное копирование и восстановление
  • Проверить интеграции и плагины

Специалист по безопасности:

  • Включить SELinux и аудит
  • Проверить TLS-конфигурацию
  • Настроить логирование и оповещения

Критерии приёмки

  • Etherpad доступен по HTTPS на основном домене
  • Система возвращает HTTP 301 на HTTPS
  • Сертификаты действительны и автообновляются
  • Сервис etherpad активен и рестартует при падении
  • Бэкапы базы успешны и восстанавливаемы

Мини‑методология: пошаговый план (quickplay)

  1. Подготовить сервер, DNS и Node.js.
  2. Установить MariaDB и создать базу/пользователя.
  3. Скачать Etherpad и проверить локальный запуск.
  4. Настроить settings.json и создать systemd-сервис.
  5. Установить и настроить Nginx; получить SSL.
  6. Тестировать, добавить мониторинг и бэкапы.

Решение, если Let’s Encrypt не может использовать standalone

  • Используйте режим webroot: certbot certonly –webroot -w /var/lib/letsencrypt -d example.com
  • Или примените DNS-01 challenge для wildcard-сертификатов.

Decision flowchart (Mermaid)

flowchart TD
  A[Начало] --> B{Node.js установлен?}
  B -- Нет --> C[Установить Node.js]
  B -- Да --> D{MariaDB доступна?}
  D -- Нет --> E[Установить MariaDB]
  D -- Да --> F[Создать БД и пользователя]
  F --> G[Установить Etherpad]
  G --> H[Настроить settings.json]
  H --> I[Создать systemd-сервис]
  I --> J[Установить Nginx]
  J --> K[Получить SSL]
  K --> L[Тестирование]
  L --> M[Готово]

1-line glossary

  • Etherpad — браузерный редактор для совместной работы в реальном времени.
  • systemd — менеджер служб в Linux.
  • Certbot — клиент Let’s Encrypt для получения SSL.

Короткий план на 30 / 60 / 90 дней для продакшена

  • 30 дней: надёжный бэкап, мониторинг, регулярные обновления.
  • 60 дней: настройка логирования, интеграция авторизации (если нужна).
  • 90 дней: проверка масштабируемости, стресс‑тестирование и настройка CI для обновлений.

Резюме

Мы установили и настроили Etherpad на Rocky Linux 8 с MariaDB, Nginx и SSL от Let’s Encrypt. После завершения у вас есть работающее решение для совместного редактирования, которое можно расширять плагинами, интеграциями и дополнительными мерами безопасности.

Важно: храните резервные копии, регулярно обновляйте систему и проверяйте автоматическое продление сертификатов.

Если у вас остались вопросы по конкретным ошибкам или вы хотите настройку под кластер, опишите окружение — помогу с адаптацией.

Поделиться: 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 быстро