574376aa75dfd0d5e883a1121043ea7266a25289
Re-running install.sh was wiping BASEMENT_ADMIN_USER and _PASSWORD_HASH back to empty in my-basement.xml — the user then had to re-enter them in the Unraid UI every time. Annoying. Template now declares those two fields as __PLACEHOLDER__ tokens. install.sh, before fetching the new template, sed-extracts whatever's currently in the existing my-basement.xml and feeds those values back into the substitution. First-time installs sub to empty (user fills via UI); subsequent runs preserve what's there. Bcrypt's $-heavy chars survive sed because `|` is the delimiter and sed only interprets $ in regex/match, not replacement.
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%