Use this when you want the current reference host posture written down as a repeatable recipe instead of a pile of remembered shell steps.
Scope:
- reference host image:
Ubuntu Server 24.04.4 LTS - one node
- one trusted steward group
- Docker Compose as the supported runtime
This recipe covers the host machine that runs the stack itself, not the separate touchscreen or playback browser clients.
- Install Docker Engine and the Docker Compose plugin.
- Clone this repo onto the host.
- Make sure the service user owns the repo checkout and can run
docker compose. - Decide which SSH port should stay open before enabling the firewall.
From the repo root on the Ubuntu host:
sudo ./scripts/ubuntu_appliance.shWhat it does:
- enables
ufw - allows
22/tcp,80/tcp, and443/tcp - writes
/etc/systemd/system/memory-engine-compose.service - enables Docker and the compose service for restart-on-boot
Useful variants:
sudo ./scripts/ubuntu_appliance.sh --ssh-port 2222
sudo ./scripts/ubuntu_appliance.sh --service-user kiosk --start-now
sudo ./scripts/ubuntu_appliance.sh --skip-firewallIf you use a different SSH port, set it here before leaving the machine.
Stamp out development defaults and deploy:
./scripts/first_boot.sh --public-host memory.example.com --deployOr, if DNS is not ready yet:
./scripts/first_boot.sh --public-host 203.0.113.10 --tls internal --deployAfter deploy:
./scripts/status.sh
./scripts/doctor.shThen open /ops/ and confirm:
- the node is
readyor in an understooddegradedstate - no critical storage warning is present
- no unexpected pool warning is present
The systemd unit is intentionally narrow:
- it runs
docker compose up -d --remove-orphansfrom this repo checkout - it leaves shutdown behavior explicit through
docker compose down - it does not try to update code, rotate secrets, or change
.env
That keeps boot predictable. Updates still happen through the normal steward path:
./scripts/update.sh --public-host memory.example.comAfter any reboot, verify:
systemctl status memory-engine-compose.service --no-pager
sudo ufw status
docker compose psIf the compose service did not come back:
- check that the repo path in the unit still exists
- check that the configured service user can run
docker compose - inspect
journalctl -u memory-engine-compose.service -n 80 --no-pager
This host recipe does not replace kiosk-browser setup on dedicated client machines. For those machines:
- use installation-checklist.md
- launch browsers through
./scripts/browser_kiosk.sh --role kiosk|room|ops --base-url ... - keep Chromium restore prompts and visible browser chrome out of the recovery path
Change it only when one of these is true:
- the reference host image changes away from
Ubuntu Server 24.04.4 LTS - the supported runtime changes away from Docker Compose
- the firewall posture or boot service needs to open materially different ports or services