==========
== Vula ==
==========
automatic local network encryption

Install

Requirements

Currently, GNU/Linux is the only supported operating system. We plan to port the software to other operating systems in the future.

The software has been developed and tested on Debian (bullseye), Mobian, and Ubuntu (20.04 and 20.10). It is likely to work on other modern systemd-based distributions. Option 0 is likely to only work on Debian testing and the latest Ubuntu distro.

Vula can also be run without systemd, and/or in a single monolithic process, but how to do so is not yet documented.

We do not yet offer packages for download, but you can build your own deb or wheel from a git checkout.

Install

option 0: quick install

For a simple technology demonstration we offer an insecure quick package building script to aid in installing vula:

  • git clone https://codeberg.org/vula/vula/
  • cd vula
  • ./misc/quick-install.sh

Install the newly built Debian packages.

option 1: manually build and install Debian Packages

Install the the packaged dependencies:

  • sudo apt install --no-install-recommends build-essential ca-certificates clang coreutils debhelper dh-python dpkg-dev fakeroot flit gcc git gnome-shell-extension-appindicator make python3 python3-all-dev python3-babel python3-build python3-click python3-cpuinfo python3-cryptography python3-dbus python3-dev python3-hkdf python3-ifaddr python3-matplotlib python3-mpmath python3-nacl python3-networkx python3-numpy python3-opencv python3-packaging python3-pathtools python3-pillow python3-pip python3-pluggy python3-progress python3-py python3-pyaudio python3-pydbus python3-pygments python3-pyroute2 python3-pytest python3-pytest-runner python3-pytest-xdist python3-qrcode python3-schema python3-setuptools python3-setuptools-scm python3-pystray python3-sphinx python3-systemd python3-tk python3-toml python3-venv python3-wheel python3-xlib python3-yaml python3-zeroconf sudo time wireguard-tools
  • git clone --recurse-submodules https://codeberg.org/vula/vula_libnss
  • cd vula_libnss
  • make deb && sudo dpkg -i deb_dist/python3-vula-libnss_*.deb
  • cd ../
  • git clone https://codeberg.org/vula/vula
  • cd vula
  • make deb && sudo dpkg -i deb_dist/python3-vula_*_all.deb

Installing the deb will automatically configure nsswitch, restart systemd-sysusers, reload dbus, etc, and will tell systemd to enable and start the vula-organize service.

option 2: build a wheel and install with pip

This option is available for advanced technical users - it requires manual setup of vula_libnss after installing vula_libnss. This essentially means ensuring that the libnss shared object file is installed in /lib/libnss_vula.so.2. This may be installed by building a Debian package or by installing vula_libnss with pip and manually copying the libnss_vula.so.2 file from inside the installed location to the correct location on the system.

If you don’t mind installing many things using sudo pip, the software can be installed this way:

  • git clone --recurse-submodules https://codeberg.org/vula/vula
  • cd vula
  • sudo pip install .

After installing with pip, users will need to configure the system:

  • sudo vula configure nsswitch
  • sudo systemctl daemon-reload
  • sudo systemctl restart systemd-sysusers
  • sudo systemctl reload dbus
  • sudo systemctl enable --now vula-organize

Running vula

To see the current status:

  • vula

To start vula (via dbus activation) if it is not started, or print the status if it is:

  • vula start

To see a list of subcommands:

  • vula --help

To see a list of peers:

  • vula peer

To see a list of commands for working with peers:

  • vula peer --help

To see a list of peers, including disabled peers:

  • vula peer show --all

To see descriptors and qrcodes for all enabled peers:

  • vula peer show -Dq

To see the preferences:

  • vula prefs

To see commands for editing preferences:

  • vula prefs --help

Please open an issue to request alternative or additional install documentation.