Family-friendly VPN management platform that combines two anti-censorship transports — anYTransportProxy (slow but stable) and whitelist-bypass (fast but less stable) — into a single dashboard with smart auto-failover.
Built for Russian users facing whitelist-based internet censorship. One admin manages everything; family members get a dead-simple one-click client.
- Dual-transport architecture — whitelist-bypass (fast, via VK/Telemost/WB Stream) + YTP (stable, via cloud storage providers)
- Smart auto-failover — automatically switches from whitelist-bypass to YTP when the fast channel degrades
- Multi-exit nodes — servers in Germany, Norway, Finland, etc.
- Admin dashboard — full management: servers, clients, transports, logs, firewall, diagnostics
- Client view — one-click connect, no technical knowledge needed
- Real-time updates — WebSocket (Socket.IO) for live traffic, health, and notifications
- Health monitoring — periodic server health checks with degraded/healthy/down states
- Docker/systemd deploy — one-click server deployment with generated configs
- Dark/Light/System theme — full theme support via next-themes
- Export/Import — full config backup and restore as JSON
- Client setup guide — step-by-step instructions for Android, iOS, Windows, macOS, Linux
git clone https://github.com/meanwebuser/UltraVPN.git
cd UltraVPN
./scripts/install.sh# 1. Install Bun
curl -fsSL https://bun.sh/install | bash
# 2. Clone and enter project
git clone https://github.com/meanwebuser/UltraVPN.git
cd UltraVPN
# 3. Install dependencies
bun install
cd mini-services/realtime-service && bun install && cd ../..
# 4. Configure environment
cp .env.example .env
# Edit .env with your settings
# 5. Initialize database
bun run db:push
bun run db:generate./scripts/start.sh # Start all services (main + realtime + caddy)
./scripts/stop.sh # Stop all servicesOr run individually:
bun run dev # Start Next.js dev server on port 3000
cd mini-services/realtime-service && bun run dev # Socket.IO on port 3003| Service | URL |
|---|---|
| Dashboard | http://localhost:3000 |
| Via Caddy proxy | http://localhost:81 |
| Realtime (Socket.IO) | ws://localhost:3003 |
Default login: admin / ultravpn2024
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 4 + shadcn/ui |
| Database | SQLite via Prisma ORM |
| State | Zustand + TanStack Query |
| Charts | Recharts |
| Animations | Framer Motion |
| Real-time | Socket.IO |
| Reverse Proxy | Caddy |
| Runtime | Bun |
├── prisma/
│ └── schema.prisma # Database schema (7 models)
├── src/
│ ├── app/
│ │ ├── api/ # 20+ REST API routes
│ │ │ ├── auth/ # Login, logout, session
│ │ │ ├── servers/ # CRUD + health
│ │ │ ├── clients/ # CRUD + bandwidth
│ │ │ ├── transport-configs/
│ │ │ ├── connections/
│ │ │ ├── logs/
│ │ │ ├── stats/
│ │ │ ├── health-check/
│ │ │ ├── export/ # Config export
│ │ │ ├── import/ # Config import
│ │ │ ├── deploy/ # Docker/systemd generation
│ │ │ ├── docker-compose/
│ │ │ ├── diagnostics/
│ │ │ ├── firewall-rules/
│ │ │ ├── speed-test/
│ │ │ ├── ytp-nodes/ # YTP node management
│ │ │ ├── ytp-providers/
│ │ │ ├── wb-relays/ # WB relay management
│ │ │ ├── wb-platforms/
│ │ │ └── audit-log/
│ │ ├── layout.tsx
│ │ └── page.tsx # Main SPA page
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ └── vpn/ # App-specific components
│ │ ├── dashboard.tsx
│ │ ├── client-view.tsx
│ │ ├── servers.tsx
│ │ ├── clients.tsx
│ │ ├── transports.tsx
│ │ ├── traffic-monitor.tsx
│ │ ├── logs.tsx
│ │ ├── settings.tsx
│ │ ├── login.tsx
│ │ ├── store.ts # Zustand global store
│ │ └── ... # 20+ components
│ ├── hooks/
│ │ ├── use-realtime.ts # Socket.IO hook
│ │ ├── use-mobile.ts
│ │ └── use-toast.ts
│ └── lib/
│ ├── db.ts # Prisma client
│ └── utils.ts # Tailwind utils
├── mini-services/
│ └── realtime-service/ # Socket.IO server (port 3003)
├── scripts/
│ ├── install.sh # Ubuntu install script
│ ├── start.sh # Start all services
│ └── stop.sh # Stop all services
├── Caddyfile # Reverse proxy config
├── .env.example # Environment template
└── ARCHITECTURE.md # Detailed architecture docs
UltraVPN sits between your devices and the censored internet. It manages two types of anti-censorship tunnels:
-
whitelist-bypass (fast) — Tunnels SOCKS5 traffic through whitelisted video call platforms (VK Calls, Yandex Telemost, Wildberries Stream). These platforms are on Russia's whitelist, so traffic flows freely. Speeds up to ~20 Mbps.
-
anYTransportProxy (stable) — Tunnels data through cloud storage providers (VK Documents, OK Photos, Yandex Disk, Telegram) using steganographic encoding. Slower (~1-5 Mbps) but extremely resilient.
When whitelist-bypass degrades or drops, UltraVPN automatically fails over to YTP. When the fast channel recovers, it switches back. Family members just click "Connect" — the system handles everything.
All endpoints are RESTful JSON APIs under /api/:
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/login |
Authenticate, get session token |
| GET | /api/auth/session |
Validate session |
| GET | /api/servers |
List all servers |
| POST | /api/servers |
Create server |
| GET | /api/clients |
List all clients |
| GET | /api/stats |
Dashboard statistics |
| GET | /api/health-check |
Run health checks |
| GET | /api/export |
Export all config as JSON |
| POST | /api/import |
Import config from JSON |
| POST | /api/deploy |
Generate Docker/systemd configs |
| GET | /api/diagnostics |
System diagnostics |
| GET | /api/logs |
Connection logs with filters |
Full API documentation available in ARCHITECTURE.md.
MIT