Установка Etherpad с Nginx и SSL Let's Encrypt на AlmaLinux 8
О чём эта инструкция
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 и совместимостью плагинов.
Краткий метод развертывания (микро-процесс)
- Подготовить сервер, домен и root-доступ.
- Установить MariaDB и создать базу/пользователя.
- Установить Node.js и git, скачать Etherpad.
- Настроить settings.json для MySQL и trustProxy.
- Создать systemd unit и запустить сервис.
- Настроить Nginx и получить сертификат через certbot.
- Настроить бэкапы и мониторинг.
1-строчный глоссарий
- Etherpad — веб-редактор для совместного редактирования документов в реальном времени.
- Certbot — клиент для автоматического получения сертификатов Let’s Encrypt.
- reverse proxy — обратный прокси, который принимает запросы от клиентов и пересылает на внутренний сервис.
Заключение
Поздравляем — теперь у вас работает Etherpad с обратным прокси Nginx и HTTPS от Let’s Encrypt на AlmaLinux 8. Для продакшена рекомендуем дополнительно настроить бэкапы, мониторинг и базовые меры безопасности.
Вопросы и уточнения приветствуются — если нужно, помогу адаптировать эту инструкцию под Docker, SELinux или кластерную архитектуру.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента