Type something to search...
Revolt

Revolt

Revolt

801 102
01 May, 2024

What is Revolt ?

Revolt is one of the best ways to stay connected with your friends and community without sacrificing any usability. We focus only on the user, and you can be sure that your conversations are confidential and your data is secure.


Install Revolt

Please read the FAQ before running your own server and you may want to read about additional notes relating to third-party instances.

Install

Terminal window
git clone https://github.com/revoltchat/self-hosted revolt
cd revolt
cp .env.example .env
docker-compose up -d

Then simply go to http://local.revolt.chat

Setup

Prerequisites before continuing:

Clone this repository.

Terminal window
git clone https://github.com/revoltchat/self-hosted revolt
cd revolt

Copy the .env file and edit according to your needs.

Warning: The default configuration is intended for testing and only works on your local machine. If you want to deploy to a remote server, you need to edit the URLs in the .env file, please see the section below on configuring a custom domain.
If you get a network error when trying to log in, double check your configuration before opening an issue.

Terminal window
cp .env.example .env

Then bring up Revolt:

Terminal window
docker-compose up -d

Updating Revolt

Before updating Revolt, check the errata at the top for important information and check if there are any new required environment variables now present in the .env file.

To update Revolt, first pull the latest copy of this repository to ensure you have the latest tags:

Terminal window
git pull

Then pull all the latest images:

Terminal window
docker-compose pull

Now you can restart your services:

Terminal window
docker-compose up -d

Additional Notes

Custom domain

To configure a custom domain, you should be able to do a search and replace on local.revolt.chat in the .env file, like so:

.env
REVOLT_APP_URL=http://local.revolt.chat
REVOLT_APP_URL=http://my.domain

You will also want to change the protocols to enable HTTPS:

.env
REVOLT_APP_URL=http://my.domain
REVOLT_APP_URL=https://my.domain
REVOLT_EXTERNAL_WS_URL=ws://my.domain/ws
REVOLT_EXTERNAL_WS_URL=wss://my.domain/ws

In the case of HOSTNAME, you must strip the protocol prefix:

.env
HOSTNAME=https://my.domain
HOSTNAME=my.domain

Putting Revolt behind another reverse proxy (or on a non-standard port)

Override the port definitions on caddy:

docker-compose.yml
services:
caddy:
ports:
- "1234:80"

Warning This file is not Git ignored, it may be sufficient to use an override file but that will not remove port 80 / 443 allocations.

Update the hostname used by the web server:

.env
HOSTNAME=http://local.revolt.chat
HOSTNAME=:80

You can now reverse proxy to http://localhost:1234.

Expose database

You can insecurely expose the database by adding a port definition:

docker-compose.override.yml
services:
database:
ports:
- "27017:27017"

Mongo compatibility

Older processors may not support the latest MongoDB version, you may pin to MongoDB 4.4 as such:

docker-compose.override.yml
services:
database:
image: mongo:4.4

Making your instance invite-only

Enable invite-only mode by setting REVOLT_INVITE_ONLY in .env to 1

Create an invite:

Terminal window
# drop into mongo shell
docker-compose exec database mongosh
# create the invite
use revolt
db.invites.insertOne({ _id: "enter_an_invite_code_here" })