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).