DC_CMS/README.md

68 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DC CMS
Отдельный сервис администрирования сайтов DCTOUCH / NODE.DC.
## Первый подключенный проект
`projects/nodedc.json` подключает существующий сайт:
- `siteRoot`: локальный путь к репозиторию сайта.
- `previewUrl`: локальный адрес предпросмотра.
- `publicUrl`: публичный домен сайта.
- `deploy`: настройки будущей публикации на хостинг.
Пароль хостинга не хранится в JSON. В конфиге указывается имя переменной окружения, например `MCHOST_PASSWORD`.
## Локальный запуск
```bash
PORT=8210 npm run admin
```
Админка будет доступна на `http://127.0.0.1:8210/`. Подключенный сайт хранится как управляемый проект, но не является корневым UI этого сервиса.
## Запуск с Authentik
Полная локальная связка лежит в `infra/`: CMS, отдельный Authentik, Postgres и Caddy reverse proxy. Секреты хранятся только в локальном `infra/.env`; файл игнорируется git и Docker build context.
Для локальных доменов нужны host aliases:
```bash
127.0.0.1 cms.local.nodedc cms-auth.local.nodedc cms-auth-admin.local.nodedc
```
Старт:
```bash
docker compose --env-file infra/.env -f infra/docker-compose.yml up -d --build
```
Адреса:
- CMS: `http://cms.local.nodedc:8210/`
- Authentik login: `http://cms-auth.local.nodedc:8210/`
- Authentik admin: `http://cms-auth-admin.local.nodedc:8210/if/admin/`
Compose-сервис `authentik-bootstrap` создает OIDC-приложение `dc-cms`, группы `dc-cms:*` и стартового администратора из `infra/.env`. После первичного входа временный пароль нужно заменить в Authentik; следующие deploy не перетрут пароль, пока `CMS_BOOTSTRAP_FORCE_PASSWORD=false`.
CMS обращается к OIDC discovery внутри compose-сети через host-alias Authentik-домена (`CMS_AUTH_DOMAIN`), а не напрямую в контейнер `authentik-server`. Это сохраняет тот же Host/issuer-контекст, который видит браузер.
## Synology
Для Synology используется отдельный env-шаблон `infra/.env.synology.example`. Рабочий файл должен лежать рядом как `infra/.env.synology` и не должен попадать в artifact.
Публичные host routes:
- `cms.dcserve.ru` -> CMS.
- `auth.dcserve.ru` -> Authentik login/OIDC issuer.
- `auth-admin.dcserve.ru` -> Authentik admin, опционально и лучше не открывать публично без необходимости.
DNS-записи должны вести на внешний IP NAS. В Synology Reverse Proxy:
- `cms.dcserve.ru` -> `http://172.22.0.222:9918`
- `auth.dcserve.ru` -> `http://172.22.0.222:9919`
Оба target-порта ведут в один Caddy контейнер внутри compose-проекта `dc-cms`; Caddy разводит запросы по Host.
На Synology bootstrap Authentik выполняется автоматически внутри compose-проекта при `nodedc-deploy apply`. Ручной вход в worker, `VENV_PATH`, отдельный `apply_blueprint` и shell-скрипты не являются штатным сценарием.