netmaker/docs/ROADMAP.md

97 lines
3 KiB
Markdown

# FEATURE ROADMAP
### 0.1
**Server:**
- [x] Create Networks (virtual networks)
- [x] Allow default settings for nodes from networks
- [x] Admin/Superuser key
- [x] Create multiuse keys for node signup
- [x] JWT-based auth for post-signup
- [x] CRUD for networks
- [x] CRUD for nodes
- [x] Track all important info about node for networking (port, endpoints, pub key, etc)
- [x] Timestamps for determining if nodes need updates
**Agent:**
- [x] Self-installer
- [x] Determine default settings w/o user input
- [x] Systemd Service + timer
- [x] Check-in functionality to retrieve updates from server
- [x] Maintain list of up-to-date peers
- [x] Update WG interface
- [x] Config file for modifying node
### 0.2
- [ ] Separate out README into DOCS folder with the following:
- [ ] API Docs
- [ ] Getting Started
- [ ] Advanced Usage
- [ ] Contributing
- [ ] Roadmap
- [ ] Troubleshooting
**Server:**
- [ ] Allow tracking multiple networks per node
- [ ] Configure Check-in thresholds
- [ ] Separate sign-up endpoint to allow VPN-only comms after joining network
- [ ] Swagger Docs
- [ ] Build Out README
- [ ] Encode Server, Port, and Network into Keys
- [ ] Switch to Unique ID for nodes instead of MacAddress
- [ ] Public Key refresh
- [ ] Enable ipv6 addresses
- [ ] Have a "default" network created at startup
**Agent:**
- [ ] Test / get working on multiple linux platforms
- [ ] Set private DNS via etc hosts (node name + ip). Make it optional flag on agent.
- [ ] Decode Server, Port, and Network from Key
- [ ] Service ID / unit file for SystemD Service
- [ ] Allow multiple interfaces
- [ ] Use "Check in interval" from server
- [ ] Pre-req check on machine (wg, port forwarding)
- [ ] Enable ipv6 addresses
### 0.3
**Server:**
- [ ] Swagger Docs
- [ ] Network/Node labels
- [ ] "Read Only" mode for nodes (can't update their settings centrally, only read)
- [ ] "No-GUI mode:" Similar to existing, just do more e2e testing and make sure flow makes sense
- [ ] Let users set prefixes (node, interface)
**Agent:**
- [ ] Do system calls instead of direct commands
- [ ] Add a prompt for easy setup
### 0.4
**Server:**
- [ ] Private DNS
- [ ] UDP Hole-Punching (via WGSD: https://github.com/jwhited/wgsd )
- [ ] "Read Only" mode for nodes (can't update their settings centrally, only read)
**Agent:**
- [ ] Do system calls instead of direct commands [this repo](https://github.com/gravitl/netmaker-ui)
- [ ] Add a prompt for easy setup
- [ ] Make it work as a sidecar container!!!
### 0.5
**Server:**
- [ ] Multi-user support
- [ ] Oauth
- [ ] public key cycling
### Future Considerations
**Server:**
- [ ] Switch to distributed protocol (RAFT, Kademlia) instead of central server
- [ ] Load balance / fault tolerant server
- [ ] Change DB / make more scaleable (SQL?)
- [ ] Redis
- [ ] Network/Node labels
**Agent:**
- [ ] userspace via Docker or Golang
- [ ] MacOS support
- [ ] Windows support
- [ ] Certificate-based authentication