fix(platform): isolate authentik admin styling
This commit is contained in:
@@ -19,6 +19,8 @@ https://ops.nodedc.ru -> Tasker / Operational Core
|
||||
https://ops-agents.nodedc.ru -> Ops Agents Gateway / MCP
|
||||
```
|
||||
|
||||
`id.nodedc.ru` is the user-facing OIDC/login host. Authentik Admin is intentionally not exposed through this public host; `/if/admin/*` returns `404` there.
|
||||
|
||||
В `Caddyfile.http` эти домены проксируются через локальный HTTP edge, но upstream получает `X-Forwarded-Proto: https` и `X-Forwarded-Port: 443`.
|
||||
|
||||
## Локальные домены для первичной проверки
|
||||
@@ -27,6 +29,7 @@ https://ops-agents.nodedc.ru -> Ops Agents Gateway / MCP
|
||||
|
||||
```text
|
||||
172.22.0.222 auth.nas.nodedc
|
||||
172.22.0.222 auth-admin.nas.nodedc
|
||||
172.22.0.222 launcher.nas.nodedc
|
||||
172.22.0.222 task.nas.nodedc
|
||||
```
|
||||
@@ -35,15 +38,19 @@ https://ops-agents.nodedc.ru -> Ops Agents Gateway / MCP
|
||||
|
||||
```text
|
||||
http://auth.nas.nodedc:18080
|
||||
http://auth-admin.nas.nodedc:18080/if/admin/
|
||||
http://172.22.0.222:18080/if/admin/
|
||||
http://launcher.nas.nodedc:18080
|
||||
http://task.nas.nodedc:18080
|
||||
http://task.nas.nodedc:18090
|
||||
```
|
||||
|
||||
`auth-admin.nas.nodedc` is the technical Authentik Admin entrypoint. `172.22.0.222:18080` is a local IP fallback for workstations without `auth-admin.nas.nodedc` DNS. Both keep Authentik access separate from the public `id.nodedc.ru` login entrypoint and do not load NODE.DC auth-flow CSS.
|
||||
|
||||
## Что входит
|
||||
|
||||
- `docker-compose.platform-http.yml` поднимает новый Authentik, Launcher и Caddy edge.
|
||||
- `Caddyfile.http` маршрутизирует локальные `auth/launcher/task.nas.nodedc` и внешние `id/hub/ops.nodedc.ru`.
|
||||
- `Caddyfile.http` маршрутизирует локальные `auth/auth-admin/launcher/task.nas.nodedc`, IP fallback `172.22.0.222` для Authentik Admin и внешние `id/hub/ops.nodedc.ru`.
|
||||
- `deploy-current.sh` синхронизирует compose, Caddyfile и опционально Launcher source в NAS mount. Authentik templates синхронизируются только при явном `SYNC_AUTHENTIK_TEMPLATES=1`.
|
||||
- `backup-current.sh` делает snapshot Launcher runtime/uploads/Auth templates/config и готовит команду `pg_dump` для Authentik Postgres.
|
||||
- Tasker поднимается отдельным compose из `NODEDC_TASKMANAGER/plane-app/docker-compose.yaml` на порту `18090`.
|
||||
@@ -134,7 +141,7 @@ TASKER_SYNC_SOURCE=1 ./infra/synology/deploy-current.sh
|
||||
|
||||
```bash
|
||||
cd /volume1/docker/nodedc-platform/launcher/source
|
||||
sudo /usr/local/bin/docker build -t nodedc/launcher:local .
|
||||
sudo /usr/local/bin/docker build --no-cache -t nodedc/launcher:local .
|
||||
|
||||
cd /volume1/docker/nodedc-platform/platform
|
||||
sudo /usr/local/bin/docker compose \
|
||||
@@ -143,7 +150,61 @@ sudo /usr/local/bin/docker compose \
|
||||
up -d --force-recreate --no-deps launcher
|
||||
```
|
||||
|
||||
После такого deploy проверить `healthz`, запись в launcher storage/uploads и сценарий пользователя без аппрува: сохранение аватара не должно показывать экран `Заявка ожидает подтверждения`.
|
||||
После такого deploy проверить `healthz`, запись в launcher storage/uploads и сценарий пользователя без аппрува: сохранение аватара не должно показывать экран `Заявка ожидает подтверждения`. Дополнительно проверить, что live bundle больше не содержит старый pending gate:
|
||||
|
||||
```bash
|
||||
launcher_asset="$(
|
||||
curl -k -sS --compressed -H 'Accept: text/html' https://hub.nodedc.ru/ \
|
||||
| grep -aoE 'index-[A-Za-z0-9_-]+\.js' \
|
||||
| head -n 1
|
||||
)"
|
||||
test -n "$launcher_asset"
|
||||
if curl -k -sS --compressed "https://hub.nodedc.ru/assets/${launcher_asset}" \
|
||||
| grep -aq 'Заявка ожидает подтверждения'; then
|
||||
echo 'old pending gate still present'
|
||||
exit 1
|
||||
fi
|
||||
echo 'launcher-pending-gate-ok'
|
||||
```
|
||||
|
||||
## Authentik Admin и Brand CSS
|
||||
|
||||
NODE.DC auth-flow CSS must stay template-scoped. Do not store it in Authentik `Brand.branding_custom_css`: Authentik passes that CSS into Admin/User web component runtime and breaks native controls.
|
||||
|
||||
After syncing Authentik templates to NAS, recreate `reverse-proxy authentik-server authentik-worker launcher`, then clear existing global Brand CSS in the live DB:
|
||||
|
||||
```bash
|
||||
cd /volume1/docker/nodedc-platform/platform
|
||||
sudo bash clear-authentik-brand-css.sh
|
||||
```
|
||||
|
||||
Verify:
|
||||
|
||||
```bash
|
||||
id_admin_status="$(
|
||||
curl -k -sS -o /dev/null -w '%{http_code}' https://id.nodedc.ru/if/admin/
|
||||
)"
|
||||
if [[ "$id_admin_status" != "404" ]]; then
|
||||
echo "public id admin is not closed: status=${id_admin_status}"
|
||||
exit 1
|
||||
fi
|
||||
echo 'public-id-admin-closed-ok'
|
||||
|
||||
auth_admin_page="$(
|
||||
curl -k -fsS --compressed http://auth-admin.nas.nodedc:18080/if/admin/
|
||||
)"
|
||||
printf '%s' "$auth_admin_page" \
|
||||
| grep -aE '<style data-id="brand-css"></style>|authentikBrand.branding_custom_css = ""'
|
||||
|
||||
auth_admin_flow="$(
|
||||
curl -k -fsS --compressed http://auth-admin.nas.nodedc:18080/if/flow/default-authentication-flow/
|
||||
)"
|
||||
if printf '%s' "$auth_admin_flow" | grep -aq '<style data-id="nodedc-auth-login-css">'; then
|
||||
echo 'admin host still has NODE.DC auth CSS'
|
||||
exit 1
|
||||
fi
|
||||
echo 'auth-admin-css-ok'
|
||||
```
|
||||
|
||||
## Backup текущего состояния
|
||||
|
||||
|
||||
Reference in New Issue
Block a user