Infra Management Portal
URL: infra.zintegrowana.online (Vercel, auto-deploy from main)
What it is
Password-protected single-page dashboard for infrastructure ops:
- Service status — live health checks against WAHA, n8n, Grafana, Traccar (polls every 30s)
- Quick links — one-click access to each service’s UI
- SSH info — VPS connection details
- Docs — MkDocs Material static site served at
/docs/
Auth
Supabase Auth (project mwkqmgadqnkkihjdeqsi). Email/password only.
Add authorized users: Supabase dashboard → Authentication → Users → Invite user.
First-time setup
1. Create Vercel project
cd portal
npx vercel --yes
# Follow prompts — link to Vercel account
# Note: VERCEL_PROJECT_ID shown after first link2. Add Vercel environment variables
NEXT_PUBLIC_SUPABASE_URL = https://mwkqmgadqnkkihjdeqsi.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY = <anon key from Supabase dashboard>
3. Add GitHub Secrets for CI
| Secret | Value |
|---|---|
VERCEL_TOKEN | Vercel API token |
VERCEL_ORG_ID | Vercel team/org ID |
VERCEL_PORTAL_PROJECT_ID | Project ID from step 1 |
4. Set custom domain in Vercel
Vercel dashboard → Project → Domains → Add infra.zintegrowana.online
Vercel gives you a CNAME target (e.g. cname.vercel-dns.com).
5. Add DNS record
python3 /opt/p24-infra/scripts/dns-manager.py upsert "infra.zintegrowana.online" <vercel-cname-target>(Or add manually in Cloudflare: CNAME infra → Vercel target, proxied OFF)
Local development
cd portal
cp .env.example .env.local
# Fill in NEXT_PUBLIC_SUPABASE_ANON_KEY
npm install
npm run dev
# → http://localhost:3000MkDocs build
pip install mkdocs-material
cd portal
mkdocs build
# Output: portal/public/docs/
# Served by Next.js at /docs/ (excluded from auth middleware)Files
portal/
├── lib/services.ts # Service definitions — edit to add/remove monitored services
├── pages/dashboard.tsx # Main dashboard
├── pages/api/health/ # Health check proxy (server-side HTTP pings)
├── components/ # ServiceStatusCard, QuickLinkCard, SshBlock
└── mkdocs.yml # Points at ../docs/ as source
Adding a new monitored service
Edit services.ts — add entry to SERVICES array. No other changes needed.