72 lines
3.2 KiB
Markdown
72 lines
3.2 KiB
Markdown
# 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 /usr/local/bin/docker compose --env-file .env.synology -f docker-compose.yml exec -T authentik-worker sh -lc 'if command -v ak >/dev/null 2>&1; then ak shell < /bootstrap/bootstrap-cms.py; else /lifecycle/ak shell < /bootstrap/bootstrap-cms.py; fi'
|
||
```
|