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
|
|
|
|
|
|
|
|
Freedive aims to provide a mobile-first WebUI to manage FreeBSD hosts,
|
|
|
|
designed to welcome beginners, hobbyists and tinkerers
|
|
|
|
to the FreeBSD ecosystem with minimal fuss.
|
|
|
|
|
|
|
|
### 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-13 12:02:26 +02:00
|
|
|
## User management
|
2024-05-09 21:28:48 +02:00
|
|
|
|
2024-05-13 12:02:26 +02:00
|
|
|
> Every user has 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.
|
|
|
|
|
|
|
|
Create release:
|
|
|
|
|
|
|
|
- `mix release --overwrite`
|
|
|
|
|
|
|
|
Create account on dev server
|
|
|
|
|
|
|
|
- `_build/dev/rel/freedive/bin/freedive eval "Freedive.Release.account_create"`
|
|
|
|
|
|
|
|
Reset password for account on dev server
|
|
|
|
|
|
|
|
- `_build/dev/rel/freedive/bin/freedive eval "Freedive.Release.password_reset"`
|
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`
|
|
|
|
|
|
|
|
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.
|