SPR: Secure Programmable Router

Overview
Create an adaptive, micro-segmented network for managing WiFi devices, remote VPN access, and wired systems.
- One Password Per WiFi Device
- Policy Based / Zero Trust Network Access
- Per-Device DNS Rules & Ad Block Lists


Features
|
 Security
- Multi-PSK including with WPA3, a SPR first
- Secure Router Chaining
- Almost no unmanaged code, minimized attack surfaces
|
 Firewall
- Policy based routing
- Isolation by default
- Bidirectional groups and unidirectional service rules
- Secure container networking
|
 WiFi
- WPA3/2
- WPA1 backwards compatibility
- WiFi 6, 7 Support including MLO and 320mhz channels on supported hardware
|
|
 Advanced Networking
- Wireguard™ VPN
- Multi WAN with Load Balancing
- Wireless Uplink
- Multicast Traffic Support
- Mesh with Wired Backhaul *
- Policy Based Site Forwarding *
|
 Advanced DNS Capabilities
- Remote DNS Queries with DNS over HTTPs
- DNS Ad Block lists
- Per-Device DNS Rules and Overrides
- DNS Rebinding Protection
|
 User Friendly
- React UX
- iOS App Available
|
|
Observability
- Traffic Insights by Country & ASN
- Internet & Uplink Health Monitoring
- Alerts
- DNS Logs
- Event System & DB
|
Interoperability
- Runs on a wide variety of Linux systems with Docker
- API Plugin System
|
Parental Controls
- Family DNS Rules
- Device Time Limits
|
* Some features are part of SPR PLUS, a paid subscription to support the project
Plugins
Extend SPR with Docker based plugins. Use community supported plugins or write your own. Browse the catalog at https://www.supernetworks.org/plugins.html

How it Works
An unspoofable device identity is established with a MAC address and Per-Device Passphrase for WiFi (or a VPN Public Key for Remote Devices). From there, each device gets its own /30 subnet to exist on. Hardening and strict firewall rules block network spoofing and impersonation, and routing rules redefine connectivity between devices and to the internet.
Our Goals
- Be the best Security & Privacy choice
- Programmable with an API
- Easy to use
Frequently Asked Questions
Check out our FAQ on our website
UI Demo Page
https://demo.supernetworks.org/
SPR Bus Events
https://github.com/spr-networks/sprbus-json

Updating
Building from scratch
./build_docker_compose.sh --load
docker-compose up -d
For performance and to minimize wear on SD cards, the build uses a memory-backed filesystem. On memory-limited devices, this can cause build failures if memory is exhausted. In this case, you can provide the build argument --set "*.args.USE_TMPFS=false".
Using prebuilt containers
docker-compose pull
./setup.sh # (optional)
docker-compose up -d
Get Involved
💬 Have questions? Join the conversation in our Discussions page.
Useful Links
评论