Moving & backups

SoundChex can copy itself — catalogue, media, profiles — to another machine over a tailnet or a forwarded address, with approval required on both ends. And because the database is one SQLite file, everyday backups are refreshingly boring.

Backups

  • The catalogue is a single file: database/database.sqlite. Copy it and you have the titles, artists, profiles, history and resume points.
  • Artwork and uploads live under storage/app/public/.
  • Your media files are wherever your watch folders are — SoundChex never moves them out from under you, so back them up the way you already do.
  • Scheduled backups run under the scheduler (Background workers).

Moving to a new machine — the built-in transfer

Both machines run the same SoundChex code. The one being copied approves; the one doing the copying asks and pulls.

Before you start

  • Both machines: SoundChex installed and migrated (php artisan migrate).
  • Both machines: php artisan queue:work running. This is the one people forget — without it a transfer is approved and then sits doing nothing.
  • Receiver: enough free disk for what's coming, and php artisan storage:link done, or artwork 404s afterwards.
  • Reachable: the receiver must be able to open the source in a browser — try https://<source-address>/soundchex.json first. If that doesn't answer, nothing below will work.

1. On the receiving machine — ask

Admin → Server transfer. Fill in the source's address, choose what to bring, enter your password, press Ask that server, and note the four-digit code it shows.

WhatNotes
The catalogueTitles, artists, albums, artwork. Minutes.
The media filesThe actual music, films and books. Hours.
Profiles and historyComes with the catalogue — the database holds both.
Settings and keysUsually leave off — the new machine wants its own.

Nothing has moved yet. Nothing can move until the next step.

2. On the source machine — approve

The request appears in Admin → Server transfer with the address it came from, what the machine calls itself, what it's asking for, and a four-digit code. Check the code matches the one on the other screen — that's how you know this is the request you just started and not someone else's. Type your password and press Approve.

3. Back on the receiver — start

Press Check for approval. The transfer starts and runs in the background:

  • Files already present with the right content are skipped.
  • Each file is verified after it arrives; anything corrupt is deleted and recorded rather than kept.
  • Pause and resume whenever — it picks up where it stopped, not from the beginning.
  • It can be stopped from either end at any moment; every request the receiver makes re-checks that it's still allowed.

Progress shows files done, gigabytes moved, and anything that failed.

After the move

If the old machine is retiring, update anything that pointed at it — tunnels and tailnet names, APP_URL, and the devices' saved connections. Scan once on the new machine to confirm the watch folders resolve.