Giter Club home page Giter Club logo

self-hosted's Introduction

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
  • Important: configuration strategy has changed but this guide is out of date TL;DR mount Revolt.toml at /Revolt.toml for both api and events. Proper documentation will follow in due time.

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

self-hosted's People

Contributors

4444dogs avatar codeurimpulsif avatar epiclper avatar insertish avatar jan0660 avatar r-o-b-o-t-o avatar rexogamer avatar shyim avatar sussycatgirl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

self-hosted's Issues

How to ban someone on the network?

Hello,

I don't know if I should put this here or in a request but I would like to know how to ban a user from our Revolt server

(for the moment there is nobody who has violated the conditions, the thing is that we try to keep a safe place for everybody)

So I would like to know how it works on this exactly

Failed to load resource: the server responded with a status of 400 ()

Hey everyone, I've see no mention of it here, but I've noticed that I can't add a banner to any given Revolt server. Doing so results in a popup stating "An error occurred! See console", and the console reveals the following:
Failed to load resource: the server responded with a status of 400 () [https://vite.natrana.com/servers/01G2FJ6NJPCFTCGB1JGCG1WX77]

Is this a known issue? Any suggestions?

Thank you!

API URL settings being ignored in .env file.

Description :
Changing the URL/port to the API server in the .env file does not seem to do anything. After restarting the host machine and the docker, the changes are not honored and instead revolt wants to connect to the API server at example.com:8000.

This is especially apparent when you attempt to use a HTTPS reverse proxy using caddy or nginx, as you can't really get around this.
2021-12-21 08_23_19-Untitled - Paint
2021-12-21 08_43_29-Untitled - Paint

Voso configuration

How do I add vortex to compose?

I tried adding this but I am getting {error: 1011, message: 'Internal Server Error'} in the browser console when I try to call someone

  voso:
    image: revoltchat/vortex:0.3.0-alpha.1
    ports:
      - "8080:8080"
      - "10000-10100/tcp"
      - "10000-10100/udp"
    environment:
      - WS_URL=ws://<my_pc_ip>:8080
      - MANAGE_TOKEN=CHANGEME
      - RTC_IPS=<my_pc_ip>
      - RTC_MIN_PORT=10000
      - RTC_MAX_PORT=10100
    restart: always

Default Setup API Errors (Needs documentation)

git clone https://github.com/revoltchat/self-hosted/issues/new
cp .env.example .env
docker-compose up -d

(Note I do not have a local gui on the server and dns is not setup correctly), but from the same subnet, navigating to it by :5000 loads the revolt login splash screen, but the api is dead.

Resolved by editing /etc/hosts and server hostname. If the server name convention is not explicitly set to match .env settings, revolt does not like this.

Blank screen on Quick Start

So while running the Quick Start portion of the self-hosted guide it works fine, docker does its thing, no errors whatsoever.

When I try visit http://local.revolt.chat:5000/ I get a blank grey screen

In the console, it shows the following

image

--

In the Docker logs it seems to be working fine

image

I have made no changes to the .env file whatsoever, just cloned this repo and tried to run it, any help would be appreciated.

unknown error bug:

What happened?

Hello, it is impossible for me to install self-hosted revolt I still have an error when registering? Any idea?

image

config not honoring WS port

Description:
Changing the port for the websocket in .env file does not honor the new port.
Changing WS port to 9001 does not start the websocket on port 9001, but instead 9000.

Specs:
Centos 7 64bit

Pics:
Revolt attempts to request WS at correct addr/por
image

bug: Unable to verify the email address of new accounts

What happened?

Since I updated Revolt with the latest update and then changed my domain name (by changing it in the config file), it is impossible to check the emails of the new accounts. I have temporarily disabled this feature until a fix is found here or by me and my staff
image (1)

Stack Network error

What happened?

Hello, I've managed to build a stack based on the self hosted revolt chat docker (https://github.com/revoltchat/self-hosted)
It's working... but as I'm already using portainer and traefik the ports are not working. - Getting Network Error when I try to subscribe -

Any idea on how to fix that ? And maybe it can help others too :)
I mean I already have a: portainer + swarmpit + traefik + gitea + drone + taiga
When I try to subscribe it's says Network error.

Thanks

version: '3.8'

x-default: &defaults
environment:

  • MONGODB=mongodb://database
  • REDIS_URI=redis://redis/
  • REVOLT_APP_URL=http://revolt.PRIVATE
  • REVOLT_PUBLIC_URL=http://revolt.PRIVATE
  • VITE_API_URL=http://revolt.PRIVATE
  • REVOLT_EXTERNAL_WS_URL=ws://revolt.PRIVATE
  • AUTUMN_PUBLIC_URL=http://revolt.PRIVATE
  • JANUARY_PUBLIC_URL=http://revolt.PRIVATE
  • REVOLT_UNSAFE_NO_CAPTCHA=1
  • REVOLT_UNSAFE_NO_EMAIL=1
  • REVOLT_INVITE_ONLY=0
  • REVOLT_MAX_GROUP_SIZE=150
  • REVOLT_VAPID_PRIVATE_KEY=LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJSUWpyTWxLRnBiVWhsUHpUbERvcEliYk1yeVNrNXpKYzVYVzIxSjJDS3hvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWnkrQkg2TGJQZ2hEa3pEempXOG0rUXVPM3pCajRXT1phdkR6ZU00c0pqbmFwd1psTFE0WAp1ZDh2TzVodU94QWhMQlU3WWRldVovWHlBdFpWZmNyQi9BPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
  • REVOLT_VAPID_PUBLIC_KEY=BGcvgR-i2z4IQ5Mw841vJvkLjt8wY-FjmWrw83jOLCY52qcGZS0OF7nfLzuYbjsQISwVO2HXrmf18gLWVX3Kwfw=
  • AUTUMN_S3_REGION=minio
  • AUTUMN_S3_ENDPOINT=http://minio:9000
  • MINIO_ROOT_USER=minioautumn
  • MINIO_ROOT_PASSWORD=minioautumn
  • AWS_ACCESS_KEY_ID=minioautumn
  • AWS_SECRET_ACCESS_KEY=minioautumn

networks:
traefik-public:
external: true

services:

MongoDB database

database:
<<: *defaults
image: mongo
volumes:
- revoltdb:/data/db
networks:
- traefik-public

Redis server

redis:
<<: *defaults
image: eqalpha/keydb
networks:
- traefik-public

API server (delta)

api:
<<: *defaults
image: ghcr.io/revoltchat/server:20220715-1
depends_on:
- database
- redis
ports:
- "8000:8000"
networks:
- traefik-public

Events service (quark)

events:
<<: *defaults
image: ghcr.io/revoltchat/bonfire:20220715-1
depends_on:
- database
- redis
ports:
- "9000:9000"
networks:
- traefik-public

Web App (revite)

web:
<<: *defaults
image: ghcr.io/revoltchat/client:master
ports:
- "5000:5000"
networks:
- traefik-public
deploy:
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.docker.network=traefik-public
- traefik.constraint-label=traefik-public
- traefik.http.routers.revolt-http.rule=Host(revolt.PRIVATE)
- traefik.http.routers.revolt-http.entrypoints=http
- traefik.http.routers.revolt-http.middlewares=https-redirect
- traefik.http.routers.revolt-https.rule=Host(revolt.PRIVATE)
- traefik.http.routers.revolt-https.entrypoints=https
- traefik.http.routers.revolt-https.tls=true
- traefik.http.routers.revolt-https.tls.certresolver=le
- traefik.http.services.revolt.loadbalancer.server.port=5000

S3-compatible storage server

minio:
<<: *defaults
image: minio/minio
command: server /data
volumes:
- revoltminio:/data
ports:
- "10000:9000"
networks:
- traefik-public

Create buckets for minio.

createbuckets:
<<: *defaults
image: minio/mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
while ! curl -s --output /dev/null --connect-timeout 1 http://minio:9000; do echo 'Waiting minio...' && sleep 0.1; done;
/usr/bin/mc alias set minio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD;
/usr/bin/mc mb minio/attachments;
/usr/bin/mc mb minio/avatars;
/usr/bin/mc mb minio/backgrounds;
/usr/bin/mc mb minio/icons;
/usr/bin/mc mb minio/banners;
/usr/bin/mc mb minio/emojis;
exit 0;
"

File server (autumn)

autumn:
<<: *defaults
image: ghcr.io/revoltchat/autumn:1.1.5
depends_on:
- database
- createbuckets
environment:
- AUTUMN_MONGO_URI=mongodb://database
ports:
- "3000:3000"
networks:
- traefik-public

Metadata and image proxy (january)

january:
<<: *defaults
image: ghcr.io/revoltchat/january:master
ports:
- "7000:7000"
networks:
- traefik-public

volumes:
revoltdb:
revoltminio:

S3Error

Hi,

Autumn not have local storage and when you try to up file you have S3Error.
Have any way for force local storage or is a issue or is not fully implemented now ?

Best Regards

Make GZIP/BROTLI compression of 'sirv' configurable

Hi,
after trying to initially setup a Revolt instance I kind of failed to realize that my reverse proxy (traefik) has issues with the pre-configured gzip and brotli compression of the sirv server used by the "web" container.

I had to go into the container and modify the package.json script to

        "start:inject": "node scripts/inject.js && sirv dist_injected --cors --single --host -G false -B false"        

as the default setting of sirv is to activate GZip and Brotli compression (i.e. adding -G false and -B false)

    -G, --gzip         Send precompiled "*.gz" files when "gzip" is supported  (default true)                                                                                 
    -B, --brotli       Send precompiled "*.br" files when "brotli" is supported  (default true)        

So adding a setting in the .env file would enable us to disable the gzip and brotli compression and have revolt usable via a reverse proxy.

Maybe I overlooked something in the documentation?

Thanks!

Change File upload size limit

this is less of an issue and more of a question that I can't find the answer to. My main reason for wanting to self-host revolt is to provide an experience similar to discord without an upload limit. I've successfully gotten it running locally but I cannot find where in the configuration files I can change the max upload size.

Disabling email Throws Network Error

Steps to reproduce, I basically just pulled the repo and set non-default .env settings to

REVOLT_UNSAFE_NO_EMAIL=1
REVOLT_INVITE_ONLY=1

I've made no other changes to the default setup to keep this sane.

Ran docker-compose up and everything comes up nice and neat (I did not set smtp settings), but trying to create a new account fails.

FAILED TO REGISTER! · NETWORK ERROR.

console errors

RevoltClient.tsx:176 Failed to connect to API server.
(anonymous) @ RevoltClient.tsx:176
local.revolt.chat:8000/:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
local.revolt.chat:8000/auth/account/create:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
xhr.js:178 POST http://local.revolt.chat:8000/auth/account/create net::ERR_CONNECTION_REFUSED

Setup Nginx reverse proxy

Did anyone sucessfully got revolt working behind nginx reverse proxy?
I tried a couple of things, but it exceeds my knowledge.

Would appreatiate a working config.

S3 ERROR

I'm using the latest compose,and when i upload new avatars,it still have s3 error
S3 buckets setting:

S3 Region

AUTUMN_S3_REGION=minio

S3 Endpoint

AUTUMN_S3_ENDPOINT=http://minio:9000

MinIO Root User

MINIO_ROOT_USER=minioautumn

MinIO Root Password

MINIO_ROOT_PASSWORD=minioautumn

Local offline dev spinup not working

What do you want to see?

Hello all,
Trying to setup revolt chat for local development on Ubuntu, it installs correctly, both on the dev version of revolt chat and the self-hosted version, however as soon as I go offline, it says an error has occurred.

I changed the ip's in the .env file for 127.0.0.1 and also tried local host, still no success.

Is there a way to develop offline? On a local spin up?

Note: I installed and compiled everything online then switched to offline to test.

Cannot send mail to user for activating account

[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users/relationships,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users//dm,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /users//block,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /users//block,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users//mutual,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /users//friend,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users//profile,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /users//friend,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /users/<_ignore_id>/username,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users//relationship,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /users//default_avatar,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /onboard/hello,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /servers/create,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /onboard/complete,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /servers/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /servers/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /servers/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /invites/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /invites/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /invites/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /servers//ack,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /servers//bans,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /servers//roles,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /servers//members,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /servers//invites,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /servers//channels,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /servers//bans/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /servers//bans/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /servers//roles/<role_id>,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /servers//roles/<role_id>,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /servers//members/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /servers//members/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /servers//members/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /servers//permissions/default,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /servers//permissions/<role_id> [2],
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /channels/create,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /channels/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /channels/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /channels/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /channels//search,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /channels//members,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /channels//invites,
[2022-04-06T09:57:42Z WARN rocket::rocket] (message_send) POST /channels//messages,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /channels//messages?<options..>,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /channels//join_call,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /channels//ack/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) POST /channels//messages/stale,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) GET /channels//messages/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PATCH /channels//messages/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /channels//messages/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /channels//permissions/ [2],
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /channels//recipients/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) DELETE /channels//recipients/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (req) PUT /channels//permissions/default,
[2022-04-06T09:57:42Z WARN rocket::rocket] (fetch_account) GET /auth/account/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (fetch_all) GET /auth/session/all,
[2022-04-06T09:57:42Z WARN rocket::rocket] (revoke_all) DELETE /auth/session/all?<revoke_self>,
[2022-04-06T09:57:42Z WARN rocket::rocket] (revoke) DELETE /auth/session/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (edit) PATCH /auth/session/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (login) POST /auth/session/login,
[2022-04-06T09:57:42Z WARN rocket::rocket] (create_account) POST /auth/account/create,
[2022-04-06T09:57:42Z WARN rocket::rocket] (logout) POST /auth/session/logout,
[2022-04-06T09:57:42Z WARN rocket::rocket] (resend_verification) POST /auth/account/reverify,
[2022-04-06T09:57:42Z WARN rocket::rocket] (password_reset) PATCH /auth/account/reset_password,
[2022-04-06T09:57:42Z WARN rocket::rocket] (send_password_reset) POST /auth/account/reset_password,
[2022-04-06T09:57:42Z WARN rocket::rocket] (change_email) PATCH /auth/account/change/email,
[2022-04-06T09:57:42Z WARN rocket::rocket] (verify_email) POST /auth/account/verify/,
[2022-04-06T09:57:42Z WARN rocket::rocket] (change_password) PATCH /auth/account/change/password,
[2022-04-06T09:57:42Z WARN rocket::fairing::fairings] 📡 Fairings:,
[2022-04-06T09:57:42Z WARN rocket::fairing::fairings] Shield (liftoff, response, singleton),
[2022-04-06T09:57:42Z WARN rocket::fairing::fairings] CORS (ignite, request, response),
[2022-04-06T09:57:42Z INFO rocket::shield::shield] 🛡️ Shield:,
[2022-04-06T09:57:42Z INFO rocket::shield::shield] X-Content-Type-Options: nosniff,
[2022-04-06T09:57:42Z INFO rocket::shield::shield] X-Frame-Options: SAMEORIGIN,
[2022-04-06T09:57:42Z INFO rocket::shield::shield] Permissions-Policy: interest-cohort=(),
[2022-04-06T09:57:42Z WARN rocket::rocket] 🚀 Rocket has launched from http://0.0.0.0:8000,
[2022-04-06T09:57:56Z INFO rocket::server] GET / application/json:,
[2022-04-06T09:57:56Z INFO rocket::server] Matched: (root) GET /,
[2022-04-06T09:57:56Z INFO rocket::server] Outcome: Success,
[2022-04-06T09:57:56Z INFO rocket::server] Response succeeded.,
[2022-04-06T09:58:06Z INFO rocket::server] OPTIONS /auth/account/create:,
[2022-04-06T09:58:06Z INFO rocket::server] Matched: OPTIONS /<catch_all_options_route..> [9223372036854775807],
[2022-04-06T09:58:06Z INFO rocket_cors] "Catch all" handling of CORS OPTIONS preflight for request OPTIONS /auth/account/create,
[2022-04-06T09:58:06Z INFO rocket::server] Outcome: Success,
[2022-04-06T09:58:06Z INFO rocket::server] Response succeeded.,
[2022-04-06T09:58:06Z INFO rocket::server] POST /auth/account/create application/json:,
[2022-04-06T09:58:06Z INFO rocket::server] Matched: (create_account) POST /auth/account/create,
[2022-04-06T09:58:06Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:06Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:07Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:09Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:12Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:18Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:58:31Z ERROR r2d2] Connection error: Could not connect,
Failed to send email to [email protected],
lettre error: internal client error: timed out waiting for connection: Connection error: Could not connect,
[2022-04-06T09:58:36Z INFO rocket::server] Outcome: Success,
[2022-04-06T09:58:36Z INFO rocket::server] Response succeeded.,
[2022-04-06T09:58:46Z ERROR r2d2] Connection error: Could not connect,
[2022-04-06T09:59:01Z ERROR r2d2] Connection error: Could not connect,

Unable to join voice channel

Managed to get revolt running using docker swarm with traefik as the reverse proxy. However I am still facing an issue with being unable to join voice channels. The API server seems to be getting the request to join and says the request is successful but the browser is showing a 400 error for a request to the API server.

[2022-01-10T21:34:16Z INFO  rocket::server] POST /channels/01FQF3P68N2CNBP1QAH7TZ0P4W/join_call:
[2022-01-10T21:34:16Z INFO  rocket::server] Matched: (req) POST /channels/<target>/join_call
[2022-01-10T21:34:16Z INFO  rocket::server] Outcome: Success
[2022-01-10T21:34:16Z INFO  rocket::server] Response succeeded.
xhr.js:187 POST https://<removed real URL>/channels/01FQF3P68N2CNBP1QAH7TZ0P4W/join_call 400
Error: Request failed with status code 400
    at mp (createError.js:16)
    at T2 (settle.js:17)
    at XMLHttpRequest.f (xhr.js:54)

"Discover Revolt" section's iframe won't load, and points to local.revolt.chat:3000

Hey everyone,

I've successfully deployed Revolt (via Docker-Compose) behind a reverse proxy with SSL. Each public subdomain points to the reverse proxy that uses the corresponding SSL certificate. From there, internally, the reverse proxy points to insecure http Revolt endpoints. To achieve this, I used the following environment variables in my .env file:

# URL to where the Revolt app is publicly accessible
REVOLT_APP_URL=https://revolt.mydomain.com:443

# URL to where the API is publicly accessible
REVOLT_PUBLIC_URL=https://revolt-vite.mydomain.com:443
VITE_API_URL=https://revolt-vite.mydomain.com:443

# URL to where the WebSocket server is publicly accessible
REVOLT_EXTERNAL_WS_URL=wss://revolt-socket.mydomain.com:443

# URL to where Autumn is publicly available
AUTUMN_PUBLIC_URL=https://revolt-autumn.mydomain.com:443

# URL to where January is publicly available
JANUARY_PUBLIC_URL=https://revolt-january.mydomain.com:443

# URL to where Vortex is publicly available
#VOSO_PUBLIC_URL=https://voso.revolt.chat     **I left Vortex commented out**

All seems to work perfectly. However, whenever I click on the "Discover Revolt" section, the iframe will not load and it will spit out the following error in the console: Refused to frame 'https://rvlt.gg/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https://*.revolt.chat http://local.revolt.chat:3000"

Why is it pointing to local.revolt.chat when I have already set the .env to point to https://revolt-autumn.mydomain.com:443? Is this rvlt.gg's content-security-policy blocking my domain from accessing their content, or my own content-security-policy that's misconfigured? I can't tell.

If revolt is blocking other revolt instances from accessing https://rvlt.gg/, is there a way to hide the "Discover Revolt" section entirely? Will there be a local implementation offered instead in the future?

Thank you!

feature request: 32bit support

What do you want to see?

any chance we can get self-hosting to work on i386 processors?
I have a low powered atom processor that is 32bit that i would like to use for hosting a revolt server

thanks

setup https on Revolt (with Let's encrypt and Nginx)

Hello,

I would like to know if it is possible to activate an https (for Revolt) with let's encrypt and Nginx.

I can only put the port 5000 (which works with Nginx to display the login page)

To connect (as a request is sent to port 8000) I can't get it to https with let's encrypt. I would like to know if it is possible to switch the port to https

Thanks in advance for your answers

Invite

Hello, how can i create an invite?

Error on docker-compose [Linux]

Although the error seems to cause a bunch more exceptions, I only included the first one.
This happens when running docker-compose up -d.
I'm using Manjaro Linux.

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.9/http/client.py", line 1257, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1303, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1252, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.9/http/client.py", line 1012, in _send_output
    self.send(msg)
  File "/usr/lib/python3.9/http/client.py", line 952, in send
    self.connect()
  File "/usr/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

Need help deploying behing proxy

Hello everyone,

Thanks for this project it's awesome and I hope it's gonna grow big.

I'm trying to deploy Revolt on my personal server. To do so I have deployed the Docker containers using the docker-compose on this project.

I'm trying to setup all of this behind a Nginx proxy (on my server domain, with HTTPS) but can't get it to work. For now I have a Nginx proxy that proxies https://revolt.mydomain.com/ to http://local.revolt.chat:5000 but when I go to the Revolt app page, I have network errors since the client is trying to reach the backend on http://local.revolt.chat:8000.

  • Am I on the right track?
  • How can I properly proxy everything (client, backend, other services, etc.)?
  • Is it safe to expose all of these services?

Here is my .env file:

# URL to where the Revolt app is publicly accessible
REVOLT_APP_URL=http://local.revolt.chat:5000

# URL to where the API is publicly accessible
REVOLT_PUBLIC_URL=http://local.revolt.chat:8000
VITE_API_URL=http://local.revolt.chat:8000

# URL to where the WebSocket server is publicly accessible
REVOLT_EXTERNAL_WS_URL=ws://local.revolt.chat:9000

# URL to where Autumn is publicly available
AUTUMN_PUBLIC_URL=http://local.revolt.chat:3000

# URL to where January is publicly available
JANUARY_PUBLIC_URL=http://local.revolt.chat:7000

# URL to where Vortex is publicly available
# VOSO_PUBLIC_URL=https://voso.revolt.chat


##
## hCaptcha Settings
##

# If you are sure that you don't want to use hCaptcha, set to 1.
REVOLT_UNSAFE_NO_CAPTCHA=0

# hCaptcha API key
REVOLT_HCAPTCHA_KEY=******

# hCaptcha site key
REVOLT_HCAPTCHA_SITEKEY=******


##
## Email Settings
##

# If you are sure that you don't want to use email verification, set to 1.
REVOLT_UNSAFE_NO_EMAIL=0

# SMTP host
# REVOLT_SMTP_HOST=smtp.example.com

# SMTP username
# [email protected]

# SMTP password
# REVOLT_SMTP_PASSWORD=CHANGEME

# SMTP From header
# REVOLT_SMTP_FROM=Revolt <[email protected]>


##
## Application Settings
##

# Whether to only allow users to sign up if they have an invite code
REVOLT_INVITE_ONLY=1

# Maximum number of people that can be in a group chat
REVOLT_MAX_GROUP_SIZE=50

# VAPID keys for push notifications
# Generate using this guide: https://gitlab.insrt.uk/revolt/delta/-/wikis/vapid
# --> Please replace these keys before going into production! <--
REVOLT_VAPID_PRIVATE_KEY=******
REVOLT_VAPID_PUBLIC_KEY=******


##
## Autumn configuration
##

# S3 Region
AUTUMN_S3_REGION=minio

# S3 Endpoint
AUTUMN_S3_ENDPOINT=http://minio:9000

# MinIO Root User
MINIO_ROOT_USER=minioautumn

# MinIO Root Password
MINIO_ROOT_PASSWORD=minioautumn

# AWS Access Key ID (auto-filled if present above)
# AWS_ACCESS_KEY_ID=minioautumn

# AWS Secret Key (auto-filled if present above)
# AWS_SECRET_ACCESS_KEY=minioautumn


##
## Vortex configuration
##

# VOSO_MANAGE_TOKEN=CHANGEME

Thanks for any help

Adding an admin user to get started

Perhaps I'm overlooking something but I'm wanting to launch my own system to help with testing and contribution. What is the default admin login? Or how do I manually create a user for testing the system?

Thanks!

no matching manifest for linux/arm64/v8 in the manifest list entries

What happened?

I try install revolt on Raspberry Pi 4 64Bit (ARMv7) (ARMv8) but it error

Error:

pi@susgalaxy:~/revolt $ docker compose up -d
[+] Running 0/13
 ⠿ january Error                                                                                                   1.7s
 ⠿ caddy Error                                                                                                     1.7s
 ⠦ api Pulling                                                                                                     1.7s
   ⠙ ac2fb615420c Pulling fs layer                                                                                 0.2s
   ⠙ 77e90f8f6ae3 Pulling fs layer                                                                                 0.2s
   ⠙ 01cd6a37c405 Pulling fs layer                                                                                 0.2s
 ⠿ database Error                                                                                                  1.7s
 ⠿ events Error                                                                                                    1.7s
 ⠦ web Pulling                                                                                                     1.7s
 ⠿ createbuckets Error                                                                                             1.7s
 ⠿ redis Error                                                                                                     1.7s
 ⠿ autumn Error                                                                                                    1.7s
 ⠿ minio Error                                                                                                     1.7s
no matching manifest for linux/arm64/v8 in the manifest list entries
pi@susgalaxy:~/revolt $

No option to select microphone

Hi,

Firstly love the idea of this app. I'm self hosting and logged in to the app fine, but when I go into the global settings and try to select a mic I don't get a permissions pop up from the browser and have an empty list for input devices.

If I try this on the demo it works no problem. Is there something wrong with my set up?

Accessing over the network, no proxies or https. Completely stock setup with new VAPID keys and changed the DNS in .env to match the VMs hostname.

Thanks in advance!

bug: cant run "docker-compose up -d"

What happened?

(im on macos with M1 chip)

evan@evans-MacBook-M1-Pro revolt % docker-compose up -d
WARNING: Compose V1 is no longer supported and will be removed from Docker Desktop in an upcoming release. See https://docs.docker.com/go/compose-v1-eol/
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "requests/adapters.py", line 439, in send
File "urllib3/connectionpool.py", line 726, in urlopen
File "urllib3/util/retry.py", line 410, in increment
File "urllib3/packages/six.py", line 734, in reraise
File "urllib3/connectionpool.py", line 670, in urlopen
File "urllib3/connectionpool.py", line 392, in _make_request
File "http/client.py", line 1255, in request
File "http/client.py", line 1301, in _send_request
File "http/client.py", line 1250, in endheaders
File "http/client.py", line 1010, in _send_output
File "http/client.py", line 950, in send
File "docker/transport/unixconn.py", line 43, in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker/api/client.py", line 214, in _retrieve_server_version
File "docker/api/daemon.py", line 181, in version
File "docker/utils/decorators.py", line 46, in inner
File "docker/api/client.py", line 237, in _get
File "requests/sessions.py", line 543, in get
File "requests/sessions.py", line 530, in request
File "requests/sessions.py", line 643, in send
File "requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "docker-compose", line 3, in
File "compose/cli/main.py", line 81, in main
File "compose/cli/main.py", line 200, in perform_command
File "compose/cli/command.py", line 60, in project_from_options
File "compose/cli/command.py", line 152, in get_project
File "compose/cli/docker_client.py", line 41, in get_client
File "compose/cli/docker_client.py", line 170, in docker_client
File "docker/api/client.py", line 197, in init
File "docker/api/client.py", line 221, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
[61062] Failed to execute script docker-compose
evan@evans-MacBook-M1-Pro revolt %

bug: Network Error Upon Registration or Log In

What happened?

I am having issue where I am given a network error in the client when i try to sign in or make an account. I have followed whatever little documentation there is, but I cannot get rid of this error. I have tried with the server being pointed locally and exposed to the internet, with all specified ports open in my firewall; -still nothing.

Network Error

Hi, whenever I launched Revolt using Docker Compose with the exact same template as given here, I am able to get to the login page just fine but whenever I attempt to create an account I get "FAILED TO REGISTER - NETWORK ERROR". I have even when tested filling in the SMTP details in the env file and making sure all my ports are open as part of troubleshooting. What am I doing wrong? Thank you.

bug: Revolt docker container cannot talk to postfix smtp server at localhost:25

What happened?

In order to allow Revolt to send emails, I set up a postfix server for outgoing emails on the same server the Revolt docker container is running on, listening on the standard port 25. There's no username and password, so no authentication to speak of, and I've opened that port on the firewall. I can connect to it and send emails from both my local computer and on the same server outside the docker container, and I've added the docker0 address to the list of networks the postfix accepts, so it should work, but when I try to turn emails on, I just get this:

thread 'main' panicked at 'Running in production without email is not recommended, set REVOLT_UNSAFE_NO_EMAIL=1 to override.', crates/quark/src/util/variables/delta.rs:79:13

over and over.

DOMException: The operation is insecure

Just self hosted an instance, but I can't login after onboarding as the firefox console always spits out:

DOMException: The operation is insecure. util.tsx:21:16
    Ot util.tsx:21
    o Form.tsx:69
    onSubmit Form.tsx:107
    ie index.esm.js:1099
    Preact 31
        k
        (Async: EventListener.handleEvent)
    E
        __e
        __e
        T
        O
        __e
        T
        O
        T
        O
        T
        O
        T
        O
        T
        O
        T
        O
        T
        O
        T
        O
        __e
        T
        O
        __e
        T
        O
        __e
        T

Now, I have no clue what this means, can anyone help?

A comprehensive guide to self host revolt

Hello,
i tried self hosting revolt through docker, sure enough the guide provided on readme worked. The problem is when creating an account on localhost i always get an error, furthermore, trying to proxying through nginx (using my own knowledge, which isn't really this advanced) made things worse as i didn't even knew what to proxy and what not.
Would it be possible to write an actual complete guide to self host revolt? This defenitely would help people decentralize the service!

❗ Self-Hosting Support

If you want to get support with running Revolt, please use the #Programming channel on the Revolt Lounge server.

Somebody from the team may help you if they are available, but please do not mention anyone in particular for help as Revolt is pretty much entirely volunteer supported and nobody has an obligation to help you for free.

bug: Unable to friend or direct message users due to missing discriminator

What happened?

On a fresh self-hosted instance, it is not possible to send friend requests, accept friend requests or direct message users. This seems to be caused by the client not having values for user # discriminators. In all places I can see a username, the discriminator numbers are missing or null, so usernames appear as: Ganiman# or Ganiman#undefined.

revolt_discriminator_missing

Registration process

Would it be like a registration for a specific domain and only available for this domain or the registration is centralized for the whole revolt system made by you and so all self hosted docker instances are independent but then on what depends the registration process?

NETWORK ERROR on registration

Greetings.

I have a Debian virtual machine (VirtualBox on my Macbook) and I run docker-compose on it. I just followed the README instructions and then, I went to my browser and went to localhost:5000. Revolt's index page appeared, but when I tried to just register a new account, I got a network error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.