Skip to content

A simple, distributed, zero-configuration WireGuard mesh provider

License

Notifications You must be signed in to change notification settings

TheRook/webmesh

 
 

Repository files navigation

Webmesh

Go Report Card Build and Tests

Webmesh is a simple, distributed, and zero-configuration WireGuard™ mesh solution for Linux, FreeBSD, macOS, and Windows. It allows for easily creating a mesh network between multiple hosts, and provides a simple API for managing the network. It is designed to be easy to use, and to work well with existing network infrastructure. For a more detailed introduction and extended documentation, please see the project website.

This repository contains the core functionality of the Webmesh Project. It implements the Webmesh API in Go.

This project is not yet ready for production use, but I hope to rapidly get there. For now, expect backwards-incompatible changes.

Getting Started

Detailed instructions can be found in the Getting Started guide on the project website. For examples of different topologies and the various features available, see the examples directory.

If you'd like to play with the project on Kubernetes, there is a work-in-progress Operator in the operator repository. It works fine on most clusters, including ephemeral docker-based ones, but is not yet ready for production use.

Building

The Makefile contains several targets for building the project. You can run make help to see all the available targets.

Roadmap

  • GUI Application. In the works over here.
  • Potential SaaS offering for those who don't want to run their own controllers or have a simple off-site backup of the mesh state.

Most other functionality that is provided by other similar projects already exists in the kernel or in other projects. For example, NAT64 and DNS64 have several ways of being configured, but could still be seen as a potential common use-case. There is a question as to how many of those things should be "auto-configured" by a node and how much should be left up to the user.

Contributing

Contributions are welcome and encouraged. Please see the contributing docs for more information.

Community

Join me in the webmesh channel on the Gophers Slack.

Special Thanks

The developers of rqlite for inspiration on managing a distributed database.

The incredible work done by the pion team for WebRTC in Go.

Legal

WireGuard is a registered trademark of Jason A. Donenfeld.

Support

"Buy Me A Coffee"

About

A simple, distributed, zero-configuration WireGuard mesh provider

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 93.7%
  • Vue 4.3%
  • JavaScript 0.9%
  • TypeScript 0.6%
  • Makefile 0.3%
  • HTML 0.1%
  • Other 0.1%