← Morok

Your own server in 10 minutes

Morok is federated: anyone can run their own relay and stay part of the network. Your server, your rules — messages pass through it and nowhere else.

Do you actually need this? If you just want private conversations, no — the default relay already encrypts everything end-to-end. You need your own server when you would rather not depend even on us: a journalist, an organisation, a community.

What you need

Installation

  1. Point your domain at the server

    In your registrar's panel, add an A record:

    relay.yourdomain.com  →  your.server.ip

    This is the one thing the script cannot do for you. Give it 5–10 minutes to propagate.

  2. Connect to the server

    PowerShell on Windows, a terminal on Mac or Linux:

    ssh root@your.server.ip
  3. Run the installer

    curl -fsSL https://morok.app/install.sh | sudo bash

    The script asks for your domain and an email (for the TLS certificate) — nothing else. It then installs the database, Redis and the server, configures nginx, obtains an HTTPS certificate, brings up a Tor address and enables autostart.

    If you distrust commands piped from the internet — and you should — open morok.app/install.sh in your browser first and read it: the script is served as plain text.

  4. Point the app at it

    In Morok on Windows or Android: Settings → Network → Your relay → paste https://relay.yourdomain.com.

    The app checks the server and shows its name and version before connecting. You can switch back to the default relay at any time in the same place.

Back up /home/morok/morok-relay/.env right away — it holds the key that is your relay's permanent identity in the federation. Lose it and other servers will stop recognising yours.

Worth knowing

Your account works everywhere

Your 24 words are your key across the whole network, not tied to any server. But a username is claimed separately on each relay, and messages sent to your previous server stay there. So switch deliberately, not just to see what happens.

Federating with other servers

For your users to reach people on other relays, two operators introduce their servers to each other. Each runs this on their own:

cd /home/morok/morok-relay
sudo -u morok .venv/bin/python -m morok_relay.scripts.federate relay.other-server.com

The command prints a fingerprint — eight groups of four digits. Compare it with the other operator over a separate channel (a call, Signal, anything but the relays themselves). If it matches:

sudo -u morok .venv/bin/python -m morok_relay.scripts.federate --trust relay.other-server.com

Verifying the fingerprint is not a formality. The handshake proves only that someone on the other side holds the key — not that it is the server you meant. It is the same principle as comparing safety numbers in a messenger.

To see all peers and their status: federate --list.

Maintenance

Updates and upkeep are automated. Useful commands:

systemctl status morok-relay
journalctl -u morok-relay -f

Re-running the installer is safe: it preserves your keys and database, updating only what needs updating.

If something goes wrong