DenozordecandCursor 0f1f89776b
quality / commitlint (push) Skipped
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 57s
quality / api (push) Failing after 30s
CD / quality (push) Failing after 1m36s
CD / publish (push) Skipped
feat(cdn): integrate CDN Manager into the application
- Updated environment configurations to include CDN Manager in the RETURN_TO_ALLOWLIST.
- Enhanced target app resolution to recognize CDN-related hosts.
- Added CDN Manager to the application switcher and updated relevant documentation.
- Included tests to verify the correct mapping of CDN hosts.

Co-authored-by: Cursor <[email protected]>
2026-09-04 14:11:34 +07:00
2026-07-18 13:27:37 +07:00
2026-07-18 13:27:37 +07:00

Auth Portal

Единый auth-портал для CFDM, VPS Tracker и EvoBGP (auth.shnt.top).

Стек

  • Monorepo: pnpm workspaces + turbo
  • apps/web — Vite + React 19 + TanStack Router/Query + shadcn/ui + ReUI
  • apps/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-in git.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
S
Description
No description provided
Readme
1.1 MiB
v1.3.0
Latest
2026-09-04 20:38:27 +07:00
Languages
TypeScript 98.1%
CSS 0.6%
JavaScript 0.4%
Shell 0.4%
HCL 0.3%
Other 0.2%