matthew e9464bb3c5 basement: add data dir bind mount (/var/lib/basement-ui)
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.
2026-05-19 08:32:34 -07:00

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.

S
Description
Public bootstrap scripts (unraid-1, etc.) — fetched anonymously from the LAN
Readme
48 KiB
Languages
Shell 100%