V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  程序员

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

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

    想自己搭建私有的 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))
    100 条回复    2020-06-29 15:06:38 +08:00
    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  
       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  
       2020-05-09 15:58:32 +08:00
    另外 telegram 和 Keybase 也是服务端客户端等全开源,也可以自己部署编译出来一个用(好像有个 Potato 就是把 TG 包装了一下)
    Garland
        25
    Garland  
       2020-05-09 16:00:19 +08:00
    服务端这里的作用是啥呢?
    janus77
        26
    janus77  
       2020-05-09 16:01:45 +08:00
    你这个想法有漏洞啊,如果你寄希望于服务商保证你的信息安全,那为啥又不在乎网监的审查呢……
    如果是公开提供服务的服务商,那被审查是必然的,不要抱希望了
    如果是你自建,那这方面的框架确实有,但是他本身的安全性设计(加密方案等)应该不会很高,有可能被中间截获,依然有风险
    tctc4869
        27
    tctc4869  
    OP
       2020-05-09 16:08:42 +08:00
    @SingeeKing 这个需要注册企业把?
    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 “实时盯着一个群“ ,这有一个前提,除了我和朋友透露了这个聊天群组系统的存在,有谁会知道我在云服务器上部署是不是私人聊天服务系统?没人知道哪会有人盯着啊。
    janus77
        39
    janus77  
       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 或内置的?
    jakehu
        42
    jakehu  
       2020-05-09 16:43:51 +08:00
    群晖 我之前用过 群晖的 chat
    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  
       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 代理?为一个网址服务挂代理?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1504 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:44 · PVG 01:44 · LAX 10:44 · JFK 13:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.