github.com/yggdrasil-network/yggdrasil-go@v0.5.6/README.md (about) 1 # Yggdrasil 2 3 [![Build status](https://github.com/yggdrasil-network/yggdrasil-go/actions/workflows/ci.yml/badge.svg)](https://github.com/yggdrasil-network/yggdrasil-go/actions/workflows/ci.yml) 4 5 ## Introduction 6 7 Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 8 network. It is lightweight, self-arranging, supported on multiple platforms and 9 allows pretty much any IPv6-capable application to communicate securely with 10 other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet 11 connectivity - it also works over IPv4. 12 13 ## Supported Platforms 14 15 Yggdrasil works on a number of platforms, including Linux, macOS, Ubiquiti 16 EdgeRouter, VyOS, Windows, FreeBSD, OpenBSD and OpenWrt. 17 18 Please see our [Installation](https://yggdrasil-network.github.io/installation.html) 19 page for more information. You may also find other platform-specific wrappers, scripts 20 or tools in the `contrib` folder. 21 22 ## Building 23 24 If you want to build from source, as opposed to installing one of the pre-built 25 packages: 26 27 1. Install [Go](https://golang.org) (requires Go 1.21 or later) 28 2. Clone this repository 29 2. Run `./build` 30 31 Note that you can cross-compile for other platforms and architectures by 32 specifying the `GOOS` and `GOARCH` environment variables, e.g. `GOOS=windows 33 ./build` or `GOOS=linux GOARCH=mipsle ./build`. 34 35 ## Running 36 37 ### Generate configuration 38 39 To generate static configuration, either generate a HJSON file (human-friendly, 40 complete with comments): 41 42 ``` 43 ./yggdrasil -genconf > /path/to/yggdrasil.conf 44 ``` 45 46 ... or generate a plain JSON file (which is easy to manipulate 47 programmatically): 48 49 ``` 50 ./yggdrasil -genconf -json > /path/to/yggdrasil.conf 51 ``` 52 53 You will need to edit the `yggdrasil.conf` file to add or remove peers, modify 54 other configuration such as listen addresses or multicast addresses, etc. 55 56 ### Run Yggdrasil 57 58 To run with the generated static configuration: 59 60 ``` 61 ./yggdrasil -useconffile /path/to/yggdrasil.conf 62 ``` 63 64 To run in auto-configuration mode (which will use sane defaults and random keys 65 at each startup, instead of using a static configuration file): 66 67 ``` 68 ./yggdrasil -autoconf 69 ``` 70 71 You will likely need to run Yggdrasil as a privileged user or under `sudo`, 72 unless you have permission to create TUN/TAP adapters. On Linux this can be done 73 by giving the Yggdrasil binary the `CAP_NET_ADMIN` capability. 74 75 ## Documentation 76 77 Documentation is available [on our website](https://yggdrasil-network.github.io). 78 79 - [Installing Yggdrasil](https://yggdrasil-network.github.io/installation.html) 80 - [Configuring Yggdrasil](https://yggdrasil-network.github.io/configuration.html) 81 - [Frequently asked questions](https://yggdrasil-network.github.io/faq.html) 82 - [Version changelog](CHANGELOG.md) 83 84 ## Community 85 86 Feel free to join us on our [Matrix 87 channel](https://matrix.to/#/#yggdrasil:matrix.org) at `#yggdrasil:matrix.org` 88 or in the `#yggdrasil` IRC channel on [libera.chat](https://libera.chat). 89 90 ## License 91 92 This code is released under the terms of the LGPLv3, but with an added exception 93 that was shamelessly taken from [godeb](https://github.com/niemeyer/godeb). 94 Under certain circumstances, this exception permits distribution of binaries 95 that are (statically or dynamically) linked with this code, without requiring 96 the distribution of Minimal Corresponding Source or Minimal Application Code. 97 For more details, see: [LICENSE](LICENSE).