2017-12-29 04:16:20 +00:00
|
|
|
# Yggdrasil
|
|
|
|
|
2022-04-18 14:20:45 +00:00
|
|
|
[![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)
|
2018-02-03 01:38:55 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
## Introduction
|
|
|
|
|
|
|
|
Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6
|
|
|
|
network. It is lightweight, self-arranging, supported on multiple platforms and
|
|
|
|
allows pretty much any IPv6-capable application to communicate securely with
|
|
|
|
other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet
|
|
|
|
connectivity - it also works over IPv4.
|
|
|
|
|
|
|
|
## Supported Platforms
|
|
|
|
|
2021-07-02 22:21:38 +00:00
|
|
|
Yggdrasil works on a number of platforms, including Linux, macOS, Ubiquiti
|
|
|
|
EdgeRouter, VyOS, Windows, FreeBSD, OpenBSD and OpenWrt.
|
|
|
|
|
2022-04-17 17:22:26 +00:00
|
|
|
Please see our [Installation](https://yggdrasil-network.github.io/installation.html)
|
2021-07-02 22:24:34 +00:00
|
|
|
page for more information. You may also find other platform-specific wrappers, scripts
|
|
|
|
or tools in the `contrib` folder.
|
2019-03-13 20:21:01 +00:00
|
|
|
|
2017-12-29 04:16:20 +00:00
|
|
|
## Building
|
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
If you want to build from source, as opposed to installing one of the pre-built
|
|
|
|
packages:
|
2017-12-29 04:16:20 +00:00
|
|
|
|
2024-05-27 21:03:41 +00:00
|
|
|
1. Install [Go](https://golang.org) (requires Go 1.21 or later)
|
2019-03-13 20:06:02 +00:00
|
|
|
2. Clone this repository
|
|
|
|
2. Run `./build`
|
2018-01-26 09:28:57 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
Note that you can cross-compile for other platforms and architectures by
|
|
|
|
specifying the `GOOS` and `GOARCH` environment variables, e.g. `GOOS=windows
|
|
|
|
./build` or `GOOS=linux GOARCH=mipsle ./build`.
|
2017-12-29 04:16:20 +00:00
|
|
|
|
|
|
|
## Running
|
|
|
|
|
2019-03-13 20:08:50 +00:00
|
|
|
### Generate configuration
|
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
To generate static configuration, either generate a HJSON file (human-friendly,
|
|
|
|
complete with comments):
|
2017-12-29 04:16:20 +00:00
|
|
|
|
2018-02-16 14:12:44 +00:00
|
|
|
```
|
2019-03-13 20:08:50 +00:00
|
|
|
./yggdrasil -genconf > /path/to/yggdrasil.conf
|
2018-02-16 14:12:44 +00:00
|
|
|
```
|
2018-01-26 09:28:57 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
... or generate a plain JSON file (which is easy to manipulate
|
|
|
|
programmatically):
|
2018-03-10 23:40:03 +00:00
|
|
|
|
2018-02-16 14:12:44 +00:00
|
|
|
```
|
2019-03-13 20:08:50 +00:00
|
|
|
./yggdrasil -genconf -json > /path/to/yggdrasil.conf
|
2018-02-16 14:12:44 +00:00
|
|
|
```
|
2018-01-03 21:27:13 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
You will need to edit the `yggdrasil.conf` file to add or remove peers, modify
|
|
|
|
other configuration such as listen addresses or multicast addresses, etc.
|
2017-12-29 04:16:20 +00:00
|
|
|
|
2019-03-13 20:08:50 +00:00
|
|
|
### Run Yggdrasil
|
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
To run with the generated static configuration:
|
2022-04-17 17:22:26 +00:00
|
|
|
|
2017-12-29 04:16:20 +00:00
|
|
|
```
|
2019-03-13 20:06:02 +00:00
|
|
|
./yggdrasil -useconffile /path/to/yggdrasil.conf
|
2017-12-29 04:16:20 +00:00
|
|
|
```
|
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
To run in auto-configuration mode (which will use sane defaults and random keys
|
|
|
|
at each startup, instead of using a static configuration file):
|
2017-12-29 04:16:20 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
```
|
2019-03-13 20:08:50 +00:00
|
|
|
./yggdrasil -autoconf
|
2019-03-13 20:06:02 +00:00
|
|
|
```
|
2018-01-15 14:43:06 +00:00
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
You will likely need to run Yggdrasil as a privileged user or under `sudo`,
|
|
|
|
unless you have permission to create TUN/TAP adapters. On Linux this can be done
|
|
|
|
by giving the Yggdrasil binary the `CAP_NET_ADMIN` capability.
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
2021-07-02 22:24:34 +00:00
|
|
|
Documentation is available [on our website](https://yggdrasil-network.github.io).
|
2019-03-13 20:06:02 +00:00
|
|
|
|
2021-07-02 22:24:34 +00:00
|
|
|
- [Installing Yggdrasil](https://yggdrasil-network.github.io/installation.html)
|
|
|
|
- [Configuring Yggdrasil](https://yggdrasil-network.github.io/configuration.html)
|
2019-03-13 20:06:02 +00:00
|
|
|
- [Frequently asked questions](https://yggdrasil-network.github.io/faq.html)
|
2019-03-13 20:21:01 +00:00
|
|
|
- [Version changelog](CHANGELOG.md)
|
2019-03-13 20:06:02 +00:00
|
|
|
|
2019-03-13 20:12:08 +00:00
|
|
|
## Community
|
|
|
|
|
2019-03-13 20:21:01 +00:00
|
|
|
Feel free to join us on our [Matrix
|
|
|
|
channel](https://matrix.to/#/#yggdrasil:matrix.org) at `#yggdrasil:matrix.org`
|
2021-07-02 22:21:38 +00:00
|
|
|
or in the `#yggdrasil` IRC channel on [libera.chat](https://libera.chat).
|
2018-01-15 14:43:06 +00:00
|
|
|
|
2017-12-29 04:16:20 +00:00
|
|
|
## License
|
|
|
|
|
2019-03-13 20:06:02 +00:00
|
|
|
This code is released under the terms of the LGPLv3, but with an added exception
|
|
|
|
that was shamelessly taken from [godeb](https://github.com/niemeyer/godeb).
|
|
|
|
Under certain circumstances, this exception permits distribution of binaries
|
|
|
|
that are (statically or dynamically) linked with this code, without requiring
|
|
|
|
the distribution of Minimal Corresponding Source or Minimal Application Code.
|
2017-12-29 04:16:20 +00:00
|
|
|
For more details, see: [LICENSE](LICENSE).
|