Running it
Eight commands cover everything. They work the same whether you installed with Docker or as systemd services.
The commands
| Command | What it does |
|---|---|
sovrgnnet status | Is everything healthy? |
sovrgnnet url | What address do people use? |
sovrgnnet start | Turn it on |
sovrgnnet stop | Turn it off — your data stays |
sovrgnnet restart | Off and on again |
sovrgnnet logs | Watch what it's doing |
sovrgnnet backup | Save a copy of everything |
sovrgnnet verify | Check a backup without restoring it |
sovrgnnet restore | Put a backup back |
sovrgnnet update | Get 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.
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
| Role | Can |
|---|---|
| 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.