- Updated app-switcher tests to include verification for the newly integrated CDN app. - Added assertions to check the presence and authentication mode of the CDN app in the response. Co-authored-by: Cursor <cursoragent@cursor.com>
Auth Portal
Единый auth-портал для CFDM, VPS Tracker и EvoBGP (auth.shnt.top).
Стек
- Monorepo: pnpm workspaces + turbo
apps/web— Vite + React 19 + TanStack Router/Query + shadcn/ui + ReUIapps/api— Fastify 5 + JWT + SQLite (better-sqlite3 / Drizzle)packages/ui—@authportal/ui(shadcn primitives)packages/shared— Zod-контрактыpackages/db— схема и клиент SQLite
Быстрый старт
pnpm install
cp .env.example .env
# ReUI PRO key уже в apps/web/.env.local (gitignored) — или скопируйте из другого проекта
pnpm --filter @authportal/api dev # :8080
pnpm --filter web dev # :5175
Интеграция с VPS Tracker
См. docs/integrate-vps-tracker.md — SSO handoff (return_to + #access_token), общий JWT_SECRET, RBAC vps:*.
См. docs/integrate-cfdm.md — то же для Cloudflare Domain Manager (cfdm:*, порт Vite 5174).
См. docs/integrate-evobgp.md — EvoBGP (bgp:*).
См. docs/integrate-evofirewall.md — EvoFirewall (fw:*).
См. docs/integrate-cdnmanager.md — CDN Manager (cdn:*, порт Vite 5176).
См. docs/integrate-technitium.md — Technitium DNS (dns:*, OIDC IdP).
Корень:
pnpm dev # turbo: api + web
pnpm build
pnpm test
pnpm lint
ReUI PRO
cd apps/web
# нужен REUI_LICENSE_KEY в .env.local
pnpm dlx shadcn@latest add @reui/auth-13 --yes
components.json → registry @reui с Authorization: Bearer ${REUI_LICENSE_KEY}.
Docker / Gitea CI
- Workflows:
.gitea/workflows/{ci,cd,quality}.yaml— как CFDM / EvoFW - Релизы:
docs/releasing.md - Secrets:
ACTIONS_PAT(tags, releases, Container Registry) - Образы alpine all-in-one:
git.shx.one/denozord/authportalи drop-ingit.shx.one/denozord/auth-portal - Bake:
deploy/docker(node:22-alpine, без Python/g++ в runtime)
Локально / без reverse proxy (нужен уже собранный образ или bake):
docker compose up -d
Production (один Compose: Traefik + auth-portal, HTTPS Cloudflare DNS challenge):
docs/deploy-traefik.md · deploy/docker-compose.traefik.yml · deploy/env.traefik.example
OIDC IdP (Technitium): в .env достаточно ISSUER (опционально OIDC_ISSUER / OIDC_RSA_PRIVATE_KEY); после старта — Admin → OIDC-клиенты. См. docs/integrate-technitium.md.
Структура
apps/web/src/ # SPA (routes, components/reui, reui-kit)
apps/api/src/ # Fastify
packages/ui/ # shadcn CLI output
packages/shared/ # contracts
packages/db/ # drizzle schema
.gitea/workflows/ # CI/CD (ci / cd / quality)
deploy/docker/ # bake + alpine Dockerfile