Files
DenozordecandCursor fd7d9fd13c
quality / commitlint (push) Skipped
quality / changes (push) Successful in 7s
quality / docker-check (push) Skipped
quality / web (push) Successful in 40s
quality / api (push) Successful in 36s
CD / quality (push) Successful in 1m37s
CD / publish (push) Successful in 1m40s
feat(apps): добавить MikrotikManager app id mm
Регистрация mm в каталоге приложений, permissions mm:*, target-app и docs.

Co-authored-by: Cursor <[email protected]>
2026-09-04 20:38:27 +07:00

85 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
## Быстрый старт
```bash
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`](docs/integrate-vps-tracker.md) — SSO handoff (`return_to` + `#access_token`), общий `JWT_SECRET`, RBAC `vps:*`.
См. [`docs/integrate-cfdm.md`](docs/integrate-cfdm.md) — то же для Cloudflare Domain Manager (`cfdm:*`, порт Vite `5174`).
См. [`docs/integrate-evobgp.md`](docs/integrate-evobgp.md) — EvoBGP (`bgp:*`).
См. [`docs/integrate-evofirewall.md`](docs/integrate-evofirewall.md) — EvoFirewall (`fw:*`).
См. [`docs/integrate-cdnmanager.md`](docs/integrate-cdnmanager.md) — CDN Manager (`cdn:*`, порт Vite `5176`).
См. [`docs/integrate-mikrotikmanager.md`](docs/integrate-mikrotikmanager.md) — MikrotikManager (`mm:*`).
См. [`docs/integrate-technitium.md`](docs/integrate-technitium.md) — Technitium DNS (`dns:*`, OIDC IdP).
Корень:
```bash
pnpm dev # turbo: api + web
pnpm build
pnpm test
pnpm lint
```
## ReUI PRO
```bash
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`](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`](deploy/docker) (`node:22-alpine`, без Python/g++ в runtime)
Локально / без reverse proxy (нужен уже собранный образ или bake):
```bash
docker compose up -d
```
**Production (один Compose: Traefik + auth-portal, HTTPS Cloudflare DNS challenge):**
[`docs/deploy-traefik.md`](docs/deploy-traefik.md) · [`deploy/docker-compose.traefik.yml`](deploy/docker-compose.traefik.yml) · [`deploy/env.traefik.example`](deploy/env.traefik.example)
OIDC IdP (Technitium): в `.env` достаточно `ISSUER` (опционально `OIDC_ISSUER` / `OIDC_RSA_PRIVATE_KEY`); после старта — Admin → OIDC-клиенты. См. [`docs/integrate-technitium.md`](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
```