Available clients

While a lot of the core tools for irdest already exist, the user-facing applications are mostly still prototypes. Following is a list of supported clients/ platforms with instructions on how to build, and configure them.

Client nameDesktop platformsMobile platformVersion
irdest-hubdLinux, MacOS-0.1.0
irdest-gtkLinux-0.1.0
irdestdroid-Android0.1.0

Nix builds

While it is possible to install dependencies with platform specific tools (such as apt on Debian, etc), it is far more recommended to use nix to build irdest instead.

Follow the instructions on how to install nix on your platform here

Fetch dependencies

The shell.nix in the irdest repo root defines dependencies. Fetch them into your environment by running nix-shell in the repo root (this might take a while).

Afterwards you can simple run cargo build --bin irdest-hubd --release to build a new hubd binary.

The output artifact will be written to ./target/release/irdest-hubd.

Building this manual

This manual is part of the main source repository and you can build it from the same nix environment as the rest of the project.

$ cd docs/users
$ mdbook build

If you want to enable live-reloading to work on this manual, you can also use the dev server.

$ mdbook serve

irdest-hubd

This is a multi-purpose headless client, meaning that it runs as a daemon in the background of your system. It bundles the irdest router, database, core services, and RPC broker.

Hubd doesn't come with its own user interface, which means you need to install one yourself. Currently recommended is irdest-gtk.

Hubd does not require administrative privileges.

Manual build

Building qaul-hubd with nix is recommended! If you need to build via system dependencies, follow this guide, depending on your platform.

Install dependencies

Rust

You will need to have a Rust compiler, and cargo toolchain installed on your system (minimum version v1.42). Install instructions

Homebrew

On MacOS you will need to install a package manager first to install all the developer tools. Alternatively you can also get them by downloading XCode from the App Store.

Homebrew is a popular package manager for MacOS!

Build Tools

You need to install a general development environment with the following tools available.

  • Debian/ Ubuntu/ Mint: sudo apt install make gcc cmake git
  • Fedora/ CentOS: sudo dnf install make gcc cmake git
  • Arch Linux: sudo pacman -Sy make gcc cmake git
  • MacOS: brew install make gcc cmake git

Build from source

Clone the main code repo:

$ git clone https://git.irde.st/we/irdest
$ cd qaul/

Then simply run cargo build --bin qaul-hubd --release to build the hubd binary.

The output artefact will be written to ./target/release/qaul-hubd.

Configuration

In order for irdest-hubd to work properly it will have to run in the background to handle incoming and outgoing network connections. It's recommended to launch it via a user systemd unit.

[Unit]
Description=irdest hub daemon
After=network.target

[Service]
Type=simple
ExecStart=$HOME/bin/irdest-hubd <your parameters here>

Save this file in ~/.local/share/systemd/user/

Now you can reload the daemon and start the unit.

$ systemctl daemon-reload --user
$ systemctl enable --user irdest-hubd.service
$ systemctl start --user irdest-hubd.service

Available configuration

Following is a list of irdest-hubd configuration values. Those marked with a * are mandatory. Commandline arguments take precedence over environment variables.

ENV variableRuntime argumentDescription
* HUBD_PEERS=[PATH]-P / --peers [PATH]Specify the path to a peer file, containing a newline-separated list of peers to connect to
* HUBD_PORT=[PORT]-p / --port [PORT]Specify a tcp port to which irdest-hubd should bind itself to listen for incoming network traffic
HUBD_UDP_DISCOVERY=0--no-udp-discoverPrevent irdest-hubd from registering a multicast address to find other clients on the same network. Some networks may forbid this, or cause performance issues.
HUBD_SETUP_UPNP=0--no-upnpDisable automatic UPNP port forwarding. Some networks may forbid this, or cause performance issues.
HUBD_RUN_MODE=[MODE]-m / --mode [MODE]Specify the peering mode of this hub. Possible values: "static", "dynamic"
HUBD_ADDR=[ADDR]-a / --addr [ADDR]A valid address to bind to. Must be a valid ip address format.

irdest-gtk

TODO

Irdest Android

TODO