# 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/admin/`, а подключенный сайт на `http://127.0.0.1:8210/`. ## Запуск с 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 infra/scripts/bootstrap-authentik.sh ``` Адреса: - CMS: `http://cms.local.nodedc:8210/admin/` - Authentik login: `http://cms-auth.local.nodedc:8210/` - Authentik admin: `http://cms-auth-admin.local.nodedc:8210/if/admin/` Bootstrap создает OIDC-приложение `dc-cms`, группы `dc-cms:*` и стартового администратора из `infra/.env`. После первичного входа временный пароль нужно заменить в Authentik. ## 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. Bootstrap Authentik on Synology: ```bash cd /volume1/docker/dc-cms/source/infra sudo env CMS_ENV_FILE=.env.synology sh ./scripts/bootstrap-authentik.sh ``` Bootstrap выполняется так же, как в платформе NODE.DC: через `authentik-server ak shell < authentik/bootstrap-cms.py`. Ручной вход в worker, `VENV_PATH` и отдельный `apply_blueprint` не являются штатным сценарием.