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

Установка Etherpad на Debian 11 — руководство

• 8 min read • DevOps • Обновлено 24 Nov 2025
Установка Etherpad на Debian 11 — руководство
Установка Etherpad на Debian 11 — руководство

TL;DR

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


Обложка: Etherpad интерфейс на веб-сервере

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

  1. Обновите индекс пакетов и установите сборочные зависимости:
sudo apt update
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y
  1. Установим Node.js 16.x из NodeSource (рекомендуется для совместимости с текущими релизами Etherpad):
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs -y
  1. Проверьте версию Node.js:
node --version

Ожидается версия 16.x. Если система возвращает другую мажорную версию, проверьте источник пакета или используйте nvm для управления версиями в тестовой среде.

Совет: в продакшне не рекомендуется запускать разные критические приложения под одной версией Node.js без тестирования на совместимость с плагинами Etherpad.

Установка и настройка MariaDB

  1. Установите MariaDB из репозиториев Debian:
sudo apt install mariadb-server -y
  1. Запустите скрипт безопасной установки и следуйте подсказкам:
mysql_secure_installation

Обычно вы переключаете аутентификацию на unix_socket, задаёте пароль root, удаляете анонимных пользователей, запрещаете удалённый вход для root и удаляете тестовую базу.

  1. Войдите в консоль 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

Примечание: для крупных установок рассмотрите использование отдельного сервера базы данных и резервное копирование/репликацию.

Скачивание и установка Etherpad

  1. Создайте системного пользователя для запуска приложения и определите каталог /opt/etherpad-lite:
sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad
  1. Клонируйте исходники и назначьте владельца:
cd /opt/
git clone --branch master https://github.com/ether/etherpad-lite.git
sudo chown -R etherpad:etherpad etherpad-lite
  1. Установите зависимости Node.js скриптом installDeps.sh от имени пользователя etherpad:
cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad

Подождите завершения установки зависимостей. Этот процесс может занять несколько минут в зависимости от сети и ресурсов сервера.

  1. Настройте файл 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"
  },

Сохраните файл и выйдете.

  1. Создайте 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.

Скриншот: запуск etherpad как сервиса systemd

Установка и настройка Nginx в роли обратного прокси

  1. Установите Nginx:
sudo apt install nginx -y
  1. Если включён UFW, откройте порты 80 и 443:
sudo ufw allow "Nginx Full"
  1. Создайте виртуальный хост для вашего домена:
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;
    }
}
  1. Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
  1. Получите TLS-сертификаты (пример с certbot/Let’s Encrypt):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d etherpad.example.io

Certbot автоматически обновляет конфигурацию Nginx и добавляет задачи для автоматического обновления сертификатов.

Скриншот: настройка Nginx как обратного прокси для Etherpad

Проверка установки

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

Скриншот: создание нового pad в Etherpad

Скриншот: интерфейс совместного редактирования Etherpad

Безопасность и эксплуатация — рекомендации

  • Права доступа: запускайте приложение под отдельным системным пользователем (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 (короткая инструкция)

  1. Сделать бэкап базы и архива /opt/etherpad-lite.
  2. Переключить системd в режим maintenance: остановить сервис.
sudo systemctl stop etherpad
  1. В /opt/etherpad-lite выполнить git pull (или клонировать нужную версию в тестовом окружении).
cd /opt/etherpad-lite
git fetch --all
git checkout <релиз>
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad
  1. Запустить сервис и проверить логи.
sudo systemctl start etherpad
sudo journalctl -u etherpad -f
  1. Тестировать функциональность в браузере и мониторить CPU/память.

Инцидентный план: приложение недоступно — быстрый откат

  1. Проверить статус systemd и логи.
  2. Если обновление вызвало проблему, остановить сервис и восстановить из бэкапа базы/файлов:
sudo systemctl stop etherpad
# восстановление каталога и базы из заранее сделанных архивов
  1. Запустить предыдущую версию кода и зависимости, перезапустить сервис.
  2. Анализировать причину в 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 и официальном сайте проекта.

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