# 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`. ## 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-скрипты не являются штатным сценарием.