freedive/README.md

105 lines
2.2 KiB
Markdown
Raw Normal View History

2024-05-09 21:28:48 +02:00
# Freedive
2024-05-09 16:14:45 +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
* 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.