a backup and server orchestrator
Go to file
Peter Li 406d7d5383 saving 2026-02-07 23:32:37 -08:00
cmd/satoru saving 2026-02-07 23:32:37 -08:00
internal saving 2026-02-07 23:16:18 -08:00
plan saving 2026-02-07 19:51:17 -08:00
web/static backup utility working 2026-02-07 21:26:05 -08:00
.gitignore backup jobs work now with sql dumps too 2026-02-07 21:22:01 -08:00
AGENTS.md configurable b2 2026-02-07 22:25:40 -08:00
README.md saving 2026-02-07 22:34:04 -08:00
go.mod saving 2026-02-07 20:51:36 -08:00
go.sum saving 2026-02-07 20:51:36 -08:00
launchdev.sh saving 2026-02-07 19:51:17 -08:00

README.md

Satoru Quick Start

Satoru is a web app that pulls backups from Linux hosts over SSH, stores them in a local restic repo, and can sync to Backblaze B2.

1. Prerequisites

Install these tools on the Satoru host:

  • go (1.25+)
  • restic
  • rsync
  • ssh
  • b2 (optional, needed for B2 features)

2. Run Satoru

cd /Users/peterli/git/satoru
go run ./cmd/satoru

Open:

On first boot, Satoru will:

  • create data/satoru.conf if missing
  • auto-generate RESTIC_PASSWORD in that config if no explicit password is set

Edit:

  • /Users/peterli/git/satoru/data/satoru.conf

Useful keys:

RESTIC_PASSWORD=your-local-restic-password
RESTIC_PASSWORD2=your-b2-restic-password
B2_APPLICATION_ID=your-b2-key-id
B2_APPLICATION_KEY=your-b2-application-key
B2_EXECUTABLE_PATH=/opt/homebrew/bin/b2
SATORU_RESTIC_B2_REPOSITORY=b2:your-bucket:satoru-repo

Then restart Satoru.

4. First Login

The first account you create is admin.

  • Sign up with username + password
  • Sign in

5. Add a Site

In the dashboard:

  1. Add SSH User, Server, and Port
  2. Add one or more directory/file paths
  3. Add optional SQLite paths
  4. Save

You can also add MySQL dump operations per site (host/user/db/password).

6. Run a Backup

On a site card, click:

  • Run backup

Watch progress in:

  • sidebar health
  • active site logs
  • per-target status

7. Sync to B2

After local backups exist:

  • click Sync to B2 on the site

If B2 repo is not initialized yet, use:

  • Initialize B2 Repo button in runtime checks section

Notes

  • Site selection is remembered in the browser.
  • Backups are tagged per site in one local restic repo.
  • If a job gets stuck, use Cancel and re-run.