netmaker/old-docs/ROADMAP.md

97 lines
2.9 KiB
Markdown
Raw Normal View History

2021-05-26 05:57:06 +08:00
# 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
- [x] Separate out README into DOCS folder with the following:
- [x] API Docs
- [x] Usage
- [ ] Advanced Usage
- [x] Contributing
- [ ] Roadmap
- [ ] Troubleshooting
**Server:**
- [x] Allow tracking multiple networks per node
- [ ] Configure Check-in thresholds
- [ ] Separate sign-up endpoint to allow VPN-only comms after joining network
- [ ] Swagger Docs
- [x] Build Out README
- [x] Encode Server, Port, and Network into Keys
- [ ] Switch to Unique ID for nodes instead of MacAddress
- [x] Public Key refresh
- [ ] Enable ipv6 addresses
- [x] Have a "default" network created at startup
**Agent:**
- [x] Test / get working on multiple linux platforms
- [ ] Set private DNS via etc hosts (node name + ip). Make it optional flag on agent.
- [x] Decode Server, Port, and Network from Key
- [ ] Service ID / unit file for SystemD Service
- [x] Allow multiple interfaces
- [ ] Use "Check in interval" from server
- [x] 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