A zeroconf peer-to-peer mesh VPN using Wireguard® and Interactive Connectivity Establishment (ICE)
Go to file
2024-07-08 02:54:23 +00:00
.github/workflows chore(deps): update peaceiris/actions-gh-pages action to v4 2024-07-01 09:42:14 +02:00
.reuse nix: Update Nix flake 2024-06-10 19:04:11 -07:00
cmd/cunicu Fix generation of Manpage for Docusaurus 2023-12-01 00:20:29 +01:00
docs docs: Fix broken links 2024-06-15 07:04:39 +02:00
etc doc(website): Tweak configuration sections of website and update Docusaurus 2023-08-12 16:06:39 +02:00
LICENSES website: Add mesh animation to banner 2023-07-04 07:33:40 +02:00
nix fix(nix): Disable hardening in shell for debuggung 2024-06-15 14:10:50 +02:00
pkg fix: Fix linter name 2024-06-15 14:10:58 +02:00
proto Rename module to cunicu.li/cunicu and update all links to new GitHub repo location 2023-08-14 09:18:29 +02:00
scripts fix(deps): update module github.com/google/go-github/v58 to v62 2024-07-01 08:56:38 +02:00
test Remove more unused arguments 2024-02-18 12:13:36 +01:00
website docs: Fix broken links 2024-06-15 07:04:39 +02:00
.codecov.yaml Rename master branch to main 2023-08-19 13:16:50 +02:00
.gitignore Fix import order 2023-06-22 08:46:35 +02:00
.golangci.yaml fix(deps): update module google.golang.org/grpc to v1.64.0 2024-06-11 02:43:39 +00:00
.goreleaser.yaml Rename module to cunicu.li/cunicu and update all links to new GitHub repo location 2023-08-14 09:18:29 +02:00
.renovaterc.json Rename module to cunicu.li/cunicu and update all links to new GitHub repo location 2023-08-14 09:18:29 +02:00
CODE_OF_CONDUCT.md Fix rendering of COC title in Docusaurus 2023-12-01 00:20:29 +01:00
CODEOWNERS Added CODEOWNERS file 2023-08-19 13:19:56 +02:00
CONTRIBUTING.md Fix SPDX headers 2023-12-01 00:20:29 +01:00
Dockerfile chore(deps): update alpine docker tag to v3.20 2024-06-17 07:55:24 +02:00
Dockerfile.scratch make project reuse compliant 2023-05-26 23:25:41 +02:00
flake.lock fix(nix): Update Flake inputs 2024-06-15 14:10:36 +02:00
flake.nix nix: Update Nix flake 2024-06-10 19:04:11 -07:00
go.mod fix(deps): update module github.com/spf13/cobra to v1.8.1 2024-07-08 02:54:23 +00:00
go.sum fix(deps): update module github.com/spf13/cobra to v1.8.1 2024-07-08 02:54:23 +00:00
LICENSE initial commit 2021-12-15 18:03:58 +01:00
Makefile Fix Yarn version 2023-12-01 00:20:29 +01:00
README.md docs: Update website structure 2024-06-15 07:04:39 +02:00

cunīcu logo

GitHub build goreportcard Codecov License GitHub go.mod Go version Go Reference Contributor Covenant

🚧 cunīcu is currently still in an Alpha state and not usable yet

cunīcu is a user-space daemon managing WireGuard® interfaces to establish a mesh of peer-to-peer VPN connections in harsh network environments.

To achieve this, cunīcu utilizes a signaling layer to exchange peer information such as public encryption keys, hostname, advertised networks and reachability information to automate the configuration of the networking links. From a user perspective, cunīcu alleviates the need of manual configuration such as exchange of public keys, IP addresses, endpoints, etc.. Hence, it adopts the design goals of the WireGuard project, to be simple and easy to use.

Thanks to Interactive Connectivity Establishment (ICE), cunīcu is capable to establish direct connections between peers which are located behind NAT firewalls such as home routers. In situations where ICE fails, or direct UDP connectivity is not available, cunīcu falls back to using TURN relays to reroute traffic over an intermediate hop or encapsulate the WireGuard traffic via TURN-TCP.

It relies on the awesome pion/ice package for ICE as well as bundles the a Go user-space implementation of WireGuard in a single binary for systems in which WireGuard kernel support has not landed yet.

With these features, cunīcu can be used to quickly build multi-agent systems or connect field devices such as power grid monitoring infrastructure into a fully connected mesh. Within the ERIGrid 2.0 project, cunīcu is used to interconnect smart grid laboratories for geographically distributed simulation of energy systems.

Documentation

cunīcu's documentation can be found here: cunicu.li/docs.

Contact

Please have a look at the contact page: https://cunicu.li/docs/contact

License

cunīcu is licensed under the Apache 2.0 license.

  • SPDX-FileCopyrightText: 2023 Steffen Vogel post@steffenvogel.de
  • SPDX-License-Identifier: Apache-2.0

Funding acknowledgement

The project has been initiated by Steffen Vogel while working at the Institute for Automation of Complex Power Systems (ACS) of RWTH Aachen University.

European Flag The development of cunīcu has been supported by the ERIGrid 2.0 project of the H2020 Programme under Grant Agreement No. 870620

Trademark

WireGuard and the WireGuard logo are registered trademarks of Jason A. Donenfeld.