Как разместить 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.
