Об этом проекте

Etherpad — это редактор документов для совместной работы в реальном времени, предназначенный для документов, где важны авторство и история. Он поддерживается с 2009 года небольшой командой волонтёров и выпущен под лицензией Apache License v2. Основные возможности, описанные в README: - Совместное редактирование в реальном времени: каждое нажатие клавиши приписывается автору, цвета авторов отображаются в тексте. - Полная история правок сохраняется, с таймслайдером для просмотра истории документа посимвольно. - Встроенный полный экспорт данных, так что история документа остаётся доступной оператору. - Самостоятельное размещение: проект заявляет об отсутствии телеметрии и допродаж, а функции ИИ подключаются через плагины, указывающие на модель по выбору оператора. Документ PRIVACY.md описывает два сетевых вызова, которые можно отключить, в собственном коде Etherpad. - Масштабируемость: проект ссылается на страницу теста масштабирования, указывающую на поддержку тысяч одновременных редакторов на один пад. - Интернационализация: переведён на 105 языков, в основном через TranslateWiki. - Расширяемость: платформа плагинов с сотнями плагинов, доступных через сайт плагинов, устанавливаемых из веб-интерфейса администратора или из командной строки. - Встраиваемость: HTTP API для управления падами, пользователями и группами, с определениями OpenAPI по адресу /api/openapi.json, а также jQuery-плагин для встраивания падов на веб-сайты. Варианты установки, описанные в README: - Установщики одной командой для macOS/Linux/WSL (shell) и Windows (PowerShell), которые клонируют репозиторий, устанавливают зависимости и собирают фронтенд. Требуются Node.js >= 24 и git. Можно задать переменную окружения для установки и запуска одним шагом. - Пример Docker Compose с использованием официального образа, публикуемого в Docker Hub и GitHub Container Registry, с сервисом PostgreSQL, постоянными томами для плагинов и данных var, а также переменными окружения для пароля администратора, подключения к базе данных и других настроек. - Ручные шаги: установить pnpm, клонировать репозиторий, выполнить pnpm i, pnpm run build:etherpad, затем pnpm run prod, и открыть localhost:9001. Конфигурация и администрирование: - Настройки находятся в settings.json, поддерживаются альтернативные файлы настроек, переопределения учётных данных, файлы ключа API и ключа сессии, а также подстановка переменных окружения с использованием синтаксиса ${ENV_VAR} или ${ENV_VAR:default_value}. - Настройки также можно изменять через веб-интерфейс /admin. - README рекомендует использовать выделенную базу данных, такую как MySQL или PostgreSQL, в производстве, отмечая, что драйвер dirtyDB предназначен только для тестирования или разработки. - Для аутентификации рекомендуется хранить хэши, а не пароли в открытом виде, и указывается на плагин ep_hash_auth. - Предлагаемые плагины для аутентификации OpenID Connect включают ep_openid_connect, ep_guest, ep_user_displayname и ep_stable_authorid. - Предлагаемый набор плагинов для более богатых функций редактирования включает ep_align, ep_comments_page, ep_embedded_hyperlinks2, ep_font_color, ep_headings2, ep_markdown и ep_webrtc. - Варианты скинов можно изучить через URL skinvariantsbuilder. Разработка и статус проекта: - Отладка через bin/debugRun.sh и быстрый старт через bin/fastRun.sh, который пропускает обновление зависимостей. - Библиотека Easysync, лежащая в основе поведения в реальном времени, документирована в PDF в репозитории. - Рекомендации для участников приведены в CONTRIBUTING.md. - В README указано, что проект активно ищет мейнтейнеров с опытом в Node.js, системах реального времени или инструментах институционального сотрудничества. - Бейджи CI покрывают качество кода (CodeQL), бэкенд-тесты, симулированную нагрузку, ограничение скорости, Docker и тесты фронтенда/админки. Заявленные пользователи включают Фонд Викимедиа, государственные учреждения ЕС, университеты и школы, проекты гражданских технологий и делиберативной демократии, новостные редакции и многие самостоятельно размещённые инстансы. Публичный инстанс доступен для ознакомления. Каналы поддержки: GitHub issues, Discord-сервер и адреса электронной почты для ответственного раскрытия уязвимостей.