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.
Put local-only secrets in an untracked compose override:
cp docker-compose.local.example.yml docker-compose.local.ymlCopy only the service blocks you need from the example into that local override, for example:
services:
wallabag:
environment:
MYSQL_ROOT_PASSWORD: your-real-passwordfrst will automatically include docker-compose.local.yml and
docker-compose.$(hostname).local.yml when present.
- One file per app
- One stack file per machine
- One command to start or stop everything