• Stars
    star
    852
  • Rank 53,494 (Top 2 %)
  • Language
  • Created about 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Deploy Revolt using Docker.

Before you get started

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

Errata Notice

  • amd64 builds are only available for backend and bonfire images currently, more to come.
  • ❗ Important: if you deployed Revolt before 2022-10-29, you may have to tag the minio image release if it's configured in "fs" mode.
    image: minio/minio:RELEASE.2022-10-24T18-35-07Z
  • ❗ Important: if you deployed Revolt before 2023-04-21, you may have to flush your Redis database.
    # for stock Redis and older KeyDB images:
    docker-compose exec redis redis-cli
    # ...or for newer KeyDB images:
    docker-compose exec redis keydb-cli
    
    # then run:
    FLUSHDB

Quick Start

This repository provides reasonable defaults, so you can immediately get started with it on your local machine.

Warning This is not recommended for production usage - see below for the full guide.

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.

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.

cp .env.example .env

Then bring up Revolt:

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:

git pull

Then pull all the latest images:

docker-compose pull

Now you can restart your services:

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:

# drop into mongo shell
docker-compose exec database mongosh

# create the invite
use revolt
db.invites.insertOne({ _id: "enter_an_invite_code_here" })

More Repositories

1

revolt

Repository for miscellaneous repository management and discussions: https://github.com/revoltchat/revolt/discussions
2,027
star
2

backend

Monorepo for Revolt backend services.
Rust
1,103
star
3

revite

Revolt client built with Preact.
TypeScript
839
star
4

desktop

Revolt Desktop App
TypeScript
739
star
5

awesome-revolt

Collection of Revolt libraries, bots, clients and other cool stuff.
297
star
6

revolt.js

Modern Typescript library for interacting with Revolt.
TypeScript
220
star
7

frontend

Monorepo for Revolt's frontend.
TypeScript
141
star
8

rvmob

React Native Revolt client. Community-led project.
TypeScript
115
star
9

vortex

(in development) Pluggable WebRTC Voice Server
Rust
113
star
10

revolt.py

Python wrapper for https://revolt.chat
Python
87
star
11

revolt.chat

Revolt landing page.
TypeScript
64
star
12

autumn

Pluggable file server micro-service.
Rust
50
star
13

translations

i18n translations of Revolt
TypeScript
49
star
14

themes

Official and community-made Revolt themes.
CSS
45
star
15

january

Image proxy and embed generator.
Rust
42
star
16

mutiny

GTK4 Revolt Client. Community-led project.
JavaScript
40
star
17

api

Typescript typings and OpenAPI v3 generator for the Revolt API.
TypeScript
35
star
18

android

Revolt Android app and internal API library
Kotlin
30
star
19

documentation

Moved to https://github.com/revoltchat/wiki.
JavaScript
24
star
20

fdroid

F-droid Repository
CSS
17
star
21

android-twa

Android Trusted Web Activity - available on Google Play and F-droid
Java
16
star
22

ios

Revolt iOS App
Swift
14
star
23

.github

Shell
13
star
24

legal

Legal documents such as Privacy Policy and Terms of Service.
11
star
25

cli

(superseded by monorepo) CLI for working with the Revolt stack.
TypeScript
11
star
26

rfcs

RFCs for changes to Revolt
Python
10
star
27

bonfire

Edge notifications service.
Rust
10
star
28

components

Components library for Revolt.
TypeScript
8
star
29

quark

Crate containing common database abstractions for Revolt.
Rust
5
star
30

client

Deprecated. – Mirror of https://gitlab.insrt.uk/revolt/client
TypeScript
4
star
31

contributions

Open source contribution tracker
JavaScript
3
star
32

wiki

Open contribution documentation powered by mdbook
CSS
2
star
33

genemoji

Revolt Emoji Pack Structure Unification Toolchain
TypeScript
2
star
34

cla

Contributor License Agreement
1
star