Перейти к содержанию

Переменные окружения

Полный справочник переменных окружения. Конфигурация задаётся через файл .env в корне проекта (читается django-environ). Это единый источник истины по переменным — шаблоны .env.example (локально) и deploy/selectel/.env.example (прод) ссылаются сюда.

Секреты не коммитятся

.env добавлен в .gitignore. В репозитории хранятся только шаблоны *.example без реальных значений. Никогда не коммитьте заполненный .env.

Колонка Окружение показывает, где переменная нужна: dev — локальная разработка, prod — сервер, оба — везде.


Django

Переменная Окружение По умолчанию Описание
DJANGO_SETTINGS_MODULE оба Модуль настроек. Локально config.settings.dev, на проде config.settings.prod.
SECRET_KEY оба — (обязательна) Криптоключ Django. На проде сгенерировать: python3 -c "import secrets; print(secrets.token_urlsafe(50))".
DEBUG оба False Режим отладки. Локально True, на проде строго False.
ALLOWED_HOSTS оба пусто Список хостов через запятую. Локально localhost,127.0.0.1, на проде — домен сайта.

База данных

Переменная Окружение По умолчанию Описание
DATABASE_URL prod URL подключения к Postgres. Хост — имя сервиса compose (db), а не localhost.

Локально база — SQLite

Настройки dev жёстко используют SQLite (db.sqlite3) и DATABASE_URL не читают. Переменная нужна только на проде (prod).

Postgres (контейнер db)

Читаются Docker Compose на проде. Значения должны совпадать с DATABASE_URL.

Переменная Окружение По умолчанию Описание
POSTGRES_DB prod Имя базы (demoplast).
POSTGRES_USER prod Пользователь БД (demoplast).
POSTGRES_PASSWORD prod Пароль. Тот же, что в DATABASE_URL.

Docker Compose

Переменная Окружение По умолчанию Описание
COMPOSE_PROJECT_NAME prod имя папки Имя проекта Compose — фиксирует имена томов. Для проекта demo-plast.
SITE_DOMAIN prod Домен для маршрутизации Traefik и выпуска TLS-сертификата. На демо — demoplast.skerter.dev. Единственное место, где задаётся домен: compose.yaml подставляет его в labels.

Sentry (мониторинг ошибок)

Переменная Окружение По умолчанию Описание
SENTRY_DSN prod пусто DSN проекта на sentry.io. Пусто → Sentry не активируется.
SENTRY_TRACES_SAMPLE_RATE prod 0.2 Доля трейсов производительности (0.0–1.0).

Персональные данные вырезаются

Перед отправкой в Sentry имена, телефоны и e-mail удаляются (config/sentry.py, before_send) — требование 152-ФЗ. См. Соответствие 152-ФЗ.

Email (SMTP)

Доступ отправителя писем о заявках. Получатель задаётся в админке (SiteSettings → «E-mail для уведомлений»), а не здесь.

Переменная Окружение По умолчанию Описание
DEFAULT_FROM_EMAIL оба пусто Адрес-отправитель. Должен совпадать с EMAIL_HOST_USER.
EMAIL_HOST prod пусто SMTP-сервер (smtp.example.com).
EMAIL_PORT prod 465 Порт SMTP (типично 465 для implicit SSL).
EMAIL_HOST_USER prod пусто Логин SMTP (адрес ящика-отправителя).
EMAIL_HOST_PASSWORD prod пусто Пароль приложения (не обычный пароль).
EMAIL_USE_SSL prod True Implicit SSL (порт 465).
EMAIL_USE_TLS prod False STARTTLS (порт 587). Взаимоисключающа с EMAIL_USE_SSL.

SSL и TLS — взаимоисключающие

Одновременно EMAIL_USE_SSL=True и EMAIL_USE_TLS=True нельзя — Django откажется стартовать. Для Яндекса: SSL=True, TLS=False, порт 465.

Локально SMTP не нужен: настройки dev печатают письма в консоль. Подробности настройки — Каналы уведомлений.

Telegram

Переменная Окружение По умолчанию Описание
TELEGRAM_BOT_TOKEN prod пусто Токен бота от @BotFather. chat_id — в админке.

amoCRM

Переменная Окружение По умолчанию Описание
AMOCRM_BASE_URL prod пусто https://<поддомен>.amocrm.ru.
AMOCRM_CLIENT_ID prod пусто Из карточки интеграции.
AMOCRM_CLIENT_SECRET prod пусто Из карточки интеграции.
AMOCRM_REDIRECT_URI prod пусто Из карточки интеграции.
AMOCRM_PIPELINE_ID prod 0 ID воронки. 0 = первый этап главной воронки.
AMOCRM_STATUS_ID prod 0 ID этапа. 0 = по умолчанию.

ID amoCRM должны быть числом

AMOCRM_PIPELINE_ID и AMOCRM_STATUS_ID нельзя оставлять пустыми — ставьте 0, иначе контейнер web не стартует.

Traefik (deploy/infra/.env)

Отдельный файл для стека Traefik (только одна переменная).

Переменная Окружение По умолчанию Описание
ACME_EMAIL prod E-mail для регистрации сертификатов Let's Encrypt.
COMPOSE_PROJECT_NAME prod infra Имя проекта Compose — фиксирует отдельное имя для инфраструктуры Traefik.