Cover art for Building a Free, Self-Hosted 3-2-1 Backup System

Building a Free, Self-Hosted 3-2-1 Backup System

A detailed journey through setting up a zero-cost backup workflow across Linux, Windows, iOS, and Android using open-source tools.

21 cards · 3 min · tap to begin

From · · 3 min

Building a Free, Self-Hosted 3-2-1 Backup System

A detailed journey through setting up a zero-cost backup workflow across Linux, Windows, iOS, and Android using open-source tools.

In brief

A detailed journey through setting up a zero-cost backup workflow across Linux, Windows, iOS, and Android using open-source tools. Live file synchronization is not a true backup; reliable data safety requires separate automated snapshots stored locally and offsite. Originally reported by Smarmelling.

Fixing broken personal backup systems

Setting up seamless file storage is notoriously finicky. Building a reliable, self-hosted sync setup prevents unexpected data loss when equipment fails.

Creating storage and syncing it is one of those activities where something is always off, doesn't work like you want, and is not working at the time when you need it.

Refusing recurring cloud subscription fees

Paying monthly storage fees just to access personal files is unnecessary. A robust infrastructure can be built entirely using existing hardware and free tools.

I had no interest in giving any more money to any provider to just be able to see my own files.

Adopting the classic 3-2-1 strategy

The 3-2-1 rule demands three total copies of data across two different media types, with at least one stored offsite.

3-2-1 backup means storage should be in: THREE copies, on TWO different storage media, with ONE copy offsite.

Structuring the three storage layers

The backup architecture divides into an active working layer, a physical external hard drive, and a free cloud provider for offsite recovery.

This post will go in detail on the choices I made for each of these layers.

Establishing the local ground truth

A primary Linux mini-PC acts as the central hub. A single core folder named Sync in its home directory contains all essential curated files.

My main Minisforum mini-pc holds the ground truth of the files, and acts as the daily driver.

Syncing across local devices automatically

Syncthing replicates files from the primary PC to an always-on secondary mini-PC functioning as a home NAS.

This is then synced via Syncthing to my second mini-pc, a GMKtec M3 that acts as my NAS and is always on.

File sync is not backup

Live synchronization copies deletions and file corruption instantly across all connected nodes. True backups require distinct snapshot layers.

Importantly syncthing is not back-up.

Managing low mobile phone storage

Phone storage constraints prevent syncing entire folders locally. Curating a lightweight 12GB primary dataset helps fit essential data across systems.

The size of Sync is actually fairly small for me, it's just 12GB, but it's not small enough to fit on my 128GB phone.

Accessing files remotely on iOS

Connecting Tailscale with Runestone allows viewing remote files directly on an iPhone over a secure network without storing them locally.

The disadvantage of this is that you need a Tailscale connection all the times you want to access the files, but other than that it works wonders.

Wrestling with Android file access

Viewing remote files on Android requires chaining Tailscale, Total Commander's LAN plugin, and markdown apps like Acode in a clunky chain.

This meant I had to create an insane workaround that is as ugly as it is fragile.

Evaluating cross-platform syncing tools

Tailscale and Syncthing perform exceptionally well, while mobile file access remains surprisingly painful across modern mobile operating systems.

In all of this my takeaway was: Tailscale is the true king; syncthing is amazing; iOS is better than I remembered; Android has gotten almost as bad as Windows.

Choosing local backup file systems

Though ext4 offers technical advantages, keeping a local hard drive on FAT32 or exFAT ensures smooth cross-platform compatibility across operating systems.

I had to default instead to exFAT which was slightly superior than FAT32 but vastly inferior than ext4.

Automating local snapshots with Restic

Setting up Restic with systemd timers creates weekly encrypted, deduplicated snapshots, reducing 12GB of raw files down to 6GB.

It created a nice compressed, encrypted folder that has all the information. And then I set up a systemd to back up the Sync folder every week on Sunday night.

Leveraging free cloud tiers

Clearing out unnecessary emails reclaims over 10GB of free space on Google Drive, creating enough room for an offsite backup copy.

The simplest seemed Google Drive. You get 15GB for free and it has good ways to connect to traditional ways to back up information.

Bridging mobile photos into sync

Photos move from iOS into the central Sync folder using PhotoSync, ensuring media propagates out to local backup drives and cloud storage.

I created a folder inside of Sync called Photos and used PhotoSync to do the rest.

Overcoming cloud backup API bottlenecks

Running Restic over network mounts to Google Drive triggers rate limits and HTTP latency timeouts, making automated remote snapshotting unreliable.

It stalled a number of times because of too many request and http latency so I had to start splitting bakcup requests in subfolders of Sync .

Fallback to simple remote archives

Uploading a zipped archive via rclone to Google Drive offers a simple, reliable offsite option that circumvents complex backup software failures.

I zipped the Sync folder from my daily driver and copied that through the rclone Google Drive instance.

Preserving configuration dotfiles on GitHub

Tool configurations for Neovim and Linux environments are managed with chezmoi and backed up to GitHub for instant machine recovery.

Configs are pretty important since I have spent some time on them by now and would not like to have all that progress be lost

Navigating email backup challenges

Email archiving remains a difficult challenge to automate systematically without cluttering local directories or consuming offsite cloud limits.

One of the other materials that I could not figure out how to back up properly is emails.

Protecting Arch Linux system state

Installing Timeshift creates system restore points on Arch Linux, allowing rapid rollback whenever system updates break hardware drivers or settings.

I installed and set up Timeshift for this but I haven't really played around with it other than the basic config

Balancing perfection and practicality

Building custom backup stacks involves constant compromises between automated elegance and robust, zero-cost pragmatic stability.

In this whole procedure there were something things that worked extremly well and some where I had to compromise or give up entirely

The short version

Live file synchronization is not a true backup; reliable data safety requires separate automated snapshots stored locally and offsite.

Read the original on Smarmelling

React

Sign in to react and comment.

Comments (0)

Life is short. Keep it sweet. Respect others' opinions and be kind!

    Recommended next

    More decks on backups and related topics.