Установка Etherpad на Debian 12: пошаговое руководство

Введение
Etherpad — это свободный и открытый веб-редактор для совместной работы в реальном времени, похожий по назначению на Google Docs или Zoho Writer. Он написан на JavaScript, поддерживает плагины, экспорт в популярные форматы (doc, pdf, odt, markdown) и ведёт историю правок. Это руководство поможет развернуть Etherpad на Debian 12 с использованием MariaDB, Nginx и защищённого HTTPS.
Важно: перед началом убедитесь, что у вас есть домен, указывающий на IP сервера, и непривилегированный пользователь с sudo-доступом.
Основные понятия
- Etherpad: веб-приложение для совместного редактирования текстов в реальном времени.
- MariaDB: сервер баз данных, форк MySQL.
- Nginx: веб-сервер и обратный прокси.
- UFW: простой интерфейс для iptables.
- Certbot/Let’s Encrypt: бесплатные SSL-сертификаты и клиент для их получения.
Требования
- Сервер с Debian 12.
- Пользователь с правами sudo (не root).
- Зарегистрированный домен, направленный на IP сервера.
Быстрый план действий
- Обновить систему и установить зависимости (Node.js 18, npm, MariaDB, Nginx, UFW и др.).
- Настроить UFW для открытия SSH и HTTP/HTTPS.
- Защитить MariaDB и создать базу данных и пользователя для Etherpad.
- Скачать Etherpad, настроить settings.json на использование MariaDB и запуск на 127.0.0.1:9001.
- Создать systemd-сервис для запуска Etherpad в фоне.
- Настроить Nginx как обратный прокси и получить SSL от Let’s Encrypt через Certbot.
- Дополнительно: бэкапы, безопасность, мониторинг и отладка.
1. Установка зависимостей
Обновите индекс пакетов:
sudo apt update
Установите нужные пакеты. В этом примере устанавливаем MariaDB, Nginx, Node.js 18 и вспомогательные утилиты:
sudo apt install mariadb-server nginx ufw nodejs npm gzip git curl python3 libssl-dev
Проверьте версию Node.js (ожидается Node 18):
nodejs --versionПроверьте статус MariaDB и Nginx:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
sudo systemctl is-enabled nginx
sudo systemctl status nginx

Если службы работают и включены при старте, можно переходить к настройке брандмауэра.
2. Настройка UFW (Uncomplicated Firewall)
Разрешите SSH и включите UFW:
sudo ufw allow OpenSSH
sudo ufw enableПри подтверждении введите “y”.

Разрешите профиль Nginx Full (HTTP и HTTPS):
sudo ufw app list
sudo ufw allow "Nginx Full"Примените и проверьте правила:
sudo ufw reload
sudo ufw statusВы должны увидеть активный UFW с профилями OpenSSH и Nginx Full.

Важное: не блокируйте SSH-канал, если работаете удалённо.
3. Настройка MariaDB
Запустите вспомогательную утилиту для базовой безопасности MariaDB:
sudo mariadb-secure-installationРекомендованные ответы при интерактивном запуске:
- Нажать Enter когда будет запрос пароля root MariaDB.
- Включить (Y) установку пароля root и задать новый надёжный пароль.
- Отключить unix_socket-аутентификацию, если планируете использовать пароль (в диалоге введите n на соответствующий вопрос, затем Y для установки пароля).
- Удалить анонимных пользователей — Y.
- Запретить удалённый вход root — Y.
- Удалить тестовую базу — Y.
- Перезагрузить привилегии — Y.
Далее создайте базу данных и пользователя для Etherpad. Подключитесь к MariaDB как root:
sudo mariadb -u root -pВнутри клиента выполните (замените StrongPasswordEtherpadDB на надёжный пароль):
CREATE DATABASE etherpad_lite_db;
CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE ON etherpad_lite_db.* TO etherpaduser@localhost;
FLUSH PRIVILEGES;
Проверьте права пользователя:
SHOW GRANTS FOR etherpaduser@localhost;В выходе вы увидите GRANT-строки, подтверждающие доступ к базе.

Завершите работу клиента командой “quit”.
4. Загрузка и настройка Etherpad
Создайте системного пользователя для запуска Etherpad и каталог установки:
sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpadСкачайте исходники и поменяйте владельца каталога:
cd /opt && git clone --branch master https://github.com/ether/etherpad-lite.git
sudo chown -R etherpad:etherpad /opt/etherpad-lite
Переключитесь на выполнение установки зависимостей от имени пользователя etherpad:
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/run.sh" etherpadЭтот скрипт установит Node-зависимости (npm-пакеты).

После завершения тестового запуска вы увидите, что сервер запущен локально на 127.0.0.1:9001. Нажмите Ctrl+C, чтобы остановить тестовый процесс и перейти к конфигурации.

Откройте файл конфигурации settings.json:
nano settings.jsonИзмените заголовок, IP и порт, чтобы Etherpad слушал только на localhost:
"title": "Etherpad Debian 12",
"ip": "127.0.0.1",
"port": 9001,Закомментируйте или удалите конфигурацию “dirty” (локальное хранилище), а затем добавьте настройки MySQL/MariaDB:
"dbType" : "mysql",
"dbSettings" : {
"user": "etherpaduser",
"host": "127.0.0.1",
"port": 3306,
"password": "StrongPasswordEtherpadDB",
"database": "etherpad_lite_db",
"charset": "utf8mb4"
},Сохраните файл и закройте редактор.
Совет: храните пароль базы данных в безопасном менеджере секретов или в файле с ограниченным доступом (chmod 600).
5. Запуск Etherpad как systemd-сервиса
Создайте systemd-сервис:
sudo nano /etc/systemd/system/etherpad.serviceВставьте конфигурацию:
[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target mariadb.service
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always
[Install]
WantedBy=multi-user.targetПримените изменения и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl start etherpad
sudo systemctl enable etherpad
Проверьте статус и убедитесь, что процесс запущен на 127.0.0.1:9001:
sudo systemctl status etherpad
ss -tulpn | grep 9001
6. Настройка Nginx как обратного прокси
Создайте конфигурационный файл Nginx для вашего домена (замените etherpad.example.com на ваш домен):
sudo nano /etc/nginx/sites-available/etherpad.confВставьте блок сервера:
server {
listen 80;
server_name etherpad.howtoforge.local;
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_buffering off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
proxy_set_header Host $host;
proxy_pass_header Server;
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;
}
}Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/etherpad.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxЕсли всё в порядке, откройте в браузере http://your-domain и убедитесь, что вы видите интерфейс Etherpad.

7. Получение SSL-сертификата (Let’s Encrypt + Certbot)
Установите Certbot и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx
Запустите Certbot с настройкой Nginx и авто-редиректом на HTTPS (замените email и домен):
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d etherpad.howtoforge.localПосле завершения сертификаты будут храниться в /etc/letsencrypt/live/your-domain.
Теперь сайт будет автоматически перенаправлять HTTP на HTTPS, а Nginx конфиг будет обновлён Certbot.
Откройте сайт в браузере по HTTPS и создайте новую «подборку» (pad) чтобы проверить работу совместного редактирования.


Дополнительные рекомендации и лучшие практики
Ниже собраны полезные материалы, чеклисты и рекомендации по эксплуатации.
Резервное копирование и восстановление
- Бэкап базы данных MariaDB регулярно (например, ежедневный дамп):
mysqldump -u root -p etherpad_lite_db > /var/backups/etherpad_lite_db-$(date +%F).sql- Копируйте каталог /opt/etherpad-lite (если у вас есть локально установленные плагины или изменения).
- Проверяйте бэкапы путем выборочного восстановления на тестовом хосте.
Критерии приёмки
- Etherpad доступен по HTTPS по вашему домену.
- Сервис etherpad запущен и включён в автозапуск systemd.
- База данных etherpad_lite_db доступна для пользователя etherpaduser.
- Порты 22, 80 и 443 открыты и защищены правилами UFW.
Обновления и обслуживание
- Обновляйте систему и пакеты: sudo apt update && sudo apt upgrade.
- При обновлении Node.js или зависимостей перезапускайте сервис: sudo systemctl restart etherpad.
- Следите за журналом сервиса: sudo journalctl -u etherpad -f
- Проверяйте автоматическое продление сертификатов Certbot: sudo certbot renew –dry-run
Мониторинг и логирование
- Логи Nginx: /var/log/nginx/eplite.access.log и eplite.error.log.
- Логи systemd для etherpad: journalctl -u etherpad.
- Для продакшена рекомендую интегрировать Prometheus/Grafana, либо настроить системный мониторинг (Netdata, etc.).
Безопасность и жёсткая конфигурация
- Запускайте Etherpad под отдельным системным пользователем (как в инструкции).
- Ограничьте доступ к файлам конфигурации: chmod 600 settings.json если там хранятся пароли.
- Используйте SELinux/AppArmor при возможной поддержке для дополнительной защиты.
- Отключите ненужные плагины и внимательно проверяйте права плагинов.
Плагины и кастомизация
- Установите плагины через npm/ep_* пакеты (следите за совместимостью с версией Etherpad):
cd /opt/etherpad-lite
sudo npm install ep_some-plugin --save
sudo chown -R etherpad:etherpad node_modules
sudo systemctl restart etherpad- Контролируйте установленные плагины в settings.json, некоторые плагины меняют поведение авторизации и логирования.
Руководство по отладке: типичные проблемы и решения
Etherpad не стартует (systemd показывает ошибку):
- Проверьте путь ExecStart в unit-файле.
- Убедитесь, что node_modules установлены и версия Node.js корректна.
- Просмотр логов: sudo journalctl -u etherpad -b
Невозможно подключиться к базе данных:
- Проверьте credentials в settings.json.
- Попробуйте подключиться вручную: mysql -u etherpaduser -p -D etherpad_lite_db
- Проверьте, что MariaDB слушает localhost и что пользователь имеет нужные привилегии.
Nginx возвращает 502 Bad Gateway:
- Проверьте, что etherpad слушает на 127.0.0.1:9001 (ss -tulpn | grep 9001).
- Проверьте настройки proxy_pass в конфиге Nginx и перезапустите nginx.
Проблемы с WebSocket (редактор зависает при одновременной работе нескольких пользователей):
- Убедитесь, что proxy_set_header Upgrade и Connection правильно настроены в Nginx.
- Убедитесь, что proxy_http_version 1.1 установлено.
Certbot не может получить сертификат:
- Проверьте, что ваш домен указывает на IP сервера и открыт 80/443 порт.
- Убедитесь, что конфигурация Nginx корректна (nginx -t).
Рекомендации по производительности
- Для небольших команд (до десятков одновременных пользователей) стандартного набора ресурсов обычно достаточно.
- Для больших нагрузок масштабируйте вертикально (больше RAM/CPU) или горизонтально (разделите прокси и приложение, настройте кластер БД).
- Включите swap только при необходимости; лучше добавить оперативной памяти.
Роли и чек-листы (кто за что отвечает)
Администратор сервера:
- Установил ОС, обеспечил резервное копирование и мониторинг.
- Настроил firewall, Nginx и Certbot.
- Обновляет пакеты и следит за безопасностью.
Администратор Etherpad / DevOps:
- Настроил базу данных и systemd-сервис.
- Управляет плагинами и обновлениями Etherpad.
- Следит за логами и производительностью.
Пользователь / Преподаватель / Команда:
- Создаёт и редактирует документы, настраивает права доступа (внешние плагины).
- Сообщает о проблемах в работу администратору.
Миграция и совместимость
- Для перехода с другого сервиса экспортируйте документы в формате HTML/Markdown/ODT при возможности и импортируйте в Etherpad вручную или через плагины.
- При миграции между версиями Etherpad проверяйте совместимость плагинов.
Часто задаваемые вопросы
Как изменить порт Etherpad?
Измените значение “port” в settings.json и перезапустите сервис systemd.
Как обновить Etherpad до новой версии?
- Сохраните бэкапы (база и конфиги).
- Сделайте git pull на /opt/etherpad-lite.
- Выполните npm install при необходимости.
- Перезапустите сервис: sudo systemctl restart etherpad.
Нужно ли защищать базу паролем?
Да. Используйте сильный пароль и ограничьте доступ по localhost. Рассмотрите шифрование дисков и резервное копирование в защищённое хранилище.
Короткая проверочная последовательность перед сдачей
- Домен резолвится на сервер.
- Порты 22/80/443 открыты и защищены.
- MariaDB доступна и пользователь etherpaduser имеет привилегии.
- Etherpad запущен локально на 127.0.0.1:9001.
- Nginx правильно проксирует запросы на 127.0.0.1:9001.
- HTTPS работает и сертификат корректен.
- Выполнен тест совместной работы (несколько пользователей одновременно).
Итог
Вы установили и настроили Etherpad на Debian 12, защитили его с помощью UFW и TLS, настроили автоматический запуск через systemd и проксирование через Nginx. Дальше можно настраивать плагины, интеграции и автоматизацию бэкапов.
Заметки
- В продакшене регулярно проверяйте автопродление сертификатов (certbot renew) и журналы безопасности.
- Тестируйте обновления на отдельном стенде прежде, чем применять их в рабочей среде.
Полезные команды для быстрого доступа
sudo systemctl status etherpad
sudo journalctl -u etherpad -f
sudo systemctl restart nginx
sudo certbot renew --dry-run
mysqldump -u root -p etherpad_lite_db > /var/backups/etherpad_lite_db-$(date +%F).sqlСпасибо за внимание — удачного развёртывания и продуктивной совместной работы с Etherpad!
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента