A self-hosted CTF platform for teams who like chasing flags and organizers who like staying in control.
OwlCTF combines challenge hosting, live competition views, team management, and event administration in one ASP.NET Core application. It runs locally from source or as a production Docker stack behind Caddy.
- Static challenges and isolated per-team Docker instances
- Static or CTFd-style dynamic scoring with frozen solve values
- Live standings, score progression, and recent solves
- Discord sign-in, teams, brackets, profiles, and configurable team limits
- Challenge, user, team, event, branding, sponsor, and submission administration
- First-blood Discord announcements and cross-team flag detection
- Dark and light themes with organizer-controlled branding
- Caddy, MariaDB, and Redis production stack with collision-free private networking
You need Docker, a public domain, and a Discord OAuth application.
cp .env.example .env
# Fill in every required value in .env
docker compose up -d --buildAdd https://your-domain/signin-discord as a Discord OAuth redirect, point the domain at the host, and open it in a browser. The first account to sign in becomes the initial administrator.
For host preparation, TLS, backups, upgrades, resource tuning, scaling, and dynamic challenge containers, follow the deployment guide.
| Guide | Covers |
|---|---|
| Documentation index | Where to find each guide |
| Development | Local setup, configuration, tests, and UI checks |
| Deployment | Docker, Caddy, scaling, backups, and upgrades |
| Architecture | Project boundaries, persistence, and runtime flow |
| Security | Secrets, exposure, Docker access, and event data |
| Contributing | Workflow and pull-request expectations |
ASP.NET Core MVC on .NET 10 · MariaDB · Dapper and EF Core · SignalR · Redis · Caddy · Docker Compose · xUnit
src/OwlCTF.Web/ application
tests/OwlCTF.Tests/ automated tests
docs/ operator and developer guides
OwlCTF intentionally remains one deployable web project. Its internal folders keep HTTP handling, application rules, persistence, models, views, and real-time behavior easy to follow without unnecessary project boundaries.
Issues and focused pull requests are welcome. Start with the development guide, then read CONTRIBUTING.md.
OwlCTF software is licensed under the GNU AGPL v3 only, with the attribution and origin terms in NOTICE. The OwlCTF name and official logos are covered by the separate trademark and brand policy.
Hosted copies and distributions must keep the visible “Powered by OwlCTF” footer credit. It must not be removed, hidden, or changed to point elsewhere.
