You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
revolt-docker/README.md

3.8 KiB

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 currently unavailable (#116).
  • 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
    

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

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

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" })