<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Backup on rHomelab</title><link>https://rhomelab.com/tags/backup/</link><description>Recent content in Backup on rHomelab</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 25 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://rhomelab.com/tags/backup/index.xml" rel="self" type="application/rss+xml"/><item><title>Backing Up Your Self-Hosted Stack: Restic and Borg for Docker Volumes and Configs</title><link>https://rhomelab.com/self-hosted/backing-up-docker-configs/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://rhomelab.com/self-hosted/backing-up-docker-configs/</guid><description>Backing up VMs and containers at the hypervisor level doesn&amp;#39;t cover the app-level data living inside them. Here&amp;#39;s how to back up the actual Docker volumes and configs that make your self-hosted stack rebuildable.</description><content:encoded><![CDATA[<p>A Proxmox Backup Server job backs up entire VMs and containers, which covers you if a whole box dies. It does not, by itself, give you a clean, restorable copy of the actual data living inside your self-hosted apps, the Vaultwarden vault, the Paperless-ngx document store, the dozen <code>docker-compose.yaml</code> files and their bind-mounted config directories that took real time to get right. If your backup strategy stops at the hypervisor layer, you&rsquo;re covered against hardware death but not against the more common failure: a bad update, a fat-fingered <code>docker compose down -v</code>, or a config file you meant to edit and instead overwrote. This is where an app-level backup tool earns its place alongside whatever you&rsquo;re already doing at the VM/container level.</p>
<h2 id="why-hypervisor-level-backup-isnt-enough-on-its-own">Why hypervisor-level backup isn&rsquo;t enough on its own</h2>
<p>A PBS backup (or a VM snapshot) captures the entire disk image, which technically includes your Docker volumes, buried inside it. That&rsquo;s real protection, but it&rsquo;s coarse: restoring means bringing back the whole VM/container state as of that snapshot, not &ldquo;just give me yesterday&rsquo;s Vaultwarden database&rdquo; or &ldquo;just show me what this config file looked like before I broke it.&rdquo; It&rsquo;s also usually daily at best, meaning up to 24 hours of data loss in the worst case, and it doesn&rsquo;t give you an easy way to browse what changed between backups.</p>
<p>App-level backup tools solve a different, complementary problem: fine-grained, deduplicated, easily browsable backups of specific directories and volumes, run as often as you want, with the ability to restore a single file or database from a specific point in time without touching anything else.</p>
<h2 id="restic-vs-borg-what-actually-differs">Restic vs Borg: what actually differs</h2>
<p>Both are content-addressable, deduplicating, encrypted backup tools built for exactly this job, and both are solid choices. The practical differences:</p>
<p><strong>Restic</strong> is a single static binary, no server component required, and it natively supports a wide range of storage backends out of the box, local disk, SFTP, S3-compatible object storage (Backblaze B2, Wasabi, MinIO), and more, without needing extra infrastructure. This makes it the simpler choice if you want to back straight up to cloud storage (B2 pairs especially well with Restic and is commonly the cheapest S3-compatible option per TB), or if you just don&rsquo;t want to run a dedicated backup server at all.</p>
<p><strong>Borg (BorgBackup)</strong> generally edges out Restic on deduplication efficiency and compression ratio in most real-world comparisons, which matters more the larger your backed-up data set gets. Its tradeoff is that it wants a repository it controls directly, either local/mounted storage or a remote host reachable over SSH running Borg itself (or a compatible remote-repo tool like <code>borgmatic</code>&rsquo;s companion setups), it doesn&rsquo;t speak S3-style object storage natively the way Restic does. If you&rsquo;re backing up to a Linux box you control (a second local machine, a cheap VPS, another homelab box at a different location), Borg&rsquo;s efficiency advantage is worth having. If your target is cloud object storage, Restic is the more direct fit.</p>
<p>Neither is a wrong choice for a homelab. If you&rsquo;re already planning to push backups to S3-compatible cloud storage, pick Restic. If you&rsquo;re backing up to a Linux box you control, pick Borg for the better dedup, or Restic if you&rsquo;d rather not think about the difference and just want something that works everywhere.</p>
<h2 id="what-to-actually-back-up-in-a-docker-based-self-hosted-stack">What to actually back up in a Docker-based self-hosted stack</h2>
<p>Two categories, and they need different treatment:</p>
<p><strong>Bind-mounted config and data directories.</strong> Anything mapped as <code>./data:/app/data</code> or similar in a <code>docker-compose.yaml</code>, the app&rsquo;s actual working files, is a plain directory on the host filesystem and both Restic and Borg can back it up directly with no special handling, same as any other files.</p>
<p><strong>Named Docker volumes.</strong> These live inside Docker&rsquo;s own storage area (<code>/var/lib/docker/volumes/</code> by default), not somewhere you&rsquo;d casually browse. You can back them up directly from that path, but the cleaner, safer pattern is to spin up a throwaway container that mounts the named volume and pipe the backup tool through it, or stop the dependent container briefly and back up the volume&rsquo;s underlying directory directly. For anything with a live database inside (Postgres, MySQL, SQLite-backed apps), back up a proper database dump (<code>pg_dump</code>, etc.) alongside or instead of the raw files, a backup taken mid-write on a live database file can be internally inconsistent even if the backup tool itself ran without error.</p>
<p><strong>Also back up the <code>docker-compose.yaml</code> files themselves and any <code>.env</code> files.</strong> These aren&rsquo;t data, but without them a restored volume is just orphaned files with no stack definition to bring them back online. Keeping compose files in a private git repo (never commit <code>.env</code> secrets to it) alongside the data backups from Restic/Borg means a full rebuild is &ldquo;clone the repo, restore the volumes, <code>docker compose up -d</code>&rdquo;, not a reconstruction project from memory.</p>
<h2 id="a-workable-schedule">A workable schedule</h2>
<p>There&rsquo;s no need to overthink cadence. A reasonable default: nightly backups via cron (both Restic and Borg are trivially cron-friendly, or wrap them with <code>borgmatic</code> or Restic&rsquo;s own scheduling helpers for cleaner config management), with a retention policy keeping recent daily snapshots plus a thinning schedule further back, both tools support this natively (<code>restic forget --prune</code> with retention flags, Borg&rsquo;s <code>prune</code> command). Something like 7 daily, 4 weekly, 6 monthly is a common, sane starting point, adjust based on how much churn your data actually has and how much backup storage you&rsquo;re willing to spend.</p>
<h2 id="test-the-restore-not-just-the-backup">Test the restore, not just the backup</h2>
<p>This is the step almost everyone skips and the one that actually matters. A backup job completing without error tells you the tool ran, it doesn&rsquo;t tell you the backup is actually restorable. Periodically (quarterly is a reasonable minimum) actually restore a real backup, ideally into a throwaway test environment, and confirm the app comes back up correctly with real data intact. Both Restic and Borg support mounting a backup repository as a browsable filesystem (<code>restic mount</code>, <code>borg mount</code>) specifically to make spot-checking easy without doing a full restore every time, use that for lighter-weight periodic sanity checks between the less frequent full restore tests.</p>
<h2 id="bottom-line">Bottom line</h2>
<p>Hypervisor-level backups (PBS, VM snapshots) protect you against hardware and whole-box failure. App-level backups with Restic or Borg protect you against the much more common failure mode, a bad update, a mistaken command, a config you overwrote, by giving you fine-grained, frequent, easily restorable copies of the actual data and configs that make your self-hosted stack yours. Run both. Pick Restic if you&rsquo;re backing up to cloud object storage or want zero server infrastructure, pick Borg if you&rsquo;re backing up to a box you control and want the better deduplication. Either way, actually test a restore periodically, a backup job that&rsquo;s never been restored from is a hope, not a plan.</p>
]]></content:encoded></item><item><title>The 3-2-1 Backup Rule for Data Hoarders: What Off-Site Actually Means at 50TB+</title><link>https://rhomelab.com/data-hoarding/3-2-1-backup-strategy/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://rhomelab.com/data-hoarding/3-2-1-backup-strategy/</guid><description>The 3-2-1 backup rule is easy to say and genuinely hard to apply once your array is measured in tens of terabytes. Here&amp;#39;s what each part actually requires at data-hoarder scale.</description><content:encoded><![CDATA[<p>The 3-2-1 backup rule gets repeated so often it&rsquo;s turned into a slogan: three copies of your data, on two different media types, with one copy off-site. It&rsquo;s good advice. It&rsquo;s also advice that was mostly written with a few hundred gigabytes of irreplaceable photos in mind, not the 50, 100, or 200TB array a serious data hoarder ends up running. At that scale, &ldquo;just keep an off-site copy&rdquo; stops being a checkbox and starts being a real infrastructure and cost decision. Here&rsquo;s what each part of 3-2-1 actually means once your data won&rsquo;t fit on a shelf of external drives anymore.</p>
<h2 id="three-copies-what-actually-counts-as-a-copy">Three copies: what actually counts as a copy</h2>
<p>The rule says three, but it means three <em>independent</em> copies, not three places the same failure can take out at once. Your live array plus a snapshot on that same array is not two copies, it&rsquo;s one copy with a rollback option, a controller failure, a bad firmware update, or ransomware that reaches the snapshot pool takes both out together. A real second copy needs to survive whatever kills the first: separate hardware, ideally a separate power source, ideally not mounted and writable at all times.</p>
<p>At data-hoarder scale, this usually shakes out as: the live/working array (fast, always online, what you actually use day to day), a local backup copy (a second NAS, or a backup-dedicated pool on the same box using different physical disks) that&rsquo;s slower but survives a drive failure or controller death on the primary, and the off-site copy covering the scenario neither of the first two can, the building itself.</p>
<h2 id="two-different-media-dont-overthink-this-one">Two different media: don&rsquo;t overthink this one</h2>
<p>&ldquo;Two different media types&rdquo; trips people up more than it needs to. The intent is avoiding a single failure mode wiping out every copy at once, a bad batch of drives from the same manufacturing run, a firmware bug specific to one drive model, a RAID controller that corrupts everything it touches. In practice for a data hoarder this means: don&rsquo;t build your primary array and your local backup out of the exact same drive model bought in the same order, and don&rsquo;t rely on optical media or tape as your only &ldquo;different media&rdquo; unless you&rsquo;re already invested in that workflow (tape especially becomes genuinely cost-effective again once you&rsquo;re well past 100TB, LTO media cost per TB drops below spinning disk at that scale, but it&rsquo;s a real workflow commitment, not a casual add-on).</p>
<p>For most homelab-scale hoarders, &ldquo;two media types&rdquo; in practice means two separate arrays, ideally different drive models or at least different purchase batches, rather than a literal tape vs. disk split. That satisfies the intent without forcing a workflow most people don&rsquo;t actually want.</p>
<h2 id="one-copy-off-site-the-part-that-actually-gets-skipped">One copy off-site: the part that actually gets skipped</h2>
<p>This is the step almost everyone skips at scale, and it&rsquo;s the one that matters most, because it&rsquo;s the only piece of 3-2-1 that protects against fire, flood, theft, or a lightning strike that takes out every drive in the house at once. The honest reason it gets skipped isn&rsquo;t laziness, it&rsquo;s that off-site storage for tens of terabytes is genuinely expensive or genuinely inconvenient, usually both. There&rsquo;s no way around picking a real tradeoff here.</p>
<p><strong>Cloud cold storage (Backblaze B2, Wasabi, or similar).</strong> Priced per TB/month, meaningfully cheaper than mainstream cloud storage (S3 Glacier-style tiers exist too but retrieval costs and delays make them a worse fit for a working backup). At 50TB, expect real, ongoing monthly cost, not a rounding error, this is the tradeoff: convenient and automatable, but you&rsquo;re paying every month indefinitely, and the <em>entire point</em> of a backup, restoring after a real disaster, could mean pulling 50TB back down over a home internet connection, which is a multi-day proposition even on a fast link. Worth pricing out egress/retrieval costs specifically, not just storage cost, before committing, some providers charge meaningfully more to pull data back down than to store it.</p>
<p><strong>A second physical NAS at a friend&rsquo;s or family member&rsquo;s house.</strong> Zero ongoing cost beyond the hardware itself and whatever bandwidth it uses to sync, and restore speed is whatever your connection to that location allows, often faster than pulling 50TB from the cloud. The tradeoffs are real too: you&rsquo;re depending on someone else&rsquo;s power, internet, and willingness to keep a box running indefinitely, and the initial data transfer (the &ldquo;seed&rdquo;) for tens of terabytes over the internet can take weeks, most people physically drive the drives to the site once for the initial seed rather than trying to push it all over a home connection.</p>
<p><strong>A rotating drive taken to a safe deposit box or a workplace.</strong> The lowest-tech option and the one most likely to actually happen for a solo operator, since it requires no ongoing service cost and no dependency on someone else&rsquo;s hardware. The tradeoff is currency, a drive that only gets swapped monthly means your off-site copy is, worst case, a month stale, and it&rsquo;s entirely manual, nothing enforces that the swap actually happens on schedule.</p>
<p>There&rsquo;s no universally right answer among these three, pick based on what you&rsquo;ll actually keep doing consistently. A technically superior plan you abandon after two months protects you less than a simpler one you actually maintain.</p>
<h2 id="what-to-actually-back-up-since-everything-usually-isnt-realistic">What to actually back up, since &ldquo;everything&rdquo; usually isn&rsquo;t realistic</h2>
<p>At data-hoarder scale, backing up literally everything off-site is often neither affordable nor necessary. Split your data by how replaceable it actually is:</p>
<ul>
<li><strong>Irreplaceable</strong> (family photos, personal documents, anything that doesn&rsquo;t exist anywhere else): this is non-negotiable for the off-site copy regardless of cost, it&rsquo;s usually a small fraction of total array size anyway.</li>
<li><strong>Expensive to re-acquire but technically replaceable</strong> (a media library built up over years of ripping/collecting): worth backing up if the off-site option is affordable at that scale, but a real candidate for being excluded from the expensive tier if cost is the limiting factor, since it&rsquo;s re-buildable, just slowly and annoyingly.</li>
<li><strong>Trivially re-downloadable</strong> (Linux ISOs, anything you could re-acquire in an afternoon): generally not worth off-site backup budget at all.</li>
</ul>
<p>Sorting your array into those tiers before pricing out an off-site solution usually cuts the actual off-site footprint by more than half, which materially changes which of the three options above becomes affordable.</p>
<h2 id="bottom-line">Bottom line</h2>
<p>3-2-1 doesn&rsquo;t get easier at data-hoarder scale, it gets more expensive and more inconvenient at exactly the point where skipping the off-site step feels most tempting, because the local array already feels safe with RAID/RAIDZ redundancy. Redundancy protects against a drive failing. It does nothing against fire, flood, theft, or ransomware hitting the whole box at once, that&rsquo;s what the off-site copy is actually for. Sort your data by how replaceable it is first, then pick whichever off-site option (cloud cold storage, a second box at another location, or a rotating physical drive) you&rsquo;ll actually keep maintaining, rather than the one that looks best on paper and quietly stops happening after month two.</p>
]]></content:encoded></item></channel></rss>