Индекс журналаDockup / заметка с места
Note / self-host-etherpad

Как разместить Etherpad самостоятельно в 2026 году: pads, плагины и резервное копирование базы данных

Практическое руководство по самостоятельному размещению Etherpad: Docker, порты, постоянные данные, TLS, безопасность, резервные копии и проблемы, которые мешают использовать сервис в production. С проверками.

Если вы уже пытались разместить Etherpad самостоятельно, то, скорее всего, знакомы с раздражающей ситуацией: интерфейс открывается, но сессии отключаются из-за слишком коротких тайм-аутов proxy. Пересоздание контейнера редко устраняет несоответствие между URL, состоянием и зависимостями.

В этом руководстве используется один конкретный критерий готовности — открыть один pad в двух браузерах, одновременно редактировать его, проверить ревизии и экспортировать результат в требуемом формате. Каждое решение по конфигурации оценивается относительно этого критерия, а не по зелёному статусу контейнера.

Выберите минимально необходимую топологию Etherpad

Минимально ответственная топология Etherpad включает один приватный listener на порту 9001, маршрут ingress и документированную границу состояния. Сетевой контракт Etherpad для надёжной работы с несколькими пользователями — Postgres или другая поддерживаемая база данных. Приватные endpoints следует размещать во внутреннем DNS, разрешать только необходимые исходящие запросы и выдавать Etherpad service credential с ограниченной областью действия.

Проверьте топологию: попросите чистый клиент открыть один pad в двух браузерах, одновременно отредактировать его, проверить ревизии и экспортировать результат в требуемом формате. Во время выполнения отслеживайте WebSocket-сессии, число ревизий, записи в базу данных и выполнение плагинов. Результат покажет, нужно ли следующее улучшение в области памяти, хранилища, сети или отдельного worker, вместо того чтобы произвольно увеличивать размер контейнера.

Соберите заменяемый контейнер Etherpad

Используйте контейнер как заменяемый runtime, а не как место хранения истины.

docker run -d \
  --name etherpad \
  --restart unless-stopped \
  -p 127.0.0.1:9001:9001 \
  -v etherpad-data:/opt/etherpad-lite/var \
  -e ADMIN_PASSWORD=replace-with-a-long-random-value \
  etherpad/etherpad:latest

Добавьте проверенные параметры подключения к Postgres или другой поддерживаемой базе данных для надёжной работы с несколькими пользователями; для приватных сервисов используйте приватные имена. Перед публикацией сервиса проверьте пользователя контейнера, доступные для записи пути и listener, к которому привязан сервис. Выполните полный сценарий — откройте один pad в двух браузерах, одновременно отредактируйте его, проверьте ревизии и экспортируйте результат в требуемом формате — и сохраните точную ссылку на image, с которой был получен результат.

Не позволяйте успешной работе proxy скрывать сбой приложения

Браузер, API-клиент и Etherpad должны использовать один origin. Чтобы обеспечить это, задайте публичный URL и поддержку WebSocket в proxy. Сохраняйте исходные host и protocol, не допуская появления порта 9001 в качестве конкурирующего публичного адреса.

Руководство по устранению проблем с недоступным сайтом помогает отличить недоступный маршрут от приложения, которое отвечает. Это различие особенно важно: сессии отключаются из-за слишком коротких тайм-аутов proxy. Изменения ingress исправляют только первую проблему; для второй нужны проверка логов Etherpad, состояния или нагрузки.

Спроектируйте восстановление Etherpad до запуска

Защитите состояние Etherpad до оптимизации его контейнера. В обязательный набор входят база данных, загруженные плагины и настройки. Подключите /opt/etherpad-lite/var до bootstrap, запишите безвредные тестовые данные и замените контейнер, чтобы доказать фактическую постоянность этого пути. Если несколько хранилищ должны оставаться согласованными, задокументируйте порядок приостановки записей и создания резервных копий.

Храните копии за пределами сервера развёртывания и шифруйте материалы, содержащие credentials или приватный контент. Восстановление считается успешным, когда возвращаются pads, авторы, ревизии и плагины, а параллельные изменения по-прежнему согласованно сходятся. Разница между persistent mount и независимой копией рассматривается в разделе постоянное хранилище и snapshots.

Определите границу доверия Etherpad

Закройте bootstrap-окно сразу после появления первого доверенного администратора. Конкретная ловушка Etherpad — поставлять известный пароль администратора или оставлять возможность редактирования pads для всех; более безопасный вариант — задать настоящий пароль администратора, определить, кто может создавать pads, и не считать непредсказуемый URL pad приватным.

Немедленно замените пример ADMIN_PASSWORD, храните его за пределами image и ротируйте как credential администратора, если он был раскрыт. Приватная сеть должна использоваться для передачи credentials зависимостей, а роли внутри Etherpad должны разрешать минимально необходимое действие. Не записывайте чувствительные тела запросов и ответы провайдеров в обычные логи.

Обновляйте Etherpad без догадок

Отслеживайте работу Etherpad: WebSocket-сессии, число ревизий, записи в базу данных и выполнение плагинов. Устанавливайте лимиты с запасом под эту нагрузку и не используйте liveness probe, конкурирующую с ней за ресурсы. Проверка оператора по расписанию всё равно должна пытаться открыть один pad в двух браузерах, одновременно отредактировать его, проверить ревизии и экспортировать результат в требуемом формате.

При обновлении учитывайте, что версии плагинов Etherpad, синтаксис настроек и миграции базы данных следует тестировать вместе. Разверните candidate-версию на восстановленной копии и повторите известный тест. Если сессии отключаются из-за слишком коротких тайм-аутов proxy, используйте runtime-логи и фактический сетевой запрос, чтобы выяснить, какое предположение изменилось.

Что должно пройти до появления реальных данных Etherpad

Для Etherpad определите известную рабочую транзакцию до запуска: откройте один pad в двух браузерах, одновременно отредактируйте его, проверьте ревизии и экспортируйте результат в требуемом формате. Зафиксируйте её prerequisites, ожидаемый ответ и шаги очистки в version control без секретных значений. Зафиксируйте image, использованный для создания этого эталона.

Используйте транзакцию для проверки замены и независимого восстановления. Восстановленный сервис считается приемлемым только тогда, когда возвращаются pads, авторы, ревизии и плагины, а параллельные изменения по-прежнему согласованно сходятся. Одновременно отслеживайте WebSocket-сессии, число ревизий, записи в базу данных и выполнение плагинов, а самую медленную или наиболее ограниченную часть превращайте в service-level alert.

Проверка также должна включать негативный сценарий: временно запретите тестовой identity доступ к Postgres или другой поддерживаемой базе данных для надёжной работы с несколькими пользователями. Убедитесь, что Etherpad выдаёт понятную для действий ошибку, сохраняя данные, восстановите корректное состояние и повторите известную рабочую транзакцию. Хранение обоих результатов не позволяет поверхностному health endpoint стать единственным доказательством готовности к production.

Разворачивайте Etherpad в Dockup, не теряя границы

Для Etherpad Dockup наиболее полезен на границе между image и durable service. Он сохраняет маршрут к порту 9001, TLS, секретные значения и хранилище при замене контейнеров — независимо от того, принадлежат ли вычислительные ресурсы Dockup или подключённому серверу.

Завершите настройку с учётом специфики приложения: задайте публичный URL и поддержку WebSocket в proxy; подключите и протестируйте Postgres или другую поддерживаемую базу данных для надёжной работы с несколькими пользователями; выполните следующую проверку: откройте один pad в двух браузерах, одновременно отредактируйте его, проверьте ревизии и экспортируйте результат в требуемом формате. Сохраните результат как deployment check, чтобы следующее обновление image оценивалось по поведению, а не по статусу контейнера.

Часто задаваемые вопросы

Что нужно Etherpad для production-развёртывания?

Проведите маршрут от контейнера Etherpad на порту 9001 через один HTTPS origin. Требование к поддерживающей сети — Postgres или другая поддерживаемая база данных для надёжной работы с несколькими пользователями. Не объявляйте Etherpad готовым, пока не сможете открыть один pad в двух браузерах, одновременно отредактировать его, проверить ревизии и экспортировать результат в требуемом формате.

Какие данные Etherpad нужно включать в резервную копию?

Сохраняйте /opt/etherpad-lite/var и включайте базу данных, загруженные плагины и настройки в один recovery manifest. Восстановление Etherpad считается успешным только тогда, когда возвращаются pads, авторы, ревизии и плагины, а параллельные изменения по-прежнему согласованно сходятся.

Нужен ли Etherpad HTTPS за reverse proxy?

Используйте HTTPS для публичного origin Etherpad, а порт 9001 оставляйте во внутреннем маршруте. Корректно примените настройку Etherpad: задайте публичный URL и поддержку WebSocket в proxy. Для Etherpad HTTPS защищает credentials и пользовательский контент при передаче и обеспечивает согласованное поведение клиента, зависящее от origin.

Как тестировать обновление Etherpad?

Восстановите текущее состояние Etherpad в изолированном развёртывании, примените candidate-версию и повторите acceptance transaction. Уделите этому особое внимание, поскольку версии плагинов Etherpad, синтаксис настроек и миграции базы данных следует тестировать вместе. Сохраняйте предыдущую image Etherpad, пока не будут понятны границы миграции данных и rollback.