✨ feat: запуск без .env — всё настраивается в UI, и порталы по дизайну

Первичное требование: поднял докер — прошёл мастер — дальше всё в интерфейсе.
Ни одной переменной окружения задавать не нужно и негде.

Запуск и секреты:
- .env.example удалён, мёртвые переменные вычищены; секреты инстанса
  генерирует одноразовый сервис secrets в именованный том, пароли БД —
  через POSTGRES_*_PASSWORD_FILE;
- Caddy: catch-all :80 и on_demand TLS вместо хостов в конфиге — свежая
  коробка отвечает по IP и по любому домену, до мастера дойти можно;
- адрес установки, SMTP и TURN переехали в настройки (InstanceSettings,
  миграции 0027–0030), внешние ссылки строятся от него;
- deploy/cli больше не читает .env; сборка образов в ghcr через GitHub
  Actions, release.env с digest-пинами;
- куки Secure/__Host- выставляются по факту TLS запроса, а не настройкой.

Порталы (дизайн-базлайн v2, кадры PT1–PT8):
- список, карточка портала, библиотека материалов, редактор статьи и
  настройки — ширины и ритм как в остальных разделах;
- файлы статьи: изображение вставляется в текст своим механизмом, файл
  прикрепляется вложением и выводится на портале списком с иконкой формата;
- ссылки на файлы приводятся к относительным: абсолютный хост резал CSP
  портала и картинка не появлялась;
- «Опубликовать» сверяется с сервером и публикует то, что на экране, а не
  ранее выбранную редакцию;
- колонка «Оценки» в списке статей и блок оценок в редакторе.

Первый запуск: полоса «демо-данные устанавливаются» — установка идёт в
worker, и без неё человек видел пустые разделы без объяснения.

Починен фон: вторичное хранилище стало best-effort — при живых остаточных
S3-ключах повторная загрузка файла падала в 500.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Andrey committed 2026-09-07 20:37:48 +03:00
1 parent 3672463363
commit 41a4b0dd84
128 files changed
+7575 -1547

No files matched your search

+16 -1
View File
@@ -1,6 +1,6 @@
# Override для локальной разработки (ADR-HUB-0028 §compose.dev).
# Применяется поверх canonical compose.yaml:
# docker compose -f compose.yaml -f compose.dev.yaml --env-file .env.example --env-file .env up
# docker compose -f compose.yaml -f compose.dev.yaml up
# Переопределяет image на build, dev-команды, bind mounts и host-порты.
# Не определяет отдельную production-топологию.
@@ -19,6 +19,9 @@ services:
context: .
dockerfile: apps/backend/Dockerfile
environment:
# Dev-контур работает по http на localhost: без DEBUG включается
# SSL-redirect и SPA не может ходить в API. В коробке DEBUG выключен.
CHATBALLS_DEBUG: "true"
CHATBALLS_DELIVERY_MODE: ${CHATBALLS_DELIVERY_MODE:-CLOUD}
CHATBALLS_HELP_BASE_DOMAIN: localhost
CHATBALLS_HELP_PUBLIC_SCHEME: http
@@ -34,6 +37,9 @@ services:
ports:
- "${BACKEND_APP_PORT:-8010}:8000"
environment:
# Dev-контур работает по http на localhost: без DEBUG включается
# SSL-redirect и SPA не может ходить в API. В коробке DEBUG выключен.
CHATBALLS_DEBUG: "true"
CHATBALLS_DELIVERY_MODE: ${CHATBALLS_DELIVERY_MODE:-CLOUD}
CHATBALLS_ALLOWED_HOSTS: "localhost,127.0.0.1,.localhost"
CHATBALLS_HELP_BASE_DOMAIN: localhost
@@ -57,6 +63,9 @@ services:
ports:
- "${BACKEND_PLATFORM_PORT:-8011}:8000"
environment:
# Dev-контур работает по http на localhost: без DEBUG включается
# SSL-redirect и SPA не может ходить в API. В коробке DEBUG выключен.
CHATBALLS_DEBUG: "true"
CHATBALLS_DELIVERY_MODE: ${CHATBALLS_DELIVERY_MODE:-CLOUD}
CHATBALLS_ALLOWED_HOSTS: "localhost,127.0.0.1,.localhost"
CHATBALLS_HELP_BASE_DOMAIN: localhost
@@ -71,6 +80,9 @@ services:
dockerfile: apps/backend/Dockerfile
command: uvicorn chatballs_backend.asgi_admin:application --host 0.0.0.0 --port 8000 --reload
environment:
# Dev-контур работает по http на localhost: без DEBUG включается
# SSL-redirect и SPA не может ходить в API. В коробке DEBUG выключен.
CHATBALLS_DEBUG: "true"
CHATBALLS_DELIVERY_MODE: ${CHATBALLS_DELIVERY_MODE:-CLOUD}
volumes:
- ./apps/backend:/app/apps/backend
@@ -80,6 +92,9 @@ services:
context: .
dockerfile: apps/backend/Dockerfile
environment:
# Dev-контур работает по http на localhost: без DEBUG включается
# SSL-redirect и SPA не может ходить в API. В коробке DEBUG выключен.
CHATBALLS_DEBUG: "true"
CHATBALLS_DELIVERY_MODE: ${CHATBALLS_DELIVERY_MODE:-CLOUD}
volumes:
- ./apps/backend:/app/apps/backend