Переменные окружения
Конфигурация бэкенда pipel8ne осуществляется через переменные окружения, обычно задаваемые в файле .env в корне проекта.
Обязательные переменные
Должны быть заданы до запуска сервера. При их отсутствии приложение откажется запускаться.
JWT_SECRET
Секретный ключ для подписи и проверки JSON Web Token.
Требования:
- Любая строка, но должна быть длинной и случайной (рекомендуется 64+ шестнадцатеричных символа)
- Храните в тайне — любой, кто знает это значение, может подделать токены аутентификации
Генерация:
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"SECRETS_ENCRYPTION_KEY
Ключ для шифрования учётных данных в хранилище (AES-256-GCM).
Требования:
- Ровно 32 байта (64 шестнадцатеричных символа)
- При смене ключа все ранее сохранённые учётные данные станут нечитаемыми
Генерация:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"DANGER
Сделайте резервную копию этого ключа. Если вы его потеряете, все учётные данные в хранилище станут безвозвратно недоступными.
DATABASE_URL
Строка подключения к MongoDB.
Формат:
mongodb://[username:password@]host[:port]/database[?options]Примеры:
# Локальная разработка
DATABASE_URL=mongodb://pipel8ne:dev_password@localhost:27017/pipel8ne_dev?authSource=admin
# MongoDB Atlas
DATABASE_URL=mongodb+srv://user:password@cluster.mongodb.net/pipel8ne?retryWrites=true&w=majority
# Docker Compose (внутренняя сеть)
DATABASE_URL=mongodb://pipel8ne:password@mongo:27017/pipel8ne?authSource=adminНеобязательные переменные
NODE_ENV
Управляет поведением во время выполнения.
| Значение | Эффект |
|---|---|
development | Включает Swagger UI на /docs, подробное логирование |
production | Отключает Swagger UI, минимальное логирование |
По умолчанию: development
PORT
Порт, на котором слушает HTTP-сервер.
По умолчанию: 3000
Полный пример .env
# Обязательные
DATABASE_URL=mongodb://pipel8ne:dev_password@localhost:27017/pipel8ne_dev?authSource=admin
JWT_SECRET=your_64_hex_char_jwt_secret_here
SECRETS_ENCRYPTION_KEY=your_64_hex_char_encryption_key_here
# Необязательные
NODE_ENV=development
PORT=3000Docker Compose
При использовании Docker Compose переменные можно задать в .env в корне проекта. Docker Compose автоматически загружает этот файл:
# docker-compose.yml (фрагмент)
services:
backend:
env_file: .envИли указать прямо в файле compose:
services:
backend:
environment:
- JWT_SECRET=${JWT_SECRET}
- SECRETS_ENCRYPTION_KEY=${SECRETS_ENCRYPTION_KEY}
- DATABASE_URL=mongodb://pipel8ne:${MONGO_PASSWORD}@mongo:27017/pipel8ne