FRST is a minimal framework for managing docker-compose stacks per host or tag. Itβs designed for self-hosted setups with modular app definitions and machine-specific stack files.
Each app (like Home Assistant or Frigate) defines its own docker compose config
inside apps/. A host-specific compose file (e.g., docker-compose.grove.yml)
includes the relevant app services.
App volumes should live under volumes/APP_NAME/. For example, if a container
needs /data, mount it like this in the appβs compose file:
volumes:
- ../volumes/APP_NAME/data:/dataMake the script executable:
chmod +x frst./frst start -s grove home-assistant frigate./frst stop -s grove home-assistant frigate./frst restart -s grove home-assistant frigate./frst pull -s grove home-assistant frigateIf no -s/--stack option is provided, FRST uses the systemβs hostname:
./frst start
./frst stop
./frst restart
./frst pullThis runs:
sudo docker compose -f docker-compose.$(hostname).yml up -dArguments after the command are passed to docker compose as service names.
Copy the example env file and populate it with real values:
cp secrets.env.example secrets.envThen reference it in your service definitions like so:
env_file:
- ../../secrets.env- One file per app
- One stack file per machine
- One command to start or stop everything