One work folder, encrypted backups, tested restores, optional offsite + sync.
This layer sits on top of L0–L3 (Secret Box → Device Shell → Network Cloak → Comms Veil).
You are building four simple things:
BACKUP_A.restic.
BACKUP_B + optional encrypted tarball and multi-device sync.
You already have from earlier layers:
my-secrets.kdbx) on CLEAN LAPTOP.For L4 you need physical stuff:
BACKUP_ABACKUP_B (ADVANCED / optional).BACKUP_A.BACKUP_B.On CLEAN LAPTOP:
BACKUP_A.BACKUP_A.BACKUP_B, do the same (rename to BACKUP_B).On paper, write:
L4 DRIVES
BACKUP_A: physical location = ______
BACKUP_B: physical location = ______ (if you have it)
On CLEAN LAPTOP:
SovStack-Work.On paper:
L4 WORK FOLDER
Path: /home/<yourname>/SovStack-Work
SovStack-Work folder created.SovStack-Work or its subfolders.
We’ll use restic to encrypt and back up SovStack-Work to BACKUP_A.
On CLEAN LAPTOP:
sudo apt update
sudo apt install restic
Enter your user password when asked.
restic installed without errors.This is the backup encryption password. It can be long and random; you will store it in KeePass and in a small text file.
RESTIC BACKUP PASSWORD.restic.Now create a password file on disk:
RESTIC BACKUP PASSWORD.restic-password.txt in your Secrets folder./home/<yourname>/Secrets/restic-password.txt.On paper, write:
RESTIC
Password stored in KeePass entry: "RESTIC BACKUP PASSWORD"
File copy location: /home/<yourname>/Secrets/restic-password.txt
restic-password.txt created in Secrets folder.(This file lives on your encrypted disk; if someone steals only the external drive, they do not have this password.)
This script will, when run:
BACKUP_A.SovStack-Work.On CLEAN LAPTOP:
BACKUP_A.BACKUP_A in the side bar./media/<yourname>/BACKUP_A or
/run/media/<yourname>/BACKUP_A.
BACKUP_A PATH: ____________________
In Files, with BACKUP_A open:
restic-repo.The full path is something like:
/media/<yourname>/BACKUP_A/restic-repo or/run/media/<yourname>/BACKUP_A/restic-repo.Write the full path on paper:
BACKUP_A RESTIC REPO:
/media/<yourname>/BACKUP_A/restic-repo (or your path)
restic-repo folder created on BACKUP_A.On CLEAN LAPTOP:
#!/bin/bash
# === L4 BACKUP TO BACKUP_A ===
# 1. Tell restic where to store the repository and find the password
export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_A/restic-repo"
# If your BACKUP_A path was /run/media/... change the line above to:
# export RESTIC_REPOSITORY="/run/media/$USER/BACKUP_A/restic-repo"
# 2. Initialize the repository if needed
restic snapshots >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Initializing restic repository on BACKUP_A..."
restic init
fi
# 3. Run the backup of your WORK FOLDER
echo "Starting backup of SovStack-Work..."
restic backup "$HOME/SovStack-Work"
# 4. Apply simple retention policy (tune if you like)
echo "Applying retention (7 daily, 4 weekly, 6 monthly)..."
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
echo "Backup to BACKUP_A completed."
RESTIC_REPOSITORY line so that it matches the path you wrote down (/media/... or /run/media/...).backup_to_BACKUP_A.sh in your home folder:
/home/<yourname>/backup_to_BACKUP_A.sh
chmod +x ~/backup_to_BACKUP_A.sh
backup_to_BACKUP_A.sh saved in home folder.chmod +x.On CLEAN LAPTOP:
BACKUP_A.~/backup_to_BACKUP_A.sh
The first time:
Watch for Backup to BACKUP_A completed. at the end.
We now prove that backups are real, not magic.
On CLEAN LAPTOP:
SovStack-Work, create a file:
TEST-L4.txt.Hello L4 backup.~/backup_to_BACKUP_A.sh
TEST-L4.txt created.SovStack-Restore-Test in your home:
/home/<yourname>/SovStack-Restore-Test.
BACKUP_A still plugged in, run:export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_A/restic-repo"
# or /run/media/... if that's your path
restic snapshots
You should see a list of snapshots.
restic restore latest --target "$HOME/SovStack-Restore-Test"
SovStack-Restore-Test → home/<yourname>/SovStack-Work/ (restic recreates the path).TEST-L4.txt exists and has the correct text.restic snapshots showed snapshots.restic restore ran without errors.TEST-L4.txt appeared in SovStack-Restore-Test with correct content.You now know backups work. You can delete SovStack-Restore-Test afterwards if you want.
On paper, write:
L4 DAILY / WEEKLY RULES
**DAILY (or whenever working):**
- Save all important files into `SovStack-Work` (nowhere else).
**WEEKLY:**
- Plug in BACKUP_A.
- Run: `~/backup_to_BACKUP_A.sh`
- Wait for "Backup completed."
**MONTHLY:**
- Do one test restore of a small file into `SovStack-Restore-Test` (like we did once).
New heading on paper:
L4 – NEVER DO THIS
1. Never keep your only copy of an important file **outside** `SovStack-Work`.
2. Never edit or delete files **inside** the `restic-repo` folder directly.
3. Never keep only **one** backup (BACKUP_A only) for life-or-death data. (ADVANCED adds BACKUP_B.)
4. Never store `restic-password.txt` on any device that is not CLEAN or full-disk encrypted.
5. Never assume backups work if you haven’t tested a restore **in the last month**.
At this point, Basic L4 is done: you have one WORK FOLDER, one encrypted backup to BACKUP_A, and a tested restore path.
Only do this when BASIC is solid.
Concept:
BACKUP_A stays at home.BACKUP_B lives somewhere else (trusted friend, office locker, safe box).Repeat the same steps as BACKUP_A:
BACKUP_B.BACKUP_B.restic-repo on it./media/<yourname>/BACKUP_B or /run/media/...).On paper:
BACKUP_B PATH: ____________________
restic-repo created on BACKUP_B.On CLEAN LAPTOP:
#!/bin/bash
# === L4 BACKUP TO BACKUP_B ===
export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_B/restic-repo"
# or /run/media/... if needed
restic snapshots >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Initializing restic repository on BACKUP_B..."
restic init
fi
echo "Starting backup of SovStack-Work to BACKUP_B..."
restic backup "$HOME/SovStack-Work"
echo "Backup to BACKUP_B completed."
backup_to_BACKUP_B.sh in your home folder.chmod +x ~/backup_to_BACKUP_B.sh
backup_to_BACKUP_B.sh created and made executable.BACKUP_B.~/backup_to_BACKUP_B.sh
BACKUP_B and move it to a different physical location than BACKUP_A.On paper:
BACKUP_B STORAGE LOCATION: _____________
age is for encrypting one big archive (e.g. all seed phrases, codex exports, ultra-sensitive docs) into a single .age file you can store anywhere.
On CLEAN LAPTOP:
sudo apt install age
age installed.On CLEAN LAPTOP:
age-keygen -o $HOME/Secrets/age.key
This prints something like:
# created: ...
# public key: age1something...
Copy the public key line and store:
AGE KEY.age.public key: age1... there.AGE KEY
File: /home/<yourname>/Secrets/age.key
Public key: age1____________________
age.key created.SovStack-Work/Ultra-Secret/ containing:
cd "$HOME/SovStack-Work"
tar -cvf Ultra-Secret.tar Ultra-Secret
This creates Ultra-Secret.tar inside SovStack-Work.
age1YOURPUBLICKEY... with your real public key):cd "$HOME/SovStack-Work"
age -r "age1YOURPUBLICKEY..." -o Ultra-Secret.tar.age Ultra-Secret.tar
ls Ultra-Secret.tar.age
Ultra-Secret.tar.age created.Now you can delete the unencrypted tarball:
rm Ultra-Secret.tar
Do not delete the original Ultra-Secret folder yet until you are sure everything works.
On CLEAN LAPTOP:
cd "$HOME/SovStack-Work"
age -d -i "$HOME/Secrets/age.key" Ultra-Secret.tar.age > Ultra-Secret-RESTORED.tar
Then:
tar -xvf Ultra-Secret-RESTORED.tar -C "$HOME/SovStack-Restore-Test"
Check inside SovStack-Restore-Test/Ultra-Secret that files look correct.
If all good, you know you can recover secrets from just:
Ultra-Secret.tar.age,age.key,You may then optionally:
Ultra-Secret folder (if you want only encrypted form), orage decryption tested and files verified.Use this only if you want SovStack-Work available on more than one CLEAN device.
sudo apt install syncthing
syncthing &
This starts Syncthing and opens a web UI (usually at http://127.0.0.1:8384 in browser).
In Syncthing UI:
CLEAN-LAPTOP./home/<yourname>/SovStack-Work.SovStack-Work.SovStack-Work folder added.(On iPhone, Syncthing support is messy; treat multi-device sync as laptop ↔ Android or laptop ↔ another laptop.)
On CLEAN PHONE (Android):
CLEAN-PHONE.SovStack-Work folder with CLEAN-PHONE./storage/emulated/0/SovStack-Work).SovStack-Work syncing between laptop and phone.SovStack-Work is synced between CLEAN devices.restic backups still run only from CLEAN LAPTOP.
On CLEAN LAPTOP:
SovStack-Work.BACKUP_A.~/backup_to_BACKUP_A.sh.SovStack-Work is in sync (Syncthing UI shows “Up to Date”).On CLEAN PHONE (if Syncthing):
BACKUP_A and BACKUP_B (one after the other).~/backup_to_BACKUP_A.sh.~/backup_to_BACKUP_B.sh.export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_A/restic-repo" # or /run/media/...
restic restore latest --target "$HOME/SovStack-Restore-Test"
Ultra-Secret.tar.age into SovStack-Restore-Test again, just to confirm.BACKUP_A and BACKUP_B are still stored in their intended places.Files inside SovStack-Work are gone from that device, but:
restic.BACKUP_A (or BACKUP_B).sudo apt install restic
# recreate or copy restic-password.txt into $HOME/Secrets if needed
Then:
export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_A/restic-repo"
restic restore latest --target "$HOME"
If you lost both the restic password and all devices with restic-password.txt and all copies in KeePass: backup is unrecoverable. That’s by design.
BACKUP_A with a new drive.BACKUP_A.BACKUP_B still has your old snapshots; you can restore from it.BACKUP_A.export RESTIC_PASSWORD_FILE="$HOME/Secrets/restic-password.txt"
export RESTIC_REPOSITORY="/media/$USER/BACKUP_A/restic-repo"
restic snapshots # pick a snapshot from before deletion
restic restore <SNAPSHOT-ID> --target "$HOME/SovStack-Restore-Test"
Copy the needed file from SovStack-Restore-Test back into SovStack-Work.
To confirm L4 File Spine is in place:
SovStack-Work on CLEAN LAPTOP.restic is installed and backup_to_BACKUP_A.sh works.BACKUP_A.BACKUP_A is plugged in weekly, script run, and then unplugged.BACKUP_B exists, lives in a different location, and has a working backup.age.key exists, Ultra-Secret.tar.age exists, and you have decrypted it once successfully.SovStack-Work between CLEAN LAPTOP and another CLEAN device.