Want a resilient, “just works” way to mirror a folder across a few tiny single-board computers (SBCs) using cheap USB sticks? Syncthing is a great fit: peer-to-peer, encrypted, and light enough for ARMv7 boards like the NanoPi NEO. This guide wires up three nodes (node1, node2, node3) to continuously sync a folder living on USB keys mounted at /mnt/backup/node-storage.

TL;DR: mount the USB as the syncthing user (exFAT/NTFS need uid,gid), run Syncthing as a dedicated service user, enable Ignore Permissions on the folder, share the folder between devices, done.


Why Syncthing?

  • Peer-to-peer: no central server; any node can be offline intermittently.
  • Efficient: block-level deltas, compression; QUIC and TCP transports.
  • Simple ops: Web UI, systemd units, no external DB.
  • Secure: TLS 1.3 by default; device identity via public keys.

Prerequisites

  • 3× Debian 12 ARM boards (e.g., NanoPi NEO).
  • A USB mass-storage device per node, mounted at /mnt/backup (often exFAT on USB sticks).
  • Shell access as root (or sudo).
  • (Optional) Tailscale for easy private networking.

We’ll sync: /mnt/backup/node-storage.


Step 1 — Install Syncthing & create a service user (each node)

```bash
apt update
apt install -y syncthing

Dedicated service user (no login shell)

id -u syncthing >/dev/null 2>&1 || useradd -m -s /usr/sbin/nologin syncthing

Start persistent per-user service

loginctl enable-linger syncthing
systemctl enable --now syncthing@syncthing

systemctl status syncthing@syncthing --no-pager