Revolt — Self-Hosted, Open-Source

Revolt is a user-first chat platform built with modern web technologies.

License: AGPL-3.0. Built with: JavaScript, Shell. Website: https://revolt.chat/. Source: https://github.com/revoltchat/self-hosted.

Installation

### Securing your server ```bash # update the system apt-get update && apt-get upgrade -y # configure firewall ufw allow ssh ufw allow http ufw allow https ufw allow 7881/tcp ufw allow 50000:50100/udp ufw default deny ufw enable # if you have configured an SSH key, disable password authentication: sudo sed -E -i 's|^#?(PasswordAuthentication)\s.*|\1 no|' /etc/ssh/sshd_config if ! grep '^PasswordAuthentication\s' /etc/ssh/sshd_config; then echo 'PasswordAuthentication no' |sudo tee -a /etc/ssh/sshd_config; fi # reboot to apply changes reboot ``` > [!NOTE] > If you are using another cloud provider, or you are doing this on a physical machine, you will need to forward ports 80, 443, 7881 and 50000-50100/udp. ### Configuring your domain Your system is now ready to proceed with installation, but before we continue, you should configure your domain. ![Cloudflare DNS configuration](.github/guide/cloudflare-dns.webp) Your domain (or a subdomain) should point to the server's IP (A and AAAA records) or CNAME to the hostname provided. ### Install required dependencies ```bash # ensure Git and Docker are installed apt-get update apt-get install ca-certificates curl git micro install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null apt-get update apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` ## Configuration Now, we can pull in the configuration for Stoat: ```bash git clone https://github.com/stoatchat/self-hosted stoat cd stoat ``` Generate a configuration file by running: ```bash chmod +x ./generate_config.sh ./generate_config.sh your.domain ``` The generate_config.sh script will create the neccessary secrets required to create a Stoat instance, and the secrets will be inserted into a file named `secrets.env`. You should back up this file, as losing it may result in you losing access to all files on your Stoat instance. You can find [more options here](https://github.com/stoatchat/stoatchat/blob/main/crates/core/config/Revolt.toml), some noteworthy configuration options: - Email verification - Captcha - A custom S3 server - iOS & Android notifications (Requires Apple/Google developer accounts) If you'd like to edit the configuration, just run: ```bash micro Revolt.toml ``` Finally, we can start up Stoat. First, run it in the foreground with: ```bash docker compose up ``` If it runs without any critical errors, you can stop it with <kbd>Ctrl</kbd> + <kbd>C</kbd> and run it detached (in the background) by appending `-d`. ```bash docker compose up -d ``` ## Updating Before updating, ensure you consult the notices at the top of this README, **as well as** [the notices](#notices) at the bottom, to check if there are any important changes to be aware of. Pull the latest version of this repository: ```bash git pull ``` Ensure that your secrets in `Revolt.toml` and `secrets.env` match. If your secrets don't match, copy the secrets from `Revolt.toml` to `secrets.env`. The following step will **overwrite** your existing configuration. If you have custom configuration settings you will need to copy them over afterwards. Alternatively, you can forgo running the configurator, but you may miss out on new features. Run the configuration script with your domain and pass the overwrite flag: ```bash ./generate_config.sh --overwrite your.domain ``` Then pull all the latest images: ```bash docker compose pull ``` Then restart the services:

Why self-host Revolt

Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.

Hardware notes

To get started, find yourself a suitable server to deploy onto, we recommend starting with at least 2 vCPUs and 2 GB of memory.

Where to go from here

Last verified: 2026-04-28