NAS and home-server platforms¶
Every platform on this page runs OCI containers, so they all run the same image and none of them needs a variant of it. The only difference is how you hand the container definition over, and most take the Compose file unchanged.
There is nothing to prepare first on any of them. Start the container, open the web interface, and the setup wizard chooses where to keep the data, creates your account and writes the configuration.
| Platform | How | Ready-made template |
|---|---|---|
| Unraid | Community Applications | ✅ deploy/nas/unraid/ |
| CasaOS / ZimaOS | App store manifest | ✅ deploy/nas/casaos/ |
| TrueNAS SCALE 24.10+ | Apps → Install via YAML | paste the Compose file |
| HexOS | the TrueNAS layer underneath | paste the Compose file |
| Synology DSM 7.2+ | Container Manager → Project | paste the Compose file |
| QNAP | Container Station → Application | paste the Compose file |
| Proxmox VE 9.1+ | pulls the OCI image natively | none needed |
The one thing that catches everyone: ownership
The app runs as uid 1000, and both /data and /config must be
writable by it.
A platform-managed volume inherits the image's ownership and works untouched. A bind mount to a host path does not — it arrives owned by whoever owns the host directory, and the container starts and immediately stops because it cannot create its database.
Where a platform's convention is a host path — Synology, QNAP, and TrueNAS
if you choose a dataset — run chown -R 1000:1000 <that path> once before
the first start.
TrueNAS SCALE¶
TrueNAS moved from Kubernetes to Docker in 24.10 "Electric Eel", so current versions take a Compose file directly.
Apps → Discover Apps → ⋮ → Install via YAML, name it stocktake, and paste
deploy/compose/docker-compose.yml. Change TZ to your own timezone before
saving.
The Compose file uses Docker named volumes, which TrueNAS manages and which arrive with the right ownership. To keep the data on a dataset you can snapshot instead — worth doing, since ZFS snapshots of the dataset holding both directories are the best backup this app can have:
volumes:
- /mnt/tank/apps/stocktake/config:/config
- /mnt/tank/apps/stocktake/data:/data
…then chown -R 1000:1000 /mnt/tank/apps/stocktake once, from a shell.
HexOS¶
HexOS is built on TrueNAS SCALE, and its app catalogue is a curated set rather than something anyone can publish into. So there is no HexOS template to submit: reach the TrueNAS interface underneath and follow the section above.
Synology DSM¶
Needs DSM 7.2 or later for Container Manager's Projects. On older DSM the Docker package has no Compose support.
- Install Container Manager from Package Center.
- Make a folder for it, e.g.
/volume1/docker/stocktake, containingconfiganddata. - Project → Create, name
stocktake, point it at that folder, choose Create docker-compose.yml, and paste the Compose file with the volumes changed to those two host paths. sudo chown -R 1000:1000 /volume1/docker/stocktakeover SSH — see the warning above.
QNAP¶
Container Station → Applications → Create, paste the Compose file. Keep the
named volumes, or point them at /share/Container/stocktake/{config,data} and
chown -R 1000:1000 that path first.
Proxmox VE¶
Requires Proxmox VE 9.1 or later
Running the container natively depends on Proxmox's OCI image support, which arrived in 9.1 and does not exist in 8.x or 9.0. Check Datacenter → your node → Summary for the version before following this section.
On anything earlier, skip to Before 9.1 — the app runs perfectly well there, just inside Docker rather than as an LXC of its own.
Proxmox VE 9.1 pulls OCI images and runs them as LXC containers directly,
so this project ships no LXC template — and deliberately. Converting a Docker
image into one by hand (docker export, repair the /dev/stdout symlinks,
recompress) produces an artefact that duplicates the image and then drifts from
it.
- Storage → Pull from OCI Registry → the image name.
- Create CT, pick the pulled image on the Template tab, add mount points
for
/dataand/configon Disks. - Set
TZunder Options → Environment after creation.
Two caveats, from Proxmox rather than from this app:
- It is a tech preview in 9.1 — no live migration, and updating means recreating the container rather than swapping the image.
- The console shows the main process's output, not a shell.
pct enter <vmid>gets you one, without the image's working directory orPATH, so run the recovery tool ascd /srv/stocktake && .venv/bin/python -m app.recover.
Before 9.1¶
Run a Debian LXC or a VM with Docker inside it and follow the Compose instructions. For an LXC, enable nesting (Options → Features → Nesting) or Docker will not start inside it.
This is also the safer choice on 9.1 for now, given the tech-preview caveats above — an unprivileged Debian LXC running Docker is a well-worn path, and the upgrade to native OCI is a re-create rather than a migration whenever you want it.
Getting it into an app store¶
Unraid Community Applications and the CasaOS AppStore both accept community
submissions, and deploy/nas/ holds a ready manifest for each. TrueNAS,
Synology and QNAP have no equivalent third-party catalogue — their users install
from a Compose file, which is what the rest of this page is for.