e9464bb3c527bcf321dfac554f762e5913e1f6b2
Last config blocker — basement-ui's store.Open() calls MkdirAll on BASEMENT_DATA_DIR (default /var/lib/basement-ui), which fails inside the container because / is read-only-ish for the unprivileged user. Mount /mnt/user/appdata/basement to /var/lib/basement-ui via a Path Config; install.sh pre-creates the directory (and host-agent's appdata while we're at it, since we never explicitly created that either — it had been working by luck). Source-checked the basement-ui repo for any other "is required" env vars; ADMIN_USER / ADMIN_PASSWORD_HASH / JWT_SECRET / DRIVER (+ the two DRIVER_GARAGE_* when DRIVER=garage) are the complete set. After this, container should reach Up.
pq/scripts
Public bootstrap scripts. Only public repo on git.docker.pq.io — everything
else is private. This one is public so machines on the internal network
can curl raw URLs anonymously, without embedding tokens.
Distribution is over the LAN (gitea is not internet-reachable); "public" here just means anonymous access from the internal network.
Layout
unraid-1/
install.sh # bootstrap entrypoint
garage.toml # garage S3 config (single-node, lmdb, rf=1)
garage.template.xml # unraid CA template — garage container
basement.template.xml # unraid CA template — basement-ui (garage admin UI)
watchtower.template.xml # unraid CA template — image auto-updater
host-agent.template.xml # unraid CA template — per-host metrics + fan ctrl
Usage
On the unraid-1 console:
bash <(curl -sL https://git.docker.pq.io/pq/scripts/raw/branch/main/unraid-1/install.sh)
The installer is idempotent. Re-run any time to re-fetch templates or pick
up new ones. FORCE=1 rotates garage's secrets.
After install: Unraid UI → Docker → Add Container → Template dropdown →
Apply each of my-garage, my-basement, my-watchtower, my-host-agent.
Description
Public bootstrap scripts (unraid-1, etc.) — fetched anonymously from the LAN
48 KiB
Languages
Shell
100%