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

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 чтобы проверить интерфейс.

Если вы запустили 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)
- Подготовить сервер, DNS и Node.js.
- Установить MariaDB и создать базу/пользователя.
- Скачать Etherpad и проверить локальный запуск.
- Настроить settings.json и создать systemd-сервис.
- Установить и настроить Nginx; получить SSL.
- Тестировать, добавить мониторинг и бэкапы.
Решение, если 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. После завершения у вас есть работающее решение для совместного редактирования, которое можно расширять плагинами, интеграциями и дополнительными мерами безопасности.
Важно: храните резервные копии, регулярно обновляйте систему и проверяйте автоматическое продление сертификатов.
Если у вас остались вопросы по конкретным ошибкам или вы хотите настройку под кластер, опишите окружение — помогу с адаптацией.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента