netmaker/docs/ROADMAP.md

2.9 KiB

FEATURE ROADMAP

0.1

Server:

  • Create Groups (virtual networks)
  • Allow default settings for nodes from groups
  • Admin/Superuser key
  • Create multiuse keys for node signup
  • JWT-based auth for post-signup
  • CRUD for groups
  • CRUD for nodes
  • Track all important info about node for networking (port, endpoints, pub key, etc)
  • Timestamps for determining if nodes need updates

Agent:

  • Self-installer
  • Determine default settings w/o user input
  • Systemd Service + timer
  • Check-in functionality to retrieve updates from server
  • Maintain list of up-to-date peers
  • Update WG interface
  • 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 groups 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 Group into Keys
  • Switch to Unique ID for nodes instead of MacAddress
  • Public Key refresh
  • Enable ipv6 addresses
  • Have a "default" group 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 Group 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
  • Group/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:

Agent:

  • Do system calls instead of direct commands this repo
  • 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
  • Group/Node labels

Agent:

  • userspace via Docker or Golang
  • MacOS support
  • Windows support
  • Certificate-based authentication