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 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 four things: a dump of the database (accounts, servers, channels, messages), the Matrix homeserver's own store, the actual bytes of every shared file, and your settings.

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.

Nightly, at 3am:

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

Restoring

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

./scripts/restore.sh

It lists what it found, tells you exactly what's about to be overwritten, and makes you type restore before touching anything. Test it before you need it — a backup you've never restored is a hypothesis, not a backup.

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 conduit -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.