diff --git a/.env.example b/.env.example index 0249ff8..b8c22f8 100644 --- a/.env.example +++ b/.env.example @@ -17,4 +17,18 @@ POSTGRES_USER=links_user POSTGRES_PASSWORD=links_password # Frontend настройки -NEXT_PUBLIC_API_URL=http://localhost:8000 \ No newline at end of file +NEXT_PUBLIC_API_URL=http://localhost:8000 + +# Опциональные настройки +# DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend +# DJANGO_EMAIL_HOST= +# DJANGO_EMAIL_PORT=587 +# DJANGO_EMAIL_HOST_USER= +# DJANGO_EMAIL_HOST_PASSWORD= +# DJANGO_EMAIL_USE_TLS=True + +# Для продакшена +# DJANGO_SECURE_SSL_REDIRECT=True +# DJANGO_SECURE_HSTS_SECONDS=31536000 +# DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True +# DJANGO_SECURE_HSTS_PRELOAD=True \ No newline at end of file diff --git a/Makefile b/Makefile index db0381f..551f7b1 100644 --- a/Makefile +++ b/Makefile @@ -248,10 +248,23 @@ drone-sign: ## Подпись .drone.yml (требует настройки) @echo "✅ Конфигурация подписана" # === Helper scripts and automation === -generate-env: ## Сгенерировать .env (интерактивно) - @echo "🧭 Генерация .env файла (использует scripts/generate_env.sh)" +generate-env: ## Сгенерировать .env (автоматически из .env.example) + @echo "🧭 Генерация .env файла из .env.example" + @bash ./scripts/generate_env.sh --yes + +generate-env-interactive: ## Сгенерировать .env (интерактивно) + @echo "🧭 Генерация .env файла (интерактивно)" @bash ./scripts/generate_env.sh +generate-env-prod: ## Сгенерировать .env для продакшена + @echo "🚀 Генерация .env для продакшена" + @bash ./scripts/generate_env.sh --yes + @echo "⚠️ ВНИМАНИЕ: Измените значения в .env для продакшена!" + @echo " - DJANGO_SECRET_KEY (сгенерируйте новый)" + @echo " - DJANGO_DEBUG=False" + @echo " - DATABASE_PASSWORD (установите надежный пароль)" + @echo " - DJANGO_ALLOWED_HOSTS (добавьте ваш домен)" + create-superuser-noninteractive: ## Создать/обновить суперпользователя из .env (неинтерактивно) @echo "👤 Создание/обновление суперпользователя из .env" @bash ./scripts/create_superuser.sh diff --git a/scripts/generate_env.sh b/scripts/generate_env.sh index d66ced6..22428f5 100755 --- a/scripts/generate_env.sh +++ b/scripts/generate_env.sh @@ -51,14 +51,25 @@ while IFS= read -r line; do if [[ "$confirm" = true ]]; then # non-interactive: keep example defaults or environment overrides - if [[ -n "${!key-}" ]]; then - new_val="${!key}" - sed -i "s|^$key=.*|$key=$new_val|" "$TARGET" + env_val="" + if [[ -n "${!key:-}" ]]; then + env_val="${!key}" + fi + if [[ -n "$env_val" ]]; then + sed -i "s|^$key=.*|$key=$env_val|" "$TARGET" fi continue fi - read -p "$key [$current_val]: " new_val + # Interactive mode: prompt user for each variable + if read -t 1 -n 0 2>/dev/null; then + # stdin is available for reading + read -p "$key [$current_val]: " new_val || true + else + # no stdin available, skip prompting + new_val="" + fi + if [[ -n "$new_val" ]]; then sed -i "s|^$key=.*|$key=$new_val|" "$TARGET" fi