OpenCaptive is a self-hostable captive-portal platform that gives you full control over the guest Wi-Fi experience. Build branded onboarding flows, plug in your own authentication and network controllers, and keep ownership of your data — without vendor lock-in.
It ships with a pluggable integration model, with first-class support for UniFi network controllers out of the box.
The repository is a monorepo split into a .NET backend and a Next.js frontend.
OpenCaptive/
├── src/
│ ├── Backend/ # .NET 10 — Clean Architecture
│ │ ├── OpenCaptive.Api/ # ASP.NET Core HTTP API (composition root)
│ │ ├── OpenCaptive.Application/ # Use cases / application services
│ │ ├── OpenCaptive.Domain/ # Core domain model & business rules
│ │ ├── OpenCaptive.Contracts/ # Shared DTOs / API contracts
│ │ ├── OpenCaptive.Infrastructure/ # Persistence & cross-cutting concerns
│ │ ├── OpenCaptive.Integrations.Abstractions/ # Integration interfaces
│ │ └── OpenCaptive.Integrations.UniFi/ # UniFi controller integration
│ └── Frontend/
│ └── apps/
│ ├── admin/ # Next.js admin dashboard
│ └── portal/ # Next.js end-user captive portal
└── OpenCaptive.slnx # .NET solution
| Tool | Version |
|---|---|
| .NET SDK | 10.0+ |
| Node.js | 22+ |
| npm | 10+ |
| Docker | 24+ |
# Start Postgres (required before running the API)
docker compose -f docker/compose.yml up -d# Restore & build the solution
dotnet restore OpenCaptive.slnx
dotnet build OpenCaptive.slnx
# Run the API
dotnet run --project src/Backend/OpenCaptive.ApiEach app under src/Frontend/apps is a standalone Next.js application.
# Admin dashboard
cd src/Frontend/apps/admin
npm install
npm run dev
# End-user portal
cd src/Frontend/apps/portal
npm install
npm run devOpenCaptive talks to network controllers through the
OpenCaptive.Integrations.Abstractions interfaces, so adding a new controller is
a matter of implementing those contracts.
- UniFi —
OpenCaptive.Integrations.UniFi
Want to add another controller (Cisco, MikroTik, OPNsense, …)? See CONTRIBUTING.md.
Contributions are welcome! Please read CONTRIBUTING.md and our Code of Conduct before opening a pull request.
Found a vulnerability? Please do not open a public issue — follow the process in our Security Policy.
All rights reserved. License TBD.