mirror of
https://github.com/DevVoxel/VectorDNS.git
synced 2026-02-27 05:47:38 +00:00
79 lines
3.3 KiB
Markdown
79 lines
3.3 KiB
Markdown
# VectorDNS Architecture
|
|
|
|
## Overview
|
|
|
|
VectorDNS uses a hybrid architecture: a Next.js frontend on Vercel and a Go DNS microservice on a VPS.
|
|
|
|
```
|
|
┌──────────────────────┐ ┌──────────────────────┐
|
|
│ Vercel (Frontend) │ │ VPS (DNS API) │
|
|
│ │ │ │
|
|
│ Next.js 16 │ HTTP │ Go microservice │
|
|
│ React 19 │◄──────►│ miekg/dns │
|
|
│ Supabase SDK │ │ │
|
|
│ Tailwind + shadcn │ │ - DNS resolution │
|
|
│ │ │ - DNSSEC validation │
|
|
│ Handles: │ │ - Propagation checks │
|
|
│ - UI/SSR │ │ - Monitoring cron │
|
|
│ - Auth (Supabase) │ │ - Change detection │
|
|
│ - WHOIS lookups │ │ │
|
|
│ - Static pages │ └───────────┬───────────┘
|
|
│ │ │
|
|
└──────────┬───────────┘ │ UDP/TCP
|
|
│ ▼
|
|
│ ┌───────────────────────┐
|
|
│ │ DNS Resolvers / │
|
|
▼ │ Authoritative NS │
|
|
┌──────────────────────┐ └───────────────────────┘
|
|
│ Supabase │
|
|
│ │
|
|
│ - Postgres DB │
|
|
│ - Auth │
|
|
│ - Row Level Security│
|
|
└──────────────────────┘
|
|
```
|
|
|
|
## Why Hybrid
|
|
|
|
| Concern | Solution |
|
|
|---|---|
|
|
| Frontend hosting, SSR, auth | Vercel (serverless, zero-ops) |
|
|
| DNS resolution, monitoring | Go on VPS (persistent process, no cold starts) |
|
|
| Database, auth state | Supabase (managed Postgres) |
|
|
|
|
## What Each Service Handles
|
|
|
|
### Next.js (Vercel)
|
|
|
|
- All UI rendering (SSR + client)
|
|
- Authentication via Supabase
|
|
- WHOIS lookups (whoiser library)
|
|
- Domain availability checks (IANA RDAP)
|
|
- Dashboard, notifications, settings pages
|
|
- Proxies DNS queries to the Go service
|
|
|
|
### Go Microservice (VPS)
|
|
|
|
- DNS record lookups via `miekg/dns` (UDP/TCP, not DoH)
|
|
- Query specific or authoritative nameservers directly
|
|
- DNSSEC validation
|
|
- DNS propagation checking across multiple resolvers
|
|
- Scheduled monitoring (native cron, no serverless time limits)
|
|
- Change detection (diff DNS snapshots, notify on changes)
|
|
|
|
## Communication
|
|
|
|
The Next.js API routes call the Go service over HTTPS. The Go service URL is configured via environment variable (`GO_DNS_API_URL`). Requests are authenticated with a shared API key (`GO_DNS_API_KEY`).
|
|
|
|
```
|
|
Next.js API route → HTTPS → Go DNS API → UDP/TCP → DNS resolvers
|
|
```
|
|
|
|
## Why Go Over DoH (Tangerine)
|
|
|
|
- Direct UDP/TCP DNS queries — faster, no middleman
|
|
- Can query authoritative nameservers directly
|
|
- Supports DNSSEC validation, AXFR, propagation checks
|
|
- No cold starts, consistent latency
|
|
- No Vercel function timeout limits for monitoring jobs
|