Чек-лист для production

Используйте этот чек-лист перед развертыванием DocPlatform в production-среде. Каждый пункт ссылается на соответствующий раздел документации.

Обязательно

Эти пункты необходимы для безопасного и надежного production-развертывания.

Сервер

  • Persistent storage настроено — примонтируйте volume или используйте стабильный путь файловой системы для DATA_DIR. Потеря этой директории означает потерю всех данных.
  • Менеджер процессов настроен — используйте systemd, Docker с restart: unless-stopped или оркестратор контейнеров для обеспечения перезапуска сервера после сбоев или перезагрузок.
  • Порт доступен — убедитесь, что настроенный PORT (по умолчанию: 3000) доступен из вашей сети или reverse proxy.
  • Достаточно ресурсов — минимум 128 МБ RAM, 200 МБ диска. Рекомендуется 512 МБ RAM, 1 ГБ диска.

Безопасность

  • TLS включен — запускайте за reverse proxy (Caddy, nginx, облачный балансировщик нагрузки) с HTTPS. DocPlatform не выполняет TLS-терминацию самостоятельно.
  • JWT-ключ защищен — файл jwt-key.pem позволяет подделывать токены аутентификации. Ограничьте права файловой системы: chmod 600.
  • Первый пользователь зарегистрирован — первый зарегистрированный пользователь становится Super Admin. Зарегистрируйте учетную запись администратора до открытия сервера для других.
  • Привязка к localhost — при использовании reverse proxy на том же хосте установите HOST=127.0.0.1, чтобы DocPlatform не был доступен напрямую.

Резервные копии

  • Резервные копии включеныBACKUP_ENABLED=true (по умолчанию). Проверьте, что резервные копии создаются в {DATA_DIR}/backups/.
  • Срок хранения заданBACKUP_RETENTION_DAYS настроен в соответствии с вашей политикой (по умолчанию: 7 дней).
  • Внесерверное резервное копирование — копируйте файлы резервных копий в отдельное хранилище (S3, NFS, другой сервер). Резервные копии на диске не защищают от отказа диска.

Рекомендуется

Эти пункты улучшают надежность, безопасность и удобство работы команды.

Аутентификация

  • OIDC настроен — если ваша команда использует Google или GitHub, включите OIDC-вход для делегирования управления паролями. Смотрите Аутентификация.
  • SMTP настроен — включите email для приглашений в workspace и сброса пароля. Без SMTP токены выводятся в stdout. Смотрите Переменные окружения.

Git

  • SSH deploy key подготовлен — для приватных репозиториев сгенерируйте выделенный deploy key с доступом на запись. Смотрите Интеграция с Git.
  • Webhook настроен — для почти мгновенной синхронизации настройте push webhook у вашего хостинг-провайдера git. Polling (по умолчанию: 5 минут) работает, но добавляет задержку.
  • Git установлен на хосте — хотя go-git обрабатывает большинство операций, native git CLI необходим для больших репозиториев (>1 ГБ).

Мониторинг

  • Health endpoint мониторится — опрашивайте GET /health из системы мониторинга (Uptime Robot, Prometheus blackbox exporter и т.д.).
  • Логи собираются — DocPlatform выводит JSON-структурированные логи в stdout. Направляйте их в агрегатор логов (ELK, Datadog, CloudWatch).
  • Использование диска мониторится — базы данных SQLite и поисковые индексы растут с увеличением контента. Настройте алерт при использовании диска свыше 80%.

Эксплуатация

  • docplatform doctor запущен — выполните docplatform doctor после начальной настройки для проверки консистентности FS/DB, состояния поиска и битых ссылок.
  • Процесс обновления задокументирован — задокументируйте, как ваша команда обновляет DocPlatform (замена бинарного файла + перезапуск или Docker pull + пересоздание).
  • План отката готов — сохраните предыдущую версию бинарного файла и знайте, как восстановить из резервной копии базы данных.

Ограничения ресурсов Community Edition

Community Edition включает следующие жестко заданные ограничения:

Ресурс Ограничение
Пользователи с ролью Editor и выше Без ограничений
Workspaces Без ограничений
Viewers и Commenters Без ограничений
Страниц на workspace Без ограничений

Community Edition не имеет ограничений по функциональности. Все возможности доступны без лицензионного ключа.

Вопросы масштабирования

DocPlatform Community Edition работает как единый экземпляр с базой данных SQLite с единственным писателем. Это правильная архитектура для целевого масштаба:

Метрика Протестированный лимит
Страницы 1 000
Одновременные пользователи 50
Workspaces 10
Задержка рендеринга страницы < 50 мс (p99)
Задержка поиска < 50 мс (p99)
Использование памяти < 200 МБ под нагрузкой

Если вам нужно масштабироваться за эти пределы, будущие версии поддержат развертывание нескольких экземпляров, внешние базы данных и Meilisearch.

Усиление безопасности

Сеть

  • Запускайте за reverse proxy с TLS
  • Установите HOST=127.0.0.1 для блокировки прямого доступа
  • Используйте правила файрвола для ограничения доступа к серверу
  • WebSocket proxy — убедитесь, что ваш reverse proxy поддерживает WebSocket upgrade. Без этого присутствие в реальном времени и live-обновления не будут работать. И Caddy, и nginx (с proxy_http_version 1.1 и заголовками Upgrade) поддерживают это.

Заголовки ответа

DocPlatform автоматически устанавливает заголовки безопасности на все ответы:

Заголовок Значение
X-Content-Type-Options nosniff
X-Frame-Options DENY
Content-Security-Policy default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'
X-Request-ID ULID (уникальный для каждого запроса)

Файловая система

  • Запускайте от имени выделенного пользователя без root-прав (systemd: User=docplatform)
  • Ограничьте права на директорию данных: chmod 700 {DATA_DIR}
  • Ограничьте права на JWT-ключ: chmod 600 {DATA_DIR}/jwt-key.pem

Аутентификация

  • Включите OIDC для уменьшения количества локально хранимых учетных данных
  • Используйте надежные пароли (DocPlatform использует argon2id — устойчив к перебору)
  • Периодически проверяйте активные сессии (Admin panel -> Users -> Sessions)

Обновления

  • Подпишитесь на GitHub Releases для получения обновлений безопасности
  • Обновляйтесь оперативно при выпуске патчей безопасности
  • Выполняйте docplatform doctor после каждого обновления

Пример: минимальная production-настройка

# 1. Install
sudo mv docplatform /usr/local/bin/

# 2. Create service user and data directory
sudo useradd -r -s /sbin/nologin docplatform
sudo mkdir -p /var/lib/docplatform
sudo chown docplatform:docplatform /var/lib/docplatform

# 3. Initialize workspace
cd /var/lib/docplatform
sudo -u docplatform docplatform init \
  --workspace-name "Docs" \
  --slug docs

# 4. Configure environment
sudo mkdir -p /etc/docplatform
sudo tee /etc/docplatform/.env <<EOF
PORT=3000
HOST=127.0.0.1
DATA_DIR=/var/lib/docplatform
BACKUP_RETENTION_DAYS=30
EOF

# 5. Create systemd service (see Binary Deployment guide)
# 6. Set up reverse proxy with TLS (see Binary Deployment guide)

# 7. Start and verify
sudo systemctl enable --now docplatform
docplatform doctor

# 8. Register admin account at https://docs.yourcompany.com