Skip to content

Чеклист для продакшена

Прежде чем открыть ваш инстанс pipel8ne пользователям, пройдите этот чеклист.

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

  • [ ] JWT_SECRET — длинная случайная строка (64+ шестнадцатеричных символа, не заглушка)
  • [ ] SECRETS_ENCRYPTION_KEY — ровно 32 байта (64 шестнадцатеричных символа, не заглушка)
  • [ ] Оба секрета сохранены в резервную копию в безопасном месте (менеджер паролей, менеджер секретов)
  • [ ] Ни один секрет не зафиксирован в системе контроля версий
  • [ ] Аутентификация MongoDB включена — не запускайте MongoDB без имени пользователя/пароля
  • [ ] MongoDB не открыта публично — привязана к localhost или используется внутренняя сеть Docker
  • [ ] HTTPS настроен — используется обратный прокси (Nginx, Caddy) с действительным TLS-сертификатом
  • [ ] NODE_ENV=production установлен — это отключает Swagger UI на /docs
  • [ ] Публичная регистрация отключена после создания аккаунтов для команды (Настройки → Администрирование)

Надёжность

  • [ ] Автоматические резервные копии MongoDB настроены
  • [ ] Бэкенд управляется менеджером процессов (PM2, systemd, политика перезапуска Docker) для восстановления после сбоев
  • [ ] Проверка здоровья — убедитесь, что бэкенд отвечает: curl http://localhost:3000/api/auth/registration-status

Сеть

  • [ ] Правила брандмауэра — только порты 80 и 443 (или порт прокси) должны быть открыты для интернета
  • [ ] Порт MongoDB 27017 закрыт от внешнего доступа

Обслуживание

  • [ ] Политика обновлений — план, как вы будете получать обновления (git pull + пересборка + перезапуск)
  • [ ] Мониторинг дискового пространства — данные MongoDB и Docker-тома растут со временем

Укрепление MongoDB

При запуске MongoDB в Docker убедитесь, что файл Compose использует аутентификацию:

yaml
services:
  mongo:
    image: mongo:7
    environment:
      MONGO_INITDB_ROOT_USERNAME: pipel8ne
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
    volumes:
      - mongo_data:/data/db
    # НЕ открывайте порт 27017 хосту в продакшене
    # ports:
    #   - "27017:27017"

Добавьте MONGO_PASSWORD в ваш .env.


Рекомендуемая архитектура (один сервер)

Интернет


[Nginx + TLS :443]


[pipel8ne бэкенд :3000]


[MongoDB :27017]  ← только внутренний, не открыт

Все сервисы на одном хосте. Nginx обрабатывает TLS и проксирует запросы к бэкенду. MongoDB слушает только на localhost (или во внутренней сети Docker).


Рекомендуемая архитектура (раздельные сервисы)

Интернет


[Балансировщик нагрузки + TLS]


[pipel8ne бэкенд]  (возможно несколько экземпляров)


[MongoDB Atlas или управляемый MongoDB]  ← требуется TLS-соединение

Используйте MongoDB Atlas или управляемого провайдера баз данных для автоматических резервных копий, репликации и отказоустойчивости.

Released under the MIT License.