搭建 im 聊天服务系统,聊天服务端可独立部署到自己的云服务器,这方面有有现成开源免费的么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
tctc4869
V2EX    程序员

搭建 im 聊天服务系统,聊天服务端可独立部署到自己的云服务器,这方面有有现成开源免费的么?

  •  
  •   tctc4869 2020-05-09 14:25:34 +08:00 20988 次点击
    这是一个创建于 1983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想自己搭建私有的 im 服务系统,邀请拉一些好友们在里面大胆地讨论国家政策扯皮和开车。不用担心什么服务商审查。

    服务系统包括服务端,和 pc 和安卓客户端,服务端要求是可独立部署,将服务端的执行文件包放到自己购买的云服务器上运行,客户端安装包,设置服务器 ip 或域名,客户端软件安装后就能用。这方面有开源免费的分享么?或者是付费的,但是如果付费,怎么证明是安全的?

    功能要求,点对点,群组。聊天内容包括文字,发文件等

    但如果自己做一个的话,这个对 socket 技术掌握有多少要求?尤其还是要传文件的情况下。

    第 1 条附言    2020-05-09 16:32:48 +08:00
    还有云服务器不一定会选国内,也可能选国外的
    第 2 条附言    2020-05-10 00:25:24 +08:00
    关于聊天信息的发送加密,希望是能自定义加密策略的,可以嵌套,例如这种 Base64(DES(toUTF8(聊天内容),用户 token))
    101 条回复    2023-07-23 18:21:53 +08:00
    1  2  
    yuxizhe
        1
    yuxizhe  
       2020-05-09 14:34:51 +08:00
    直接用 firebase + flutter 就行
    cryingsky
        2
    cryingsky  
       2020-05-09 14:43:18 +08:00
    joesonw
        3
    joesonw  
       2020-05-09 14:48:02 +08:00
    rocket chat
    easonHHH
        4
    easonHHH  
       2020-05-09 14:49:50 +08:00
    之前看到过去哪儿的 startalk,你可以查一查
    Cbdy
        5
    Cbdy  
       2020-05-09 14:49:59 +08:00 via Android
    可以基于电子邮件做
    opengps
        6
    opengps  
       2020-05-09 14:54:59 +08:00
    主要是做好分布式扩容集群的架构,再就是做好通信协议
    hst001
        7
    hst001  
       2020-05-09 14:55:19 +08:00
    自己做核心功能很容易实现,哪怕你只是要个简单的聊天,细节也会花掉你绝大部分的精力。

    反正要聊敏感的东西,为什么不用墙外的电报呢?
    gdt
        8
    gdt  
       2020-05-09 14:58:48 +08:00
    telegram 不好吗?
    kilen3a
        9
    kilen3a  
       2020-05-09 15:00:30 +08:00   2
    有开源的,mattermost: https://mattermost.com/
    kilen3a
        10
    kilen3a  
       2020-05-09 15:02:30 +08:00
    自己从 socket 撸一个出来也很简单,如果只是文字聊天的话,处理好通信协议和加密+ 对话 context + 端连接身份认证就 OK 撸
    kilen3a
        11
    kilen3a  
       2020-05-09 15:04:24 +08:00
    传文件的话,只是能用这个级别的话难度也不是很大,就是优化起来坑还是很多的
    liubaicai
        12
    liubaicai  
       2020-05-09 15:05:20 +08:00
    你要你肉身在国内,劝你别搞敏感开车的东西
    fancy111
        13
    fancy111  
       2020-05-09 15:12:26 +08:00
    哈哈哈,,, 你想进局子里吗?
    就靠自己搭建的 IM 系统能瞎聊? too young
    itgoyo
        14
    itgoyo  
       2020-05-09 15:23:33 +08:00
    如果付费的怎么证明安全,那免费的就更不用说了
    tctc4869
        15
    tctc4869  
    OP
       2020-05-09 15:40:55 +08:00
    @hst001 墙外的聊天工具使用依托于 vpn,而 vpn,就我目前用的,不是时时刻刻都稳定,而且墙外的聊天工具也不是很随便让你发什么,虽然比国内自由点是肯定的
    Kilerd
        16
    Kilerd  
       2020-05-09 15:42:55 +08:00
    最简单的方法:把这个钱分给你们的朋友们让他们买 VPN,然后注册一个 telegram group 就可以开心的聊天了
    tctc4869
        17
    tctc4869  
    OP
       2020-05-09 15:45:56 +08:00
    @liubaicai
    @fancy111

    难道国内网监还会有人劫持发送内容,随便破解加密的东西么。
    tctc4869
        18
    tctc4869  
    OP
       2020-05-09 15:48:18 +08:00
    @Kilerd 那比较有稳定的 vpn 么?这里的稳定虽然不是 24 小时时时刻刻稳定,但至少有 20 个小时处于稳定状态
    Kilerd
        19
    Kilerd  
       2020-05-09 15:51:57 +08:00
    @tctc4869 #18 钱不到位。10 块的跟 10000 块的不能比的。
    tctc4869
        20
    tctc4869  
    OP
       2020-05-09 15:52:10 +08:00   1
    @fancy111
    @itgoyo
    你觉得国内能随便看私有群的内容?你要是这么觉得,那国内那些做违法产业的涉及网络群组,例如涉及违法产业的 qq 群,微信群里的人,怎么还会等待有人举报才会有人处理?
    tctc4869
        21
    tctc4869  
    OP
       2020-05-09 15:54:01 +08:00
    @Kilerd
    10000 块的 vpn ?,是指那种比较稳定的每月 10000 块的 vip 套餐?
    SingeeKing
        22
    SingeeKing  
    PRO
       2020-05-09 15:56:17 +08:00
    还是用现成的解决方案吧,比如 https://work.weixin.qq.com/server
    aver4vex
        23
    aver4vex  
       2020-05-09 15:56:29 +08:00
    在国内搞这个要备案的吧,不然后果很严重的。
    SingeeKing
        24
    SingeeKing  
    PRO
       2020-05-09 15:58:32 +08:00
    另外 telegram 和 Keybase 也是服务端客户端等全开源,也可以自己部署编译出来一个用(好像有个 Potato 就是把 TG 包装了一下)
    Garland
        25
    Garland  
       2020-05-09 16:00:19 +08:00
    服务端这里的作用是啥呢?
    rb6221
        26
    rb6221  
       2020-05-09 16:01:45 +08:00
    你这个想法有漏洞啊,如果你寄希望于服务商保证你的信息安全,那为啥又不在乎网监的审查呢……
    如果是公开提供服务的服务商,那被审查是必然的,不要抱希望了
    如果是你自建,那这方面的框架确实有,但是他本身的安全性设计(加密方案等)应该不会很高,有可能被中间截获,依然有风险
    tctc4869
        27
    tctc4869  
    OP
       2020-05-09 16:08:42 +08:00
    tctc4869
        28
    tctc4869  
    OP
       2020-05-09 16:09:32 +08:00
    @aver4vex 云服务器肯定要备案的,难道我在云服务器上部属个服务端应用都要备案?
    tctc4869
        29
    tctc4869  
    OP
       2020-05-09 16:10:26 +08:00
    @Garland 中转客户端消息,以及保存用户好友信息,通知类型的帖子信息
    wanwaneryide
        30
    wanwaneryide  
       2020-05-09 16:12:44 +08:00
    挂着梯子用 tg 或者内置的梯子,稳得不行
    tctc4869
        31
    tctc4869  
    OP
       2020-05-09 16:15:26 +08:00
    @janus77 聊天发送的数据,肯定是先以自定义的加密策略进行加密过的,然后在发送数据,中间人截获了破解加密了算他厉害。但有人会注意一个私人的聊天服务么?
    krixaar
        32
    krixaar  
       2020-05-09 16:16:29 +08:00
    #20
    其一,你不能让你的用户知道你能看,否则他们会恐慌。你怎么知道举报人就一定是热心群众呢?
    其二,你不能光看几个关键词就去抓人,否则《守望先锋》最火的那段时间,每一个游戏群都该被抓起来。
    其三,实时盯一个群,和实时盯一百万个群,不是一个概念。
    其四,你的干过的事儿他们都知道,你只是不值得他们出手而已。
    huntcool001
        33
    huntcool001  
       2020-05-09 16:17:31 +08:00
    你朋友用你的 IM 聊东西出事了你也要一起进去


    你确定想要吗?
    tctc4869
        34
    tctc4869  
    OP
       2020-05-09 16:18:25 +08:00
    @tctc4869 我又不是面向大众,好友都是通过我邀请才能使用用户,但会有机构会盯着一个小小的网络私人聊天服务么?
    KyleLi3972
        35
    KyleLi3972  
       2020-05-09 16:18:43 +08:00 via iPhone
    群晖有聊天套件 傻瓜式配置 去弄个 https 证书加密啥弄到位就行
    nuk
        36
    nuk  
       2020-05-09 16:24:06 +08:00   2
    mattermost,不吃资源配置简单,app 可以直接从市场安装,免费 push 不花钱。
    不过我的做法是把服务器放在本地,然后云服务器只做 nginx 反向代理。
    本地的 mattermost 放在虚拟机里,全盘加密,一旦掉电就要手动输密码来挂载。
    可以避免被取证,wj 只要拿回去就不可能解开加密。
    aver4vex
        37
    aver4vex  
       2020-05-09 16:24:34 +08:00
    tctc4869
        38
    tctc4869  
    OP
       2020-05-09 16:25:38 +08:00
    @krixaar “实时盯着一个群“ ,这有一个前提,除了我和朋友透露了这个聊天群组系统的存在,有谁会知道我在云服务器上部署是不是私人聊天服务系统?没人知道哪会有人盯着啊。
    rb6221
        39
    rb6221  
       2020-05-09 16:27:50 +08:00
    @tctc4869 #31 你所说的自定义加密策略,说实话如果真被盯上,被破解的可能性也不小,否则电报就不会出那么多赏金来奖励破解他们加密方案的人了。另外私人服务的话,没有人特别盯,但是会有无差别日常扫描啊,就跟爬虫一样,国内的服务器提供商都会明里暗里有的
    skylancer
        40
    skylancer  
       2020-05-09 16:40:26 +08:00
    @SingeeKing 我怎么从来没有听说过 telegram 服务器端开源
    tctc4869
        41
    tctc4869  
    OP
       2020-05-09 16:42:52 +08:00
    @wanwaneryide tg 或者内置的梯子? tg 或内置的?
        42
    jakehu  
       2020-05-09 16:43:51 +08:00
    群晖 我之前用过 群晖的 chat
    jakehu
    tctc4869
        43
    tctc4869  
    OP
       2020-05-09 16:45:10 +08:00
    @kilen3a mattermos 部署在 Windows server 上是只能用 docker 虚拟机么
    tctc4869
        44
    tctc4869  
    OP
       2020-05-09 16:46:20 +08:00
    @nuk mattermost 放到 Windows server 里部署,只能使用 docker 虚拟机么?
    tctc4869
        45
    tctc4869  
    OP
       2020-05-09 16:53:46 +08:00
    @gdt
    @skylancer
    telegram 服务器端是在哪下的,我目前找不到,如果要部署服务器版本,在 windows 上是要借助 docker 虚拟机么?
    qfeng
        46
    qfeng  
       2020-05-09 16:59:49 +08:00
    @tctc4869 https://core.telegram.org/api/obtaining_api_id 应该使用的是 telegram 的平台服务
    skylancer
        47
    skylancer  
       2020-05-09 17:02:27 +08:00
    @tctc4869 我从来就没看过也没听过 telegram 服务器端开源,他是我第一个看到说 tg 服务器端开源的人
    zjsxwc
        48
    zjsxwc  
       2020-05-09 17:02:39 +08:00
    我觉得 “普通论坛功能” 再加个 “长连接推送” 就可以搞定了
    Luoyuanlong
        49
    Luoyuanlong  
       2020-05-09 17:04:43 +08:00
    为啥不用 telegram 呢?
    iFlicker
        50
    iFlicker  
       2020-05-09 17:10:44 +08:00
    竟然没人提微信开源的 mars
    力推
    namelosw
        51
    namelosw  
       2020-05-09 17:16:36 +08:00
    找到这种 self host 的很可能都不是点对点的,或者实现错的,或者理解跟你不一致……最后还不如 Telegram
    smilzman
        52
    smilzman  
       2020-05-09 17:16:50 +08:00
    我用的 mattermost~



    Cowhitewhite
        53
    Cowhitewhite  
       2020-05-09 17:24:40 +08:00
    berumotto
        54
    berumotto  
       2020-05-09 17:30:03 +08:00   1
    对不起,我是警察
    zzzmh
        55
    zzzmh  
       2020-05-09 17:34:16 +08:00
    fengshils
        56
    fengshils  
       2020-05-09 17:34:58 +08:00 via Android
    禅道他家有一款可以自己部署的喧喧的 im
    ajaxfunction
        57
    ajaxfunction  
       2020-05-09 17:51:42 +08:00
    @nuk 恐怕是你小瞧 jc 叔叔的手段了,

    只要你还活着,并且你还记得密码,分分钟就供出来了。

    只有一种办法,就是随机密码,你自己都不知道这个密码,哈哈
    inktiger
        58
    inktiger  
       2020-05-09 18:04:34 +08:00
    哈哈哈,我觉得就拉一些好友,完全就一台机子搞 scoket 完全够用了哇,传文件也不是啥复杂的东西呀,只是带宽影响速度来着,最近公司就有一套与百来台爬虫服务器实时交互的需求,用 socket 搞,感觉轻轻松松,实在要走量大的,也可以依靠 mq 来做一套分布式的,至于审查这方面的,我觉得聊天内容加下密,解密秘钥通过只能登陆后获取,在信息接收方解密查看挺好,就算国内使用我觉得也没啥,就算服务商拦截流量也搞不出个什么花样来
    fox0001
        59
    fox0001  
       2020-05-09 18:04:41 +08:00 via Android
    nextcloud 有聊天插件。想简单点,ssh + screen 就可以了,不过没有推送,只能作为简单留言板
    fox0001
        60
    fox0001  
       2020-05-09 18:06:33 +08:00 via Android
    另外,非法的事情还是不要做
    tctc4869
        61
    tctc4869  
    OP
       2020-05-09 18:14:01 +08:00
    @inktiger 问一下 ,socket 传文件加密,一般是用的什么?把文件转成 Base64,再把转成的 Base64 通过其他方式加密么?
    fcten
        62
    fcten  
       2020-05-09 18:34:32 +08:00
    小心连服务器带人一锅端了 /狗头
    lshero
        63
    lshero  
       2020-05-09 18:39:04 +08:00
    @yuxizhe firebase 做 IM 怎么做群聊呢?订阅主题?
    richzhu
        64
    richzhu  
       2020-05-09 18:44:35 +08:00 via iPhone
    开源的 duckchat 挺好的
    collo
        65
    collo  
       2020-05-09 18:45:04 +08:00 via Android
    以前 v 友有做了一款阿卡信,各种功能都已经成熟了,可惜后面貌似被和谐了。
    no1xsyzy
        66
    no1xsyzy  
       2020-05-09 18:46:50 +08:00
    @tctc4869 #20 你以为为什么这次要特地明确聊天记录可以作为证据?
    dorothyREN
        67
    dorothyREN  
       2020-05-09 18:51:40 +08:00
    layui 有个 im 产品 layim
    huihuilang
        68
    huihuilang  
       2020-05-09 18:55:12 +08:00 via Android
    我就想知道公司自己搭一个 IM 工具,内部员工使用,会不会有问题?
    PbCopy111
        69
    PbCopy111  
       2020-05-09 19:07:57 +08:00
    你别部署了,就算部署了,怎么保证加密协议是安全的呢?
    还是 tg 靠谱。。。那个私密聊天,目前看来,还是可以的。
    aver4vex
        70
    aver4vex  
       2020-05-09 19:09:43 +08:00
    @huihuilang 不开放到公网,都没事儿
    YaphetYin
        71
    YaphetYin  
       2020-05-09 19:27:17 +08:00 via iPhone
    zulip 看看呢
    starsriver
        72
    starsriver  
       2020-05-09 19:35:49 +08:00 via Android
    云服务器 bwh 用了一年,还可以。开源的聊天软件有好多啊,加密肯定是 tls
    xcstream
        73
    xcstream  
       2020-05-09 19:38:43 +08:00
    电报
    oxogenesis
        74
    oxogenesis  
       2020-05-09 19:42:03 +08:00
    @cryingsky 前端太美
    要是结合到我的项目(账号本地生成、端到端加密、聊天记录本地化)就好了
    https://github.com/oxogenesis/oxo-chat-tutorial
    https://github.com/oxogenesis/oxo-chat-client
    charce
        75
    charce  
       2020-05-09 19:59:29 +08:00
    群晖服务器自带 chat 套件,完全私有化,web 端、ios 端、Android 端都有,还可以协同,只有硬件一次性投入,推荐~
    kilen3a
        76
    kilen3a  
       2020-05-09 20:04:23 +08:00
    @tctc4869 不太清楚,没在 windows 上部署过
    serical
        77
    serical  
       2020-05-09 20:48:45 +08:00
    刚好也是有类似的需求, 写了个端对端加密的玩具 https://github.com/serical/secure-chat
    azhuge233
        78
    azhuge233  
       2020-05-09 20:57:07 +08:00 via iPhone
    teamspeak
    bhy
        79
    bhy  
       2020-05-09 21:54:14 +08:00
    matrix
    lithiumii
        80
    lithiumii  
       2020-05-09 22:03:44 +08:00 via Android
    mattermost 不折腾。服务端 Digitalocean 一键安装,客户端安卓苹果应用商店下载,电脑端 electron,还有网页端
    sunorg
        81
    sunorg  
       2020-05-09 22:04:11 +08:00 via Android
    @smilzman 安卓端信息能推送吗?
    sunorg
        82
    sunorg  
       2020-05-09 22:04:55 +08:00 via Android
    @lithiumii 同问题,国内能消息推送吗?安卓端
    nuk
        83
    nuk  
       2020-05-09 22:21:03 +08:00   3
    @ajaxfunction 如果你还抱着这样的看法就太小看我国的司法体系了。
    我朋友的经历,jc 入门后第一时间就是几个人控制你然后拿到你的手机,避免你锁定或者退出登陆 app 。
    如果没有完善的证据链,庭审会很难看的。
    正所谓,坦白从宽,牢底坐穿。
    lithiumii
        84
    lithiumii  
       2020-05-09 22:23:24 +08:00 via Android
    @sunorg 个人经验是杀掉后台就没了,锁定后台会有
    CantSee
        85
    CantSee  
       2020-05-09 23:46:20 +08:00
    建议加密通信
    cjjia
        86
    cjjia  
       2020-05-10 02:06:11 +08:00 via Android
    建个 telegram 代理,时刻挂梯子太耗电了。
    jiangzm
        87
    jiangzm  
       2020-05-10 02:47:56 +08:00
    开源的 Rocket Chat ( https://rocket.chat/ ) 挺不错的
    服务端是 Node JS,代码在 https://github.com/RocketChat/Rocket.Chat
    exploreexe
        88
    exploreexe  
       2020-05-10 03:24:42 +08:00
    大胆地讨论国家政策扯皮和开车...
    兄弟万一你们中间出了叛徒可就危险了...
    xiaofengchen
        89
    xiaofengchen  
       2020-05-10 08:21:09 +08:00 via Android
    这不是用技术能解决的问题·_·
    y1shan
        90
    y1shan  
       2020-05-10 09:34:41 +08:00
    大哥在看着你
    cumt21g
        91
    cumt21g  
       2020-05-10 10:26:50 +08:00
    JCZ2MkKb5S8ZX9pq
        92
    JCZ2MkKb5S8ZX9pq  
       2020-05-10 13:44:57 +08:00
    iMessage 是不是不会被监听?
    tctc4869
        93
    tctc4869  
    OP
       2020-05-10 14:44:06 +08:00
    @exploreexe 嘛,反正啦的好友不会有很多个的,真这样就当交友不慎吧,
    zorui
        94
    zorui  
       2020-05-10 17:59:34 +08:00
    koast
        95
    koast  
       2020-05-10 18:57:56 +08:00 via Android
    @tctc4869 #20 还真这么觉得,你举的例子并没有说服力。相对于那些阴谋 xx,FD,JD 的那些人,做做外挂,破解百度云啥的还真不算啥大事。如果什么鸡毛蒜皮的事都要查,那伟光正形象又怎么保持呢?再说,热心群众都是热心群众吗?
    koast
        96
    koast  
       2020-05-10 19:03:37 +08:00 via Android
    @nuk #83 我觉得这种说法还挺可信的,记得 cctv12 讲过一个案子,记不太清了,菠菜的,弄两台服务器主从同步(大概防止意外掉电?),数据全在内存里不落地,说是有了风吹草动就直接拉闸。。。说的我当时一愣一愣的,不知道以为是搞什么暗网交易网站。。。脑洞可真大
    ifoto
        97
    ifoto  
       2020-05-10 19:06:24 +08:00
    你着单子多大呢。我有点心得
    realpg
        98
    realpg  
    PRO
       2020-05-11 10:11:29 +08:00
    从 15 楼言论来看:

    墙外的聊天工具使用依托于 vpn,而 vpn,就我目前用的,不是时时刻刻都稳定,而且墙外的聊天工具也不是很随便让你发什么,虽然比国内自由点是肯定的

    楼主是要搞色情,没准还是儿童色情或者偷拍。因为成人色情在很多墙外 IM 都是合法的
    yuxizhe
        99
    yuxizhe  
       2020-05-15 13:16:04 +08:00   1
    @lshero firebase 实时数据库 realtime database
    tctc4869
        100
    tctc4869  
    OP
       2020-06-29 15:06:38 +08:00
    @cjjia telegram 代理?为一个网址服务挂代理?
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3061 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 12:44 PVG 20:44 LAX 05:44 JFK 08:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86