Skip to content

Running it

Eight commands cover everything. They work the same whether you installed with Docker or as systemd services.

The commands

CommandWhat it does
sovrgnnet statusIs everything healthy?
sovrgnnet urlWhat address do people use?
sovrgnnet startTurn it on
sovrgnnet stopTurn it off — your data stays
sovrgnnet restartOff and on again
sovrgnnet logsWatch what it's doing
sovrgnnet backupSave a copy of everything
sovrgnnet verifyCheck a backup without restoring it
sovrgnnet restorePut a backup back
sovrgnnet updateGet the latest version

On the Docker install, run them from inside the repository folder as ./sovrgnnet. On the LXC install they're on your PATH from anywhere.

Backups

sovrgnnet backup writes a single archive into backups/ containing: a dump of the app's database (accounts, communities, channels, messages), a dump of the homeserver's database (rooms and events), the homeserver's signing key, the actual bytes of every shared file, and your settings — plus a manifest naming what the backup is and a checksum for every part.

Copy it somewhere else A backup that lives on the machine that fails isn't a backup. Put it on a USB drive, another computer, a different Proxmox node — anywhere but there. The archive contains your secrets; treat it like a password file.

The signing key in there is small and matters more than its size suggests: restore everything else without it and your instance is a different server to everyone it has federated with.

Nightly, at 3am:

crontab -e
# then add:
0 3 * * * cd /path/to/sovrgnnet && ./sovrgnnet backup >/dev/null 2>&1

Checking a backup

sovrgnnet verify answers one question — if I restore this onto this machine, do I get a working instance? — and changes nothing.

sovrgnnet verify

It refuses a corrupt archive, one missing its database, one taken by a newer version than you're running, and one from a different Matrix server name. That last check is the valuable one: Matrix IDs embed the server name permanently, so restoring across a mismatch detaches every room and account from its history — silently. The instance starts, looks fine, and is wrong.

Warnings don't block a restore; they tell you what you'll lose. No signing key, no chat history, no shared files — each is survivable and each is stated.

Restoring

On the same machine or a brand new one, install SOVRGNnet as normal, put your backup file in backups/, then:

sovrgnnet restore

It verifies the backup before touching anything, tells you exactly what's about to be overwritten, and makes you type restore to continue. Docker and native installs both work, and a backup taken on one restores onto the other. Test it before you need it — a backup you've never restored is a hypothesis, not a backup.

Moving to another machine

Take a backup, copy it across, install SOVRGNnet on the new box, and restore. Your settings carry MATRIX_SERVER_NAME with them, which is the one thing that has to match — so restoring the settings usually satisfies the requirement by itself.

The full backup and migration guide →

Updating

sovrgnnet update

Pulls the latest code, rebuilds, and restarts. Database changes apply themselves — the app brings its own schema up to date on every boot, so there's never a migration command to remember.

Take a backup first if the instance holds anything you'd miss. It's one command and it costs a minute.

Adding people

Invite links are the way in. A server owner or admin clicks the invite icon and gets a link that works for anyone, including on private servers. Public servers also show up under Discover.

Roles

RoleCan
Owner Everything, including handing out admin. Can't be removed or demoted by anyone.
Admin Create channels, create invite links, plus everything a moderator can do.
Moderator Delete anyone's messages, remove and ban members.
Member Read, post, edit and delete their own messages, react, share files.

Two rules the server enforces regardless of what the interface shows: you can only act on someone ranked below you, and you can't grant a role at or above your own. That's what stops two admins removing each other, or a moderator demoting whoever promoted them.

Moderators can delete messages but never edit them. Rewriting what somebody said, under their name, isn't a moderation power worth having.

Removing someone

Remove from server takes them out; they can return through an invite or public discovery. Ban takes them out and keeps them out — recorded both in the app and on the Matrix rooms, so neither route back in works.

When something is red

sovrgnnet status     # which piece is unhappy?
sovrgnnet logs       # what is it saying?

The app keeps restarting

Almost always the database. The app applies its own migrations at startup and exits deliberately if it can't reach PostgreSQL, so a restart loop usually means the database didn't come up. Check the database service first, then the logs.

Messages send but nobody receives them

That's the Matrix homeserver. On the LXC install: journalctl -u dendrite -n 50. On Docker: ./sovrgnnet logs matrix.

Uploads fail

The IPFS node. Files cap at 50 MB per upload. After an unclean shutdown IPFS sometimes leaves a stale lock — remove repo.lock from its data directory and restart.

Starting completely over

On the Docker install, docker compose down -v erases everything — all accounts, all messages, all files — and then ./install.sh sets it up fresh. There is no undo. Back up first.