2024-05-09 21:28:48 +02:00
|
|
|
# Freedive
|
2024-05-09 16:14:45 +02:00
|
|
|
|
2024-05-23 10:57:46 +02:00
|
|
|
Dive into FreeBSD
|
|
|
|
|
2024-05-23 11:26:09 +02:00
|
|
|
Made by and for users of FreeBSD as their:
|
|
|
|
- Home lab
|
|
|
|
- Tailscale / Wireguard VPN
|
|
|
|
- Manage PF rules (firewall)
|
|
|
|
- Manage Jails via Bastille
|
|
|
|
- Network attached storage
|
|
|
|
- Samba shares
|
|
|
|
- Backups via Restic
|
|
|
|
- Manage ZFS datasets, snapshots and backups
|
|
|
|
- Personal/ public web server
|
|
|
|
- Manage domains and TLS certificates
|
|
|
|
- Host static sites
|
|
|
|
- Reverse proxy to any jail:port
|
|
|
|
|
|
|
|
Freedive works in immediate mode:
|
|
|
|
- Queries host, caches some results in memory
|
|
|
|
- No database except for acounts
|
|
|
|
- Executes commands when actions taken in UI
|
|
|
|
|
|
|
|
> Status: planning/alpha.
|
|
|
|
You can use Freedive to manage system services.
|
|
|
|
Package management coming soon.
|
|
|
|
Other features will be developed as time/help is available.
|
|
|
|
This is currently a hobby project and makes no guarantees
|
|
|
|
about what features will be implemented and when.
|
2024-05-23 10:57:46 +02:00
|
|
|
|
|
|
|
### Develop
|
|
|
|
|
|
|
|
Clone the repository:
|
|
|
|
|
|
|
|
- `git clone https://brew.bsd.cafe/hiway/freedive.git`
|
|
|
|
- `cd freedive`
|
|
|
|
|
|
|
|
Install dependencies:
|
|
|
|
|
|
|
|
- `pkg install -U -y inotify-tools doas`
|
|
|
|
|
|
|
|
Setup your own account to run commands as root without password:
|
|
|
|
|
|
|
|
- `echo "permit nopass <USERNAME> as root" >> /usr/local/etc/doas.conf`
|
|
|
|
|
|
|
|
Start Freedive:
|
2024-05-09 21:28:48 +02:00
|
|
|
|
|
|
|
* Run `mix setup` to install and setup dependencies
|
2024-05-23 10:57:46 +02:00
|
|
|
* Start Freedive with `mix phx.server` or inside IEx with `iex -S mix phx.server`
|
2024-05-09 21:28:48 +02:00
|
|
|
|
|
|
|
Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
|
|
|
|
|
2024-05-23 11:05:47 +02:00
|
|
|
> Registering accounts via browser is enabled in dev envronment.
|
2024-05-13 12:02:26 +02:00
|
|
|
|
2024-05-23 11:03:58 +02:00
|
|
|
Visit [/users/register](http://localhost:4000/users/register) to create an account.
|
2024-05-13 12:02:26 +02:00
|
|
|
|
2024-05-23 11:03:58 +02:00
|
|
|
Then visit [/dev/mailbox](http://localhost:4000/dev/mailbox) to confirm the account.
|
2024-05-13 12:02:26 +02:00
|
|
|
|
2024-05-23 11:03:58 +02:00
|
|
|
Now you can ue these credentials to log in and explore Freedive.
|
2024-05-23 10:33:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
### Deploy
|
|
|
|
|
|
|
|
Create FreeBSD package:
|
|
|
|
|
|
|
|
- `mix package`
|
|
|
|
|
|
|
|
Copy package to target machine:
|
|
|
|
|
|
|
|
- `scp freedive-0.1.0.pkg hostname:`
|
|
|
|
|
|
|
|
SSH to the tagret machine,
|
|
|
|
use `doas -S` (or `sudo -s`) if required
|
|
|
|
to gain admin privileges and then run:
|
|
|
|
|
|
|
|
- `pkg install -U -y freedive-0.1.0.pkg`
|
|
|
|
|
|
|
|
Configure Freedive
|
|
|
|
|
|
|
|
- `$EDITOR /usr/local/etc/freedive/freedive.env`
|
|
|
|
|
|
|
|
Set preferences in freedive.env
|
|
|
|
|
|
|
|
- `HOST="hostname"`
|
|
|
|
- `BIND="ip-to-bind"`
|
|
|
|
- `PORT=3443`
|
|
|
|
|
|
|
|
Ensure that the host is set to whatever hostname you'll use
|
|
|
|
to access the service from browser.
|
|
|
|
For example, if you bind to the Tailscale/Wireguard IP,
|
|
|
|
use the hostname that'll point to this IP.
|
|
|
|
Port can be anything suitable in your environmet
|
|
|
|
that's open and accessible from your mobile/laptop.
|
|
|
|
|
|
|
|
Enable Freedive
|
|
|
|
|
|
|
|
- `service freedive enable`
|
|
|
|
|
|
|
|
Initialize Freedive
|
|
|
|
|
|
|
|
- `service freedive init`
|
|
|
|
|
|
|
|
Create an account for yourself
|
|
|
|
|
|
|
|
- `service freedive account_create`
|
|
|
|
|
2024-05-23 11:03:58 +02:00
|
|
|
> Accounts have full access to every part of the system via Freedive,
|
|
|
|
do NOT create accounts for people you do not trust to have root access
|
|
|
|
on this machine.
|
|
|
|
|
2024-05-23 10:33:04 +02:00
|
|
|
Start Freedive
|
|
|
|
|
|
|
|
- `service freedive start`
|
|
|
|
|
|
|
|
Check logs
|
|
|
|
|
|
|
|
- `tail -f /var/log/freedive/freedive.log`
|
|
|
|
|
|
|
|
Visit https://hostname:port from your browser and
|
|
|
|
log in with the account created above.
|