Установка Etherpad на Debian 11 — руководство
TL;DR
Кратко: пошагово устанавливаем Etherpad на Debian 11 с MariaDB и Nginx в качестве обратного прокси, включаем HTTPS и сервис systemd. В руководстве — настройка зависимостей Node.js 16.x, создание БД, конфигурация systemd и Nginx, а также советы по безопасности, резервному копированию и масштабированию.

Etherpad — это бесплатный и открытый редактор текста в реальном времени, альтернатива Google Docs и Zoho Writer. Etherpad работает в браузере и позволяет команде редактировать документы одновременно, хранит версионирование и поддерживает ряд форматов экспорта: doc, pdf, odt, markdown и другие. Редактор гибко настраивается с помощью плагинов.
В этом руководстве показана установка Etherpad на Debian 11 (Bullseye) с бэкендом MariaDB и фронтендом Nginx в режиме обратного прокси, с включённым HTTPS. По окончании у вас будет рабочий, системный сервис Etherpad, доступный по домену через TLS.
Что вы получите и зачем
- Рабочий Etherpad, запущенный как systemd-сервис под пользователем etherpad.
- MariaDB в роли СУБД (замена SQLite для стабильности и масштабируемости).
- Nginx как обратный прокси с SSL (Let’s Encrypt или ваши сертификаты).
- Рекомендации по безопасности, обслуживанию, резервным копиям и масштабированию.
Важно: пример в тексте использует домен etherpad.example.io — замените на ваш реальный домен.
Требования
- Сервер с Debian 11 (1 ГБ ОЗУ достаточно для тестовой среды; для продакшна планируйте 2+ ГБ и больше CPU/IO в зависимости от нагрузки).
- Непривилегированный пользователь с sudo или root-доступ.
- Домен, указывающий на IP сервера (A/AAAA запись).
- Доступ в интернет для установки пакетов и получения сертификатов.
Ключевые компоненты и роли (одной строкой)
- Node.js — среда выполнения Etherpad; используем LTS (16.x) для совместимости.
- MariaDB — внешняя реляционная база данных вместо SQLite.
- Nginx — обратный прокси и TLS терминация.
- systemd — запуск и авто‑рестарт приложения.
Установка зависимостей и Node.js
- Обновите индекс пакетов и установите сборочные зависимости:
sudo apt update
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y- Установим Node.js 16.x из NodeSource (рекомендуется для совместимости с текущими релизами Etherpad):
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs -y- Проверьте версию Node.js:
node --versionОжидается версия 16.x. Если система возвращает другую мажорную версию, проверьте источник пакета или используйте nvm для управления версиями в тестовой среде.
Совет: в продакшне не рекомендуется запускать разные критические приложения под одной версией Node.js без тестирования на совместимость с плагинами Etherpad.
Установка и настройка MariaDB
- Установите MariaDB из репозиториев Debian:
sudo apt install mariadb-server -y- Запустите скрипт безопасной установки и следуйте подсказкам:
mysql_secure_installationОбычно вы переключаете аутентификацию на unix_socket, задаёте пароль root, удаляете анонимных пользователей, запрещаете удалённый вход для root и удаляете тестовую базу.
- Войдите в консоль MariaDB и создайте базу и пользователя для Etherpad (замените пароль на свой):
mysql -u root -p
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;
EXIT;Файл снимка экрана в исходном материале демонстрирует создание базы данных.

Примечание: для крупных установок рассмотрите использование отдельного сервера базы данных и резервное копирование/репликацию.
Скачивание и установка Etherpad
- Создайте системного пользователя для запуска приложения и определите каталог /opt/etherpad-lite:
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 etherpad-lite- Установите зависимости Node.js скриптом installDeps.sh от имени пользователя etherpad:
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpadПодождите завершения установки зависимостей. Этот процесс может занять несколько минут в зависимости от сети и ресурсов сервера.
- Настройте файл settings.json:
nano settings.jsonОсновные параметры, которые нужно отредактировать:
- title — выберите человекочитаемое имя.
- ip — поменяйте на “127.0.0.1” чтобы слушать только локально (без прямого внешнего доступа).
- port — по умолчанию 9001.
- dbType/dbSettings — переключитесь с SQLite на mysql (MariaDB) и укажите ваши данные доступа.
Пример фрагмента:
"title": "Etherpad Johndoe",
"ip": "127.0.0.1",
"port": 9001,
/*
*"dbType": "dirty",
*"dbSettings": {
* "filename": "var/dirty.db"
*},
*/
"dbType" : "mysql",
"dbSettings" : {
"user": "etherpaduser",
"host": "localhost",
"port": 3306,
"password": "StrongPasswordEtherpadDB",
"database": "etherpad_lite_db",
"charset": "utf8mb4"
},Сохраните файл и выйдете.
- Создайте systemd‑сервис для запуска Etherpad:
sudo nano /etc/systemd/system/etherpad.serviceВставьте конфигурацию:
[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target
[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 enable --now etherpad
sudo systemctl status etherpadЕсли статус active (running), значит сервис запущен и слушает 127.0.0.1:9001.

Установка и настройка Nginx в роли обратного прокси
- Установите Nginx:
sudo apt install nginx -y- Если включён UFW, откройте порты 80 и 443:
sudo ufw allow "Nginx Full"- Создайте виртуальный хост для вашего домена:
sudo nano /etc/nginx/sites-available/etherpadПример конфигурации (замените etherpad.example.io и пути к сертификатам):
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name etherpad.example.io;
return 301 https://$host$request_uri;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name etherpad.example.io;
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
ssl_certificate /etc/letsencrypt/live/etherpad.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/etherpad.example.io/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
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;
# Note you might want to pass these headers etc too.
proxy_set_header X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}- Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx- Получите TLS-сертификаты (пример с certbot/Let’s Encrypt):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d etherpad.example.ioCertbot автоматически обновляет конфигурацию Nginx и добавляет задачи для автоматического обновления сертификатов.

Проверка установки
Откройте в браузере https://etherpad.example.io — вы должны быть перенаправлены на HTTPS. Создайте новый pad, введите имя и нажмите OK. Интерфейс редактора будет доступен.


Безопасность и эксплуатация — рекомендации
- Права доступа: запускайте приложение под отдельным системным пользователем (etherpad), не под root.
- Сеть: слушайте 127.0.0.1 и пропускайте внешний трафик через Nginx.
- TLS: используйте только современные протоколы TLSv1.2+; по возможности включите TLSv1.3.
- Бэкапы БД: настройте регулярное резервное копирование MySQL/MariaDB (mysqldump или физические снимки) и храните копии вне сервера.
- Логи: ротация логов (logrotate) для /var/log/nginx/eplite.* и логов приложения.
- Обновления: планируйте регулярные обновления пакетов и периодическое тестирование плагинов на совместимость.
Резервное копирование и восстановление
- Резерв БД:
mysqldump -u root -p etherpad_lite_db > /var/backups/etherpad_lite_db-$(date +%F).sql- Сохранение настроек и плагинов:
Сделайте архив каталога /opt/etherpad-lite и файла settings.json. Для быстрого восстановления на новом сервере распакуйте архив, установите зависимости и подключите базу.
Масштабирование и альтернативы (когда это важно)
Когда Etherpad превышает предел одного сервера (много одновременных пользователей), рассмотрите:
- Горизонтальное масштабирование веб-слоя за Nginx с балансировкой нагрузки и несколькими экземплярами Etherpad (требует согласованного хранилища для сессий/ассетов и синхронизации файлов).
- Отдельный сервер MariaDB с репликацией для чтения/резервирования.
- Использование контейнеров (Docker, Kubernetes) для лёгкого управления экземплярами и авто‑масштабирования.
Альтернативы к MariaDB: PostgreSQL (поддерживается не всеми плагинами — проверяйте совместимость) или облачные управляемые БД.
Устранение неполадок — частые проблемы и решения
- Сервис не запускается: проверьте
sudo journalctl -u etherpad -bиsystemctl status etherpad. - Порт 9001 недоступен извне: убедитесь, что в settings.json указан ip=”127.0.0.1” и что Nginx проксирует на 127.0.0.1:9001.
- Отсутствие подключения к базе: проверьте параметры в settings.json, попробуйте подключиться через mysql-клиент от имени etherpaduser.
- WebSocket не работает: проверьте headers Upgrade/Connection в конфиге Nginx и
proxy_http_version 1.1. - Ошибки SSL: убедитесь, что файлы сертификатов существуют и права доступа корректны.
Роль‑ориентированные чек‑листы
Администратор сервера:
- Настроить DNS и брандмауэр.
- Установить зависимости, Node.js, MariaDB, Nginx.
- Создать системного пользователя etherpad и сервис systemd.
- Настроить бэкапы БД и логов.
Разработчик/DevOps:
- Тестировать обновления Node.js и плагинов в staging.
- Подготовить план отката (rollback) при обновлении.
- Настроить мониторинг (CPU, память, сетевые соединения, число одновременных pad-ов).
Пользователь (конечный):
- Создать pad, дать имя, делиться ссылкой.
- Экспортировать pad в нужном формате при необходимости.
Мини‑SOP: обновление Etherpad (короткая инструкция)
- Сделать бэкап базы и архива /opt/etherpad-lite.
- Переключить системd в режим maintenance: остановить сервис.
sudo systemctl stop etherpad- В /opt/etherpad-lite выполнить git pull (или клонировать нужную версию в тестовом окружении).
cd /opt/etherpad-lite
git fetch --all
git checkout <релиз>
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad- Запустить сервис и проверить логи.
sudo systemctl start etherpad
sudo journalctl -u etherpad -f- Тестировать функциональность в браузере и мониторить CPU/память.
Инцидентный план: приложение недоступно — быстрый откат
- Проверить статус systemd и логи.
- Если обновление вызвало проблему, остановить сервис и восстановить из бэкапа базы/файлов:
sudo systemctl stop etherpad
# восстановление каталога и базы из заранее сделанных архивов- Запустить предыдущую версию кода и зависимости, перезапустить сервис.
- Анализировать причину в Staging и только после этого продвигать исправление в продакшн.
Критерии приёмки
- Сервис systemd active (running).
- Домен открывается по HTTPS и перенаправляет на Etherpad.
- Возможность создать pad и видеть обновления в реальном времени из двух разных браузеров.
- Резервное копирование БД успешно выполняется.
Тесты приемки (несколько базовых кейсов)
- Создание pad и одновременное редактирование из двух вкладок: изменения синхронизируются.
- Экспорт pad в формат PDF/HTML.
- Перезапуск etherpad.service: приложение восстанавливается автоматически.
- Удаление файла сертификата: nginx падает — certbot/логика восстановления уведомляет админа.
Совместимость и заметки по версиям
- Рекомендуется Node.js LTS (16.x) для совместимости с текущими релизами Etherpad. Новые версии Node.js тестируйте отдельно.
- Плагины могут иметь собственные требования — перед обновлением приложения тестируйте плагины.
Безопасность: матрица рисков и смягчение
- Утечка данных из базы — риск: средний. Митигирование: шифрование бэкапов, ограничение доступа к БД, бэкапы вне сети продакшн.
- Уязвимость Nginx/сертификатов — риск: средний. Митигирование: автоматические обновления, мониторинг certbot.
- Подмена контента через MITM (если нет TLS) — риск: высокий. Митигирование: обязательный TLS и HSTS при возможности.
GDPR/Конфиденциальность — заметки
Если вы храните персональные данные (имена, e‑mail, содержимое документов), убедитесь, что:
- У вас есть юридическая основа для обработки данных.
- Бэкапы защищены и шифруются при хранении вне защищённой среды.
- Пользователи информированы о политике хранения и удаления данных.
Мини‑словарь (1‑строчная глоссария)
- Pad — отдельный документ/поле для совместного редактирования в Etherpad.
- systemd — система инициализации и управления сервисами в Debian.
- TLS — протокол шифрования трафика (ранее известен как SSL).
- Nginx — веб-сервер и обратный прокси.
Заключение
Вы установили Etherpad на Debian 11, подключили MariaDB, настроили сервис systemd и проксирование через Nginx с TLS. После базовой установки важно внедрить регулярные бэкапы, мониторинг и процесс обновлений. Etherpad — гибкая платформа; при росте нагрузки стоит подумать о контейнеризации и горизонтальном масштабировании.
Если нужно, могу подготовить:
- шаблон playbook для Ansible с переносом всех шагов,
- Docker Compose конфигурацию для тестовой среды,
- план миграции из SQLite в MariaDB с пошаговыми командами.
Дополнительные ресурсы и официальная документация Etherpad доступны на странице проекта в GitHub и официальном сайте проекта.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента