V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
TristanYang
V2EX  ›  分享创造

一个可自部署的轻量级聊天系统 [更新]

  TristanYang ·
zerosoul · 2022-11-16 09:20:21 +08:00 · 7097 次点击
这是一个创建于 498 天前的主题,其中的信息可能已经有所发展或是发生改变。

之前分享过的一个项目 这段时间根据大家的反馈,做了较多更新迭代,所以再次分享下:

VoceChat 是什么

是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上,部署简单,很少需要维护。前端可以内嵌到自己的网站下,数据完全由用户自己掌握,传输过程加密。VoceChat 从 Slack, Discord, RocketChat, Solid, Matrix 等产品和规范中博采众长,适用于团队内部交流,个人聊天服务,网站客服,网站内嵌社区等场景。

我们认为 Web 3.0 去中心化的第一步是基于个人云的去平台化,通过个性化的计算与个性化的存储,让个人和组织拥有自己的平台,所以 VoceChat 的定位是能轻易部署在私有云上的社交协作程序。

如果你想搞一套自己的聊天系统,可以试试这款可自部署的轻量级聊天系统:VoceChat

VoceChat 具备的功能特性:

  • 🛠️ 开源 + 自部署:意味着代码 + 数据完全自主,甚至可以做二次开发
  • 📱 全平台:一旦部署成功,既可以通过 WebAPP 使用,也可以通过手机 APP 使用
  • 👨‍👨‍👦‍👦 即时聊天 + 频道:既可以同某个人即时聊天,也可以建立一个主题频道群聊
  • 😃 多种消息格式:文本,图片,文件,emoji ,以及富文本( markdown )
  • ⭐ 丰富的可配置项:在登录,注册,通知,成员管理,频道管理,第三方授权等各方面,都做了详尽的可配置化,比如在注册环节,可以设置是否开放注册,以及注册方式是邀请注册还是自注册,满满的掌控感
  • 🤖 强悍的扩展功能:我们有 widget 组件,可以很方便地把 VoceChat 聊天功能扩展到任意网站,让你的网站即刻拥有 IM 功能;如果你有需要,甚至可以把整个聊天应用嵌到自己网页内
  • 💪🏻 还有更多特性等你来发掘

更多参考

最后

  • 起初,VoceChat 是面向的海外,所以使用界面以英文为主,后续会添加多语言支持
  • 目前产品处于内测阶段,欢迎有兴趣的朋友试用,如果您在部署过程中有任何问题,或者有任何意见和建议,可以 v 我 yanggc888,也欢迎贡献成功实例,一经采纳,将有不低于 50 的现金红包奖励~
第 1 条附言  ·  2022-11-16 10:47:05 +08:00

这次有个主要更新:网站挂件 [widget] 。可以很方便的将已部署的vocechat扩展到任意网站,让自己网站即可拥有即时聊天功能,我自己的站点就放了一个widget

https://yangerxiao.com

demo

第 2 条附言  ·  2022-11-24 08:14:59 +08:00

最近更新:

  • WebAPP新增多语言支持,目前有中英两种语言,欢迎贡献其它语言:https://github.com/Privoce/vocechat-web/tree/main/public/locales
  • 新增部署参数:network.frontend_url,该参数为必填参数
  • 去掉了 /api/swagger 前端路径缓存,现在可以能够正确到达访问部署实例后的API文档,例:https://vocechat.yangerxiao.com/api/swagger
  • 修复了shell脚本安装域名解析报错问题
  • WebAPP:禁用textarea的语法检测
  • APP:修复了邀请链接注册过程中的服务器识别和验证链接有效性的问题
  • 感谢大家使用反馈,修复了很多小bug,就不一一列举了
TristanYang
    1
TristanYang  
OP
   2022-11-16 09:39:45 +08:00
😂 vx 写错了 yanggc_2013
ragnaroks
    2
ragnaroks  
   2022-11-16 09:41:45 +08:00
酷拉斯特,没看文档,是否有匿名模式?就是加入只用写个昵称就行,聊天数据不做保留(或只保留最后 10 分钟)。匿名模式用来临时组群沟通很常用。
TristanYang
    3
TristanYang  
OP
   2022-11-16 09:46:51 +08:00
@ragnaroks good idea! 有 guest 模式 但是目前只能浏览信息 不能发消息 会考虑加入这个匿名模式~
silentx
    4
silentx  
   2022-11-16 10:41:37 +08:00
看上去不错 邮箱也不用验证
TristanYang
    5
TristanYang  
OP
   2022-11-16 10:48:17 +08:00
@silentx emmmm 注册邮箱不用验证,是方便,但也有一定的安全问题,双刃剑。不过我们支持邀请连接注册,考虑安全问题,可以采用这种方式。
codespots
    6
codespots  
   2022-11-16 11:01:48 +08:00
看上去不错,star 一下
codespots
    7
codespots  
   2022-11-16 11:04:28 +08:00
我看了楼主发的旧帖,看到微信群头像一个熟悉的头像,回到这个帖子确认下,原来是羊二啊,已经有微信了,哈哈哈哈,大佬大佬
Heroininu
    8
Heroininu  
   2022-11-16 11:24:45 +08:00
开启 SMTP 后,默认验证邀请人的邮箱了,但是发送的邮件里的链接是错误的
TristanYang
    9
TristanYang  
OP
   2022-11-16 11:31:16 +08:00
@Heroininu 感谢反馈 您是已经部署成功了?方便的话,可以 V 具体聊聊~
helloworld1024
    10
helloworld1024  
   2022-11-16 11:35:05 +08:00
UI 挺好看的。
wooke
    11
wooke  
   2022-11-16 11:35:17 +08:00
部署了,弄来耍耍,希望支持中文界面
calming
    12
calming  
   2022-11-16 11:37:01 +08:00
哈哈 之前有过想法做类似的东西没想到你们已经实现了 点赞
hello267015
    13
hello267015  
   2022-11-16 11:37:05 +08:00
数据存储用的啥
TristanYang
    14
TristanYang  
OP
   2022-11-16 11:38:32 +08:00
@wooke 太棒了,可以加 V 领红包哈~
TristanYang
    15
TristanYang  
OP
   2022-11-16 11:39:52 +08:00
@calming 有兴趣也可以加入完善它,vocechat 才刚起步,可以走的更远一些
TristanYang
    16
TristanYang  
OP
   2022-11-16 11:41:00 +08:00   ❤️ 1
@hello267015 目前是 sqlite 后端用 rust 写的
isolcat
    17
isolcat  
   2022-11-16 11:46:19 +08:00
很简约大气的界面,star 了
bugsnail
    18
bugsnail  
   2022-11-16 11:52:31 +08:00
赞,刚刚有个项目可以试试
fox233
    19
fox233  
   2022-11-16 12:16:33 +08:00
国内服务器可以部署吗
hello267015
    20
hello267015  
   2022-11-16 12:33:18 +08:00
@TristanYang 试用了一下,体验很棒啊 , docker 可以把数据文件映射出来吗,准备部署到我的 nas
vsitebon
    21
vsitebon  
   2022-11-16 12:35:27 +08:00
可以用来开发别的软件的插件吗?
TristanYang
    22
TristanYang  
OP
   2022-11-16 13:07:04 +08:00
@fox233 可以的 只是有部分功能众所周知的原因是受限的 比如 notification 部分... 当然 如果服务器具备 cross the wall 功能,那没事了。
TristanYang
    23
TristanYang  
OP
   2022-11-16 13:07:30 +08:00
@vsitebon 什么场景,可以加 v 具体聊聊~
TristanYang
    24
TristanYang  
OP
   2022-11-16 13:09:39 +08:00
@hello267015 可以的 既然支持 docker 部署 可以映射
suyuyu
    25
suyuyu  
   2022-11-16 13:18:17 +08:00
这主页,小学生主页既视感 (
rusteer
    26
rusteer  
   2022-11-16 13:22:59 +08:00
rust 写的?
TristanYang
    27
TristanYang  
OP
   2022-11-16 13:42:45 +08:00
@suyuyu 哪个主页?是聊天主页还是官网 https://voce.chat ?审美是个挺主观的事情,如果大多数人都说有问题,我们改😂
TristanYang
    28
TristanYang  
OP
   2022-11-16 13:43:23 +08:00   ❤️ 1
@cnhew 嗯 后端暂时没准备好开源 以后会放出来 ~
liuxiniszuhi3
    29
liuxiniszuhi3  
   2022-11-16 14:00:47 +08:00
不错不错,但这个和 web3 有什么关系?
tvirus
    30
tvirus  
   2022-11-16 15:57:27 +08:00
界面很清爽👍
tvirus
    31
tvirus  
   2022-11-16 16:02:30 +08:00
的确自己部署没有推送
TristanYang
    32
TristanYang  
OP
   2022-11-16 16:30:55 +08:00
@liuxiniszuhi3 web3 并不一定和区块链扯上关系。重复下这句话:我们认为 Web 3.0 去中心化的第一步是基于个人云的去平台化,通过个性化的计算与个性化的存储,让个人和组织拥有自己的平台,所以 VoceChat 的定位是能轻易部署在私有云上的社交协作程序。
hello267015
    33
hello267015  
   2022-11-16 16:46:06 +08:00
请教大佬,聊天信息是怎么从服务端拉取的, 为什么浏览器 devtool 里看不到请求记录???
TristanYang
    34
TristanYang  
OP
   2022-11-16 16:54:21 +08:00   ❤️ 1
@hello267015 走的是 SSE 推送 你看下 /api/user/events 这个接口,会有流信息
tvirus
    35
tvirus  
   2022-11-16 16:55:13 +08:00
在海外服务器上自建了一个,消息也没有推送。
TristanYang
    36
TristanYang  
OP
   2022-11-16 17:23:58 +08:00
@tvirus 消息推送走的是 firebase 需要配置下 文档在此: https://doc.voce.chat/setting/setting-firebase-notification
c1273082756
    37
c1273082756  
   2022-11-16 17:47:05 +08:00
经测试, iOS 下自部署没有消息通知
TristanYang
    38
TristanYang  
OP
   2022-11-16 17:50:30 +08:00
@c1273082756 消息通知需要配置一下( https://doc.voce.chat/setting/setting-firebase-notification ),众所周知的原因,在国内比较恼火😂
laoooo
    39
laoooo  
   2022-11-16 18:17:05 +08:00
看了眼 docker 里面的文件,图片文件只是把扩展名删了?加了个.jpg 就能看见原图
Ionian
    40
Ionian  
   2022-11-16 20:13:32 +08:00
挺好的,只是在国内做这种产品挺危险的
leon0918
    41
leon0918  
   2022-11-16 20:36:57 +08:00
先赞一个,有过同样的想法,之前蘑菇街也做过一个开源的 teamtalk ,但是这类软件在国内不会有监管风险吗
troilus
    42
troilus  
   2022-11-16 20:51:07 +08:00
赞,端到端加密怎么样
troilus
    43
troilus  
   2022-11-16 20:58:03 +08:00
curl -sSf https://s.vocechat.com/install.sh | sh
curl: (35) Encountered end of file
TristanYang
    44
TristanYang  
OP
   2022-11-16 21:23:39 +08:00
@troilus 抱歉 是文档写错了域名 已修正:curl -sSf https://s.voce.chat/install.sh | sh
TristanYang
    45
TristanYang  
OP
   2022-11-16 21:41:38 +08:00
@laoooo emmmm 文件名做了混淆处理 有什么问题吗?图片是不好加密,也没必要加密
sinORcos
    46
sinORcos  
   2022-11-17 07:59:06 +08:00 via iPhone
有端到端加密吗?
ixixi
    47
ixixi  
   2022-11-17 08:49:38 +08:00
请问以后是否针对这俩场景提供方案 ? 1.oa crm 系统的通知和即时通讯 2.局域网即时通讯
troilus
    48
troilus  
   2022-11-17 09:09:28 +08:00
@TristanYang curl: (6) Could not resolve host: sh.voce.chat; 未知的名称或服务 这条是不是也要更新
TristanYang
    49
TristanYang  
OP
   2022-11-17 10:00:13 +08:00
@troilus 额 应该是 CDN 问题,有缓存,昨天我统一更新了,今天我溯源更新下,应该可以了。
TristanYang
    50
TristanYang  
OP
   2022-11-17 10:05:07 +08:00
@ixixi 第一个场景没太明白,第二个实质就是部署 vocechat 吧,只不过不能对外访问,当然,有些功能也会受限,比如通知。可以加 v 详细聊聊~
Andrue
    51
Andrue  
   2022-11-17 13:08:39 +08:00
功能上可以参考 matrix 从描述上来看 matrix 基本上和你们的这个完全一致,当然 matrix 的联邦网络和 E2E 加密还是特色
Andrue
    52
Andrue  
   2022-11-17 13:09:50 +08:00
哦刚看到桥接列表里有 martix 了,看上去你们肯定也研究过了,不用我指指点点 XD
getput555
    53
getput555  
   2022-11-17 17:26:55 +08:00
我的项目名称和大神的 90%相似,vochat 。先声明,可不是抄的,三年前就测试上线了,一直没有作商业化。我做的是一款基于语言社交娱乐的 app ,重点放在手机息屏后用语音控制手机社交和娱乐,打算用于特殊场景,比如:开车不能玩手机时,只需说,进工作群,那么,群里其他人说的语音消息会自动同步放出来,自己说的语音,会变成语音消息发到群里,没人聊天时,也可以变身智能语音,说听什么电台,就会自动切换到该实时节目,且所有听这个节目的用户会自动成为一个语音群互动,期间无需拿出手机用手和眼睛去操作。菜鸟做了好玩,让大神笑话了。
mogging
    54
mogging  
   2022-11-17 22:31:39 +08:00 via Android
docker 加 nginx 很容易就部署到 vps 了,安卓 APP 打开邀请链接注册有问题,卡最后一步了,网页打开注册链接没问题。
han640223
    55
han640223  
   2022-11-18 02:18:56 +08:00
@mogging 卡最后一步打开邀请链接注册有问题,是什么问题?粘贴邀请链接到手机 app ,没反应?还是跳转不到手机 app ?
mogging
    56
mogging  
   2022-11-18 08:13:24 +08:00 via Android
可以输入用户名密码,但最后提交按钮没反应,我猜测是不是我的 vps 配置太低。vocechat.wangjia.xyz
mogging
    57
mogging  
   2022-11-18 08:20:41 +08:00 via Android
@han640223 很好的软件,极简,个人建议注意一下开源协议的使用,防止别人拿去卖课,这种事情越来越多了。另外今晚会抓包之后再看看点击注册提交没反应是什么原因。
mogging
    58
mogging  
   2022-11-18 08:20:56 +08:00 via Android
@han640223 很好的软件,极简,个人建议注意一下开源协议的使用,防止别人拿去卖课,这种事情越来越多了。另外今晚会抓包之后再看看点击提交没反应是什么原因。
TristanYang
    59
TristanYang  
OP
   2022-11-18 09:08:49 +08:00
@getput555 90%相似的只是名称吧?😂
Laussan
    60
Laussan  
   2022-11-18 10:27:33 +08:00
后端不开源是出于什么考虑?
TristanYang
    61
TristanYang  
OP
   2022-11-18 12:00:12 +08:00
@Laussan 会开源,只是目前还没准备好~ 可以持续关注
TristanYang
    62
TristanYang  
OP
   2022-11-18 12:00:48 +08:00
@mogging 是 web 端登录点击没反应?可以加我 v 具体看看
getput555
    63
getput555  
   2022-11-18 12:02:36 +08:00
@TristanYang 是的,当时想是语音社交,就取名 voicechat ,再简化点,就是 vochat 了。后台是用的开源,前端用 android 写的,重点解决手机黑屏休眠后,后台保活和对控制响应的问题,架构也是用的第三方,一个人,写不了复杂的代码。
ArianX
    64
ArianX  
   2022-11-18 15:31:45 +08:00
独立部署两个私有的服务,两个私有服务之间的用户,是否有办法互相发起聊天呢
TristanYang
    65
TristanYang  
OP
   2022-11-18 17:21:12 +08:00
@ArianX 好问题,我们也考虑过不同 server 之间数据(用户&消息)互通,但是容易把事情搞复杂,先走好第一步,服务好单 server 的场景,你有好的想法,可以加我 v 详聊~ yanggc_2013
quericy
    66
quericy  
   2022-11-19 10:10:53 +08:00
附件数据存储在服务端么,支持接对象存储么
TristanYang
    67
TristanYang  
OP
   2022-11-19 20:15:11 +08:00   ❤️ 1
@quericy 目前是放在服务器上 后续会做第三方存储,比如 aws s3
hansu
    68
hansu  
   2022-11-21 10:02:50 +08:00
@mogging APP:修复了邀请链接注册过程中的服务器识别和验证链接有效性的问题 app 更新后就好了
CarlGauss
    69
CarlGauss  
   2022-11-21 10:56:00 +08:00
@TristanYang 跨服务器能连通才能提现去中心,而且用户的账号系统,直接用公私钥的体系,这样用户的账号就不属于任何一个平台,真正属于自己;在哪个服务器聊天只是临时挂靠。要在目前这么多的聊天系统中突出重围,这个特性我认为是最核心的特性了。
在博客的领域,有 Mastodon 做过尝试,但是并不好用,服务器端也要做一个核心的特性升级,那就是有一个中心服务器记录每个账号最新的服务器地址,这样去找每个账号的时候,才找得到,类似现在的域名服务器。这样,各个小的聊天系统,才能构建成为一个庞大松散的网络。后续更进一步的时候,可以大家也自建这种域名服务器。
不过上面都不是最大的问题,最大的问题是商业模式,要恰饭的,做成这样比较用爱发电,然后还要面对国家的审查和吃免费牢饭的风险。。。。。
TristanYang
    70
TristanYang  
OP
   2022-11-21 20:10:18 +08:00
@CarlGauss 受教了 想起了以前拿 U 盘做操作系统,随插随用,数据也跟着 U 盘走,和你说的第一个观点挺像;第二个观点核心是设计一个数据互通的协议,https://matrix.org/ 好像已经在做了,但是落地普及,还有很长路要走。VoceChat 不会走用爱发电之路,但选择什么路,要走多远,还在探索,欢迎加 v 一起探索~ yanggc_2013
CarlGauss
    71
CarlGauss  
   2022-11-22 10:23:28 +08:00
@TristanYang 现在还有一个问题是,到处都是锤子,但是没有钉子,或者说,没有具备商业价值的钉子。Discord 做的那么优秀都好像没掀起太大的风浪。
说起来,V 站有 discord 的频道吗?
asuraa
    72
asuraa  
   302 天前
能否支持下备注啥的
TristanYang
    73
TristanYang  
OP
   301 天前
@luodaoyi 是指用户备注吗?具体什么场景,是想要个用户名别称,还是有个地儿写用户介绍 /备注
wangpengfei4113
    74
wangpengfei4113  
   267 天前
@TristanYang 我期望加个别称,否则人数多了不知道是谁了。
asuraa
    75
asuraa  
   225 天前
@TristanYang 弄个别名备注就行 要不然人加多了就不知道是谁了
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3260 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.