Howto build Freedive - A FreeBSD GUI Management Tool (2024-05-23):

Freedive emerges as an innovative standalone tool for FreeBSD, offering a graphical user interface (GUI) that revolutionizes the way systems are managed, enabling both newcomers and experienced users to administer their FreeBSD installations with ease. This GUI, accessible through a mobile-friendly web interface, democratizes the use of FreeBSD by allowing beginners to engage with the operating system without the need to delve into the complexities of the command-line shell. Designed with responsiveness in mind, Freedive's interface adapts seamlessly to various screen sizes, ensuring that system administrators can perform essential tasks from virtually any device, be it a smartphone, tablet, or desktop. The intuitive design of Freedive's web interface lowers the entry barrier for managing FreeBSD systems, making it more approachable for users who may not be familiar with Unix-like environments. By providing a full spectrum of system management capabilities through its GUI, Freedive empowers users to perform tasks ranging from user account management to service configuration, all without writing a single line of shell code. Freedive stands as a testament to the versatility of FreeBSD, extending its appeal beyond the traditional tech-savvy audience to a broader range of users who can now leverage the power of FreeBSD with the convenience of a modern web-based interface.


Freedive Services Overview

Build pkg File
Building a distributable package file of Freedive is pretty straight forward but requires you to have the latest> instead of quarterly ports branch active. Building requires Elixir in version >= 1.16.0 which is already present in latest. If you are already on latest, you can skip this step. Switching to the latest port branch can be done by running the following commands:

    mkdir -p /usr/local/etc/pkg/repos
    echo "FreeBSD: { url: \"pkg+\${ABI}/latest\" }" > /usr/local/etc/pkg/repos/FreeBSD.conf
    pkg -y upgrade -f

If you are fully running on pkg instead of ports, we need to copy a file which is referenced and used by Freedive. If you have ports active on your system, this step can be skipped - if not, simply run the following commands:

    mkdir -p /usr/ports/Keywords/
    curl -O /usr/ports/Keywords/

Afterwards, Freedive can be build and packaged by running the following commands:

    pkg install git inotify-tools gmake elixir gcc doas
    git clone
    mix setup
    mix package

As soon as this process is finished you will have your distributable .pkg (e.g. freedive-0.1.0.pkg) file in your build directory. You can copy this to your systems and simply install it by running pkg install -U -y freedive-0.1.0.pkg. Afterwards, the configuration must be adjusted in /usr/local/etc/freedive/freedive.env where the following things must be defined:


Finally, the service can be started, initialized and a user account be created:

    service freedive enable
    service freedive init
    service freedive account_create
    service freedive start

The service can be accessed on http://localhost:4000 where you are finally able to manage your whole systems by a web gui.

* source (
* talk
* freedive-0.1.0.pkg (amd64)