聊天平台Revolt的搭建

在这里插入图片描述

经网友 凌尘 提醒,Web-Check 最新的镜像版本,容器端口已经从 8888 改为了 3000,特此更正!


什么是 Revolt ?

Revolt 是一个开源的用户至上的聊天平台。是在不牺牲任何可用性的情况下与朋友和社区保持联系的最佳方式之一,可以确保您的对话是保密的。

安装

在群晖上以 Docker 方式安装。

官方提供了 self-hostedrepo,地址在:https://github.com/revoltchat/self-hosted,但要在群晖上部署,还需要做一些微调,涉及到下面三个文件

docker-compose.yml

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3.8"services:# MongoDB databasedatabase:image: mongocontainer_name: revolt-databaserestart: alwaysvolumes:- ./data:/data/db# Redis serverredis:image: eqalpha/keydbcontainer_name: revolt-redisrestart: always# S3-compatible storage serverminio:image: minio/miniocontainer_name: revolt-miniocommand: server /dataenv_file: env.txtvolumes:- ./minio:/datarestart: always# Caddy web servercaddy:image: caddycontainer_name: revolt-caddyrestart: alwaysenv_file: env.txtports:- "11080:80"- "11443:443"volumes:- ./caddyfile.txt:/etc/caddy/Caddyfile- ./caddy-data:/data- ./caddy-config:/config# API server (delta)api:image: ghcr.io/revoltchat/servercontainer_name: revolt-apienv_file: env.txtdepends_on:- database- redis- caddyrestart: always# Events service (quark)events:image: ghcr.io/revoltchat/bonfirecontainer_name: revolt-eventsenv_file: env.txtdepends_on:- database- redis- caddyrestart: always# Web App (revite)web:image: ghcr.io/revoltchat/client:mastercontainer_name: revolt-webenv_file: env.txtdepends_on:- caddyrestart: always# File server (autumn)autumn:image: ghcr.io/revoltchat/autumncontainer_name: revolt-autumnenv_file: env.txtdepends_on:- database- createbuckets- caddyenvironment:- AUTUMN_MONGO_URI=mongodb://databaserestart: always# Metadata and image proxy (january)january:image: ghcr.io/revoltchat/januarycontainer_name: revolt-januarydepends_on:- caddyrestart: always# Create buckets for minio.createbuckets:image: minio/mccontainer_name: revolt-mcdepends_on:- minioenv_file: env.txtentrypoint: >/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;"

镜像下载

这里一共涉及到了 10 个镜像,其中一半发布在 hub.docker.com,另一半发布在 ghcr.io,老苏建议先用 docker pull 拉取镜像,然后再安装

ghcr.io可以试试 docker 代理网站,当然如果 hub.docker.com 下不动也是可以用代理网站的

代理网站的地址:https://dockerproxy.com/,会多几个步骤,但总比下不了强

镜像说明

  • mongoMongoDB数据库在某些不支持 AVX 指令集 的 CPU 上,会导致容器不断重启,如果你遇到,可以尝试改为 mongo:4.4
  • eqalpha/keydbRedis 服务主要将数据缓存到内存,提升性能;latest 对应的版本是 x86_64_v6.3.3
  • minio/minio:用于实现存储服务;latest 对应的版本是 RELEASE.2023-08-16T20-17-30Z
  • minio/mcMinIO Client 简称 mc,是 minio服务器的客户端;latest 对应的版本是 RELEASE.2023-08-15T23-03-09Z
  • caddy:提供Web 服务;latest 对应的版本是 2.7.4-alpine
  • ghcr.io/revoltchat/server:提供API 服务;latest 对应的版本是 20230810-3
  • ghcr.io/revoltchat/bonfire:提供事件服务;latest 对应的版本是 20230810-3
  • ghcr.io/revoltchat/autumn:提供文件服务;latest 对应的版本是 1.1.10
  • ghcr.io/revoltchat/january:提供代理服务;latest 对应的版本是 0.3.5
  • ghcr.io/revoltchat/client:master:提供 Web 应用;选择了 tagmatser 的版本,因为latest 的版本是一年前的;

整个文件中,只有访问的端口需要修改,和本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号

env.txt

为了便于在群晖的 File Station 中修改,老苏将 .env.example 重命名为了 env.txt 而不是 .env

##
## Quark configuration
### MongoDB
MONGODB=mongodb://database# Redis
REDIS_URI=redis://redis/# Hostname used for Caddy
# This should in most cases match REVOLT_APP_URL
#HOSTNAME=http://local.revolt.chat
HOSTNAME=:80# URL to where the Revolt app is publicly accessible
REVOLT_APP_URL=http://192.168.0.197:11080# URL to where the API is publicly accessible
REVOLT_PUBLIC_URL=http://192.168.0.197:11080/api
VITE_API_URL=http://192.168.0.197:11080/api# URL to where the WebSocket server is publicly accessible
REVOLT_EXTERNAL_WS_URL=ws://192.168.0.197:11080/ws# URL to where Autumn is publicly available
AUTUMN_PUBLIC_URL=http://192.168.0.197:11080/autumn# URL to where January is publicly available
JANUARY_PUBLIC_URL=http://192.168.0.197:11080/january##
## hCaptcha Settings
### If you are sure that you don't want to use hCaptcha, set to 1.
REVOLT_UNSAFE_NO_CAPTCHA=1# hCaptcha API key (This is the "Secret key" from your User Settings page)
# REVOLT_HCAPTCHA_KEY=0x0000000000000000000000000000000000000000# hCaptcha site key
# REVOLT_HCAPTCHA_SITEKEY=10000000-ffff-ffff-ffff-000000000001##
## Email Settings
### If you are sure that you don't want to use email verification, set to 1.
REVOLT_UNSAFE_NO_EMAIL=1# SMTP host
# REVOLT_SMTP_HOST=smtp.example.com# SMTP username
# REVOLT_SMTP_USERNAME=noreply@example.com# SMTP password
# REVOLT_SMTP_PASSWORD=CHANGEME# SMTP From header
# REVOLT_SMTP_FROM=Revolt <noreply@example.com>##
## Application Settings
### Whether to only allow users to sign up if they have an invite code
REVOLT_INVITE_ONLY=0# Maximum number of people that can be in a group chat
REVOLT_MAX_GROUP_SIZE=150# 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=LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJSUWpyTWxLRnBiVWhsUHpUbERvcEliYk1yeVNrNXpKYzVYVzIxSjJDS3hvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWnkrQkg2TGJQZ2hEa3pEempXOG0rUXVPM3pCajRXT1phdkR6ZU00c0pqbmFwd1psTFE0WAp1ZDh2TzVodU94QWhMQlU3WWRldVovWHlBdFpWZmNyQi9BPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
REVOLT_VAPID_PUBLIC_KEY=BGcvgR-i2z4IQ5Mw841vJvkLjt8wY-FjmWrw83jOLCY52qcGZS0OF7nfLzuYbjsQISwVO2HXrmf18gLWVX3Kwfw=##
## 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
AWS_ACCESS_KEY_ID=minioautumn# AWS Secret Key
AWS_SECRET_ACCESS_KEY=minioautumn
  • 第一处需要修改的地方是 HOSTNAME=http://local.revolt.chat,因为我们没有使用默认的 80 端口,而是 11080 ,所以按照官方的说法,要改为 HOSTNAME=:80

  • 其他的所有的 http://local.revolt.chat 都改为了 http://192.168.0.197:11080

老苏的群晖主机为 192.168.0.197,你需要按你自己 IP 进行修改;

更多环境变量的说明请参考官方文档:https://developers.revolt.chat/stack/env

caddyfile.txt

同样也是为了便于修改,没有用 Caddyfile,而是改为了 caddyfile.txt,看起来是不是有点像 Nginx?这个文件没有做任何改动,主要的原因是老苏没折腾过 Caddy

{$HOSTNAME} {route /api* {uri strip_prefix /apireverse_proxy http://api:8000}route /ws {@upgrade {header Connection *Upgrade*header Upgrade websocket}uri strip_prefix /wsreverse_proxy @upgrade http://events:9000}route /autumn* {uri strip_prefix /autumnreverse_proxy http://autumn:3000}route /january* {uri strip_prefix /januaryreverse_proxy http://january:7000}reverse_proxy http://web:5000
}

一键启动

然后执行下面的命令

# 新建文件夹 revolt 和 子目录
mkdir -p /volume1/docker/revolt/{caddy-config,caddy-data,data,minio}# 进入 revolt 目录
cd /volume1/docker/revolt# 将 docker-compose.yml 、 env.txt  caddyfile.txt 放入当前目录# 一键启动
docker-compose up -d

如果不出意外的话,除了 revolt-mc,另外 9 个容器都是运行状态

运行

在浏览器中输入 http://群晖IP:11080 就能看到主界面

第一次需要注册账号

登录成功后的主界面

创建频道

完成之后,就等着好友加入聊天了

设置

黄色部分的大意是说

我们目前正在从头开始重建客户端和语音服务器。在大多数情况下,旧声音应该有效,但在某些情况下,它可能莫名其妙地无法连接和/或表现出奇怪的行为。

老苏翻了一下,最早的语音服务器代码地址是:https://github.com/revoltchat/vortex,但是已经弃用,官方说在新的分支重写,不过看起来一直也没更新,以后再说吧

参考文档

Revolt
地址:https://github.com/revoltchat

revoltchat/self-hosted: Deploy Revolt using Docker.
地址:https://github.com/revoltchat/self-hosted

Revolt - Find Your Community
地址:https://revolt.chat/

Introduction | Revolt
地址:https://developers.revolt.chat/

Revolt 搭建指南 - 神代綺凛の随波逐流
地址:https://moe.best/tutorial/revolt.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零学算法(剑指 Offer 36)

123.输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点&#xff0c;只能调整树中节点指针的指向。 为了让您更好地理解问题&#xff0c;以下面的二叉搜索树为例&#xff1a; 我们希望将这个二叉搜索树转化为双向循环链表。…

pxe网络装机

目录 PXE是什么&#xff1f; PXE的组件&#xff1a; 配置vsftpd关闭防火墙与selinux ​编辑配置tftp 准备pxelinx.0文件、引导文件、内核文件 ​编辑配置dhcp 创建default文件 创建新虚拟机等待安装&#xff08;交互式安装完毕&#xff09; 创建客户端验证&#xff08;…

完整开发实现公众号主动消息推送,精彩内容即刻到达

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

使用 zipfile创建文件压缩工具

在本篇博客中&#xff0c;我们将使用 wxPython 模块创建一个简单的文件压缩工具。该工具具有图形用户界面&#xff08;GUI&#xff09;&#xff0c;可以选择源文件夹中的文件&#xff0c;将其压缩为 ZIP 文件&#xff0c;并将压缩文件保存到目标文件夹中。 C:\pythoncode\new\z…

python基础之miniConda管理器

一、介绍 MiniConda 是一个轻量级的 Conda 版本&#xff0c;它是 Conda 的精简版&#xff0c;专注于提供基本的环境管理功能。Conda 是一个流行的开源包管理系统和环境管理器&#xff0c;用于在不同的操作系统上安装、管理和运行软件包。 与完整版的 Anaconda 相比&#xff0c…

【力扣每日一题】2023.8.31 一个图中连通三元组的最小度数

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个无向图&#xff0c;要我们找出三个节点&#xff0c;这三个节点他们两两相连&#xff0c;这三个节点除了连接到对方的其他线…

【重要】Nand Flash基础知识与坏块管理机制的介绍

概述 Flash名称的由来&#xff0c;Flash的擦除操作是以block块为单位的&#xff0c;与此相对应的是其他很多存储设备&#xff0c;是以bit位为最小读取/写入的单位&#xff0c;Flash是一次性地擦除整个块&#xff1a;在发送一个擦除命令后&#xff0c;一次性地将一个block&…

vue之若依分页组件的导入使用(不直接使用若依框架,只使用若依分页组件)

vue之若依分页组件的导入使用 步骤 步骤&#xff1a; 工具类&#xff1a;src/utils/scroll-to.js 样式&#xff1a;src/assets/styles/ruoyi.scss 组件&#xff1a;src/components/Pagination 全局挂载&#xff1a;src/main.js 复制工具类 复制若依框架中的src/utils/scrol…

Shell编程之函数

目录 基本概念 自定义函数 系统函数 1.read 2.basename 3.dirname 基本概念 将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值&#xff0c;然后给这段代码取个名字&#xff0c;也就是函数名&#xff0c;在需要实现某个特定功能的时候直接调用函数名即可。 函…

【FPGA】verilog语法的学习与应用 —— 位操作 | 参数化设计

【FPGA】verilog语法的学习与应用 —— 位操作 | 参数化设计 学习新语法&#xff0c;争做新青年 计数器实验升级&#xff0c;让8个LED灯每个0.5s的速率循环闪烁&#xff0c;流水灯ahh好久不见~ 去年光这个就把我折磨够呛。。我肉眼可见的脱发就是从那时候开始的。。在那两个月…

目标检测后的图像上绘制边界框和标签

效果如图所示&#xff0c;有个遗憾就是CV2在图像上显示中文有点难&#xff0c;也不想用别的了&#xff0c;所以改成了英文&#xff0c;代码在下面了&#xff0c;一定要注意一点&#xff0c;就是标注文件的读取一定要根据自己的实际情况改一下&#xff0c;我的所有图像的标注文件…

java八股文面试[JVM]——双亲委派模型

1.当AppClassLoader去加载一个class时&#xff0c;它首先不会自己去尝试加载这个类&#xff0c;而是把类加载请求委托给父加载器ExtClassLoader去完成。 2.当ExtClassLoader去加载一个class时&#xff0c;它首先也不会去尝试加载这个类&#xff0c;而是把类加载请求委托给父加载…

【TI毫米波雷达笔记】SOC外设初始化配置及驱动(以IWR6843AOP为例)

【TI毫米波雷达笔记】SOC外设初始化配置及驱动&#xff08;以IWR6843AOP为例&#xff09; 最基本的工程建立好以后 需要给SOC进行初始化配置 SOC_Cfg socCfg; //SOC配置结构体Task_Params taskParams; //任务参数SOC_Handle socHandle;ESM_init(0U); …

关于Maxwell与Kafka和数据库的监控

1.Maxwell的配置 其实就是配置两端的配置信息,都要能连接上,然后才能去传输数据 config.properties #Maxwell数据发送目的地&#xff0c;可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis producerkafka # 目标Kafka集群地址 kafka.bootstrap.servershadoop102…

OpenShift 4 - 用 Prometheus 和 Grafana 监视用户应用定制的观测指标(视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.13 的环境中验证 文章目录 OpenShift 的监控功能构成部署被监控应用用 OpenShift 内置功能监控应用用 Grafana 监控应用安装 Grafana 运行环境配置 Grafana 数据源定制监控 Dashboard 演示视…

学习JAVA打卡第四十九天

Random类 尽管可以使用math类调用static方法random&#xff08;&#xff09;返回一个0~1之间的随机数。&#xff08;包括0.0但不包括0.1&#xff09;&#xff0c;即随机数的取值范围是[0.0&#xff0c;1.0]的左闭右开区间。 例如&#xff0c;下列代码得到1&#xff5e;100之间…

网络渗透day6-面试01

&#x1f609; 和渗透测试相关的面试问题。 介绍 如果您想自学网络渗透&#xff0c;有许多在线平台和资源可以帮助您获得相关的知识和技能。以下是一些受欢迎的自学网络渗透的平台和资源&#xff1a; Hack The Box: Hack The Box&#xff08;HTB&#xff09;是一个受欢迎的平…

mvc 异常处理源码解析(3)

目录 准备源码跟踪ExceptionHandlerExceptionResolver初始化ExceptionHandlerExceptionResolver注入ExceptionHandlerExceptionResolver中exceptionHandlerAdviceCache初始化ExceptionHandlerMethodResolver中mappedMethods初始化 结尾 准备 准备一个controller类, 里面抛出一…

飞桨花滑骨骼点动作识别比赛记 2

基于 PaddleVideo 的花滑骨骼点动作识别 2s-AGCN配置文件节点流配置文件 2s-agcn_ntucs_joint_fsd.yamlMODEL 字段DATASET 字段PIPELINE 和 INFERENCE 字段OPTIMIZER 字段 agcn2s.pygraph输入通道数 骨骼流 Dataset 和 Pipeline配置文件DATASETPIPELINE 源码skeleton.pyskeleto…

渗透测试漏洞原理之---【CSRF跨站请求伪造】

文章目录 1、CSRF概述1.1、基本原理1.1.1、基本概念1.1.2、关键点1.1.3、目标 1.2、CSRF场景1.2.1、银行支付转账1.2.2构造虚假网站1.2.3、场景建模 1.3、CSRF类别1.3.1、POST方式 1.4、CSRF验证1.4.1、CSRF PoC Generator 2、CSRF攻防2.1、CSRF实战2.1.1、与XSS 漏洞相结合 2.…