Skip to content
Oznog

3.3 · storage and backups · as-is

A RAM root: a year of scripts that never survived a reboot

date
20260726
what happened
Unraid runs its entire root filesystem, including the shell's home directory, on tmpfs, which is RAM. Twenty-five scripts, a full document-import toolchain plus a live API token, had silently accumulated there on the NAS nexus, surviving only because the box happened to have 18 days of uptime when someone went looking.
what it cost
Nothing, purely by luck of an uptime streak. The near-loss was the whole document-import toolchain and a live credential.
what changed
A standing rule that nothing durable is ever written under the home directory on an Unraid host, because that directory lives on tmpfs and a reboot erases it completely. Scripts moved to a real ZFS dataset that is snapshotted, replicated offsite and in Backblaze; credentials moved to a mode-700 directory on that same pool with hourly snapshots.
the check now
stat -f -c "fstype=%T" on the home directory reports tmpfs. Treat that as gospel for every Unraid host, and restore scripts explicitly from persistent storage after any reboot rather than assuming the home directory survived.

An appliance-style NAS operating system such as Unraid runs its entire root filesystem in RAM by design, which is normally invisible. The home directory behaves like a real one, survives SSH sessions, and df reports plenty of free space. Nothing about using it signals that a reboot erases it completely. A year’s worth of document-import scripts and an API credential had quietly piled up there. They were discovered only because someone happened to go looking, and they survived only because the box had gone eighteen days without a restart.

The fix was not a smarter script. It was learning where the actual persistent storage lives on that class of system, a real filesystem dataset rather than the shell’s apparent home directory, and moving everything durable there as policy, including credentials into a directory with real permissions and its own backup coverage.

Any appliance operating system with a friendly-looking root filesystem deserves the same one-time check, and it is one command: ask the filesystem what type it is, rather than asking whether the files are there right now. The distinction between “these files exist” and “these files survive a power cycle” is not visible in any listing, and the only moment it becomes visible is the moment you can no longer do anything about it.

Source: node0 lessons v0.1, lesson 3.3. Sanitized: checklist v0.1, 20260921; credential store path removed; voice pass 20260921. Part of oznog.com/node0.