经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
使用 Docker 部署 TailChat 开源即时通讯平台
来源:cnblogs  作者:谱次·  时间:2024/4/23 11:23:17  对本文有异议

1)介绍 TailChat

官网: https://tailchat.msgbyte.com/
作者:https://www.moonrailgun.com/about/
GitHub : https://github.com/msgbyte/tailchat

TailChat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。前端微内核架构 + 后端微服务架构。使得 Tailchat 能够驾驭任何定制化 / 私有化的场景。面向企业与私域用户打造,高度自由的群组管理与定制化的面板展示可以让私域主能够更好的展示自己的作品,管理用户,打造自己的品牌与圈子。

image.png

2)TailChat 功能

参考:https://blog.laoda.de/archives/docker-compose-install-tailchat

  • 注重隐私:只有被邀请的成员才能加入群组
  • 防止陌生人: 只有通过昵称 + 一串随机的数字才能添加好友
  • 二维的群组空间: 通过频道来分割不同的话题
  • 高度自定义的群组空间: 通过分组和拖拽来创建独创的群组空间。
    • 同时可以通过更多的插件来增加更多的能力
  • 可以严谨,也可以乐趣。 通过插件的组合可以创造用于不同场景的 Tailchat。可以是面向娱乐,也可以是面向企业。
  • 后端微服务架构: 已经为大规模部署做好了准备。不用担心用户量大了以后怎么办
  • 用户管理
    • 基于 4 位数字标识 (战网like) 的用户名系统
    • 好友管理
  • 聊天系统
    • 私聊
    • 群聊
    • 富文本消息
      • 图片
      • 链接
      • 提及(@)
      • 代码
  • 插件系统
    • 前端插件系统 (基于 ministar 的微内核架构)
      • 自定义主题
      • 自定义面板
      • 自定义操作
      • 消息内容转换
      • ...
    • 后端插件系统 ( 基于 moleculer 的微服务架构 )

3)使用场景

个人用户

  • 如果希望和朋友一起玩

    • 创建一个群组
    • 通过多个频道分割不同的话题
    • 使用网页面板来分享喜欢的网页
  • 如果希望聚集自己的粉丝圈

    • 使用机器人来订阅自己的信息并转发到聊天面板
    • 让自己的粉丝集中在一起,不需要创建无数个 qq 群/微信群
    • 多个频道让多个话题能够一起产生
  • 如果对于自己的隐私非常看中

    • 自己部署让一切都能掌控在手中

企业用户

  • 面板化设计满足企业自定义化设计需求

  • 插件化架构可以方便基于核心进行二次开发

  • 自部署的实现可以让企业价值得到保护,让企业安心

  • 开源代码方便审查

4)部署安装

4.1)安装 Docker 环境

  1. # 高版本 Docker 安装
  2. curl -fsSL https://get.docker.com/ | sh
  1. # 关闭防火墙
  2. systemctl disable --now firewalld
  3. setenforce 0
  1. # 启用 Docker
  2. systemctl enable --now docker

4.2)开启 IPv4 forwarding

  1. echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
  2. systemctl restart network
  3. sysctl net.ipv4.ip_forward

4.3)安装 Docker-compose

  1. curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
  1. chmod +x /usr/local/bin/docker-compose
  1. docker-compose -v

4.4)创建 TailChat 目录

  1. mkdir -p /docker/tailchat
  2. cd /docker/tailchat

5)基于 Docker-compose 部署服务

  1. vim docker-compose.yml
  1. version: "3.3"
  2. services:
  3. # 应用网关
  4. service-gateway:
  5. build:
  6. context: .
  7. image: tailchat
  8. restart: unless-stopped
  9. env_file: docker-compose.env
  10. environment:
  11. SERVICES: core/gateway
  12. PORT: 3000
  13. depends_on:
  14. - mongo
  15. - redis
  16. labels:
  17. - "traefik.enable=true"
  18. - "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
  19. - "traefik.http.services.api-gw.loadbalancer.server.port=3000"
  20. networks:
  21. - internal
  22. # 用户服务
  23. service-user:
  24. build:
  25. context: .
  26. image: tailchat
  27. restart: unless-stopped
  28. env_file: docker-compose.env
  29. environment:
  30. SERVICES: core/user/*
  31. depends_on:
  32. - mongo
  33. - redis
  34. networks:
  35. - internal
  36. # 群组服务
  37. service-group:
  38. build:
  39. context: .
  40. image: tailchat
  41. restart: unless-stopped
  42. env_file: docker-compose.env
  43. environment:
  44. SERVICES: core/group/*
  45. depends_on:
  46. - mongo
  47. - redis
  48. networks:
  49. - internal
  50. # 聊天服务
  51. service-chat:
  52. build:
  53. context: .
  54. image: tailchat
  55. restart: unless-stopped
  56. env_file: docker-compose.env
  57. environment:
  58. SERVICES: core/chat/*
  59. depends_on:
  60. - mongo
  61. - redis
  62. networks:
  63. - internal
  64. # 文件服务 / 插件注册中心 / 配置服务
  65. service-file:
  66. build:
  67. context: .
  68. image: tailchat
  69. restart: unless-stopped
  70. env_file: docker-compose.env
  71. environment:
  72. SERVICES: core/file,core/plugin/registry,core/config
  73. depends_on:
  74. - mongo
  75. - redis
  76. - minio
  77. networks:
  78. - internal
  79. service-openapi:
  80. build:
  81. context: .
  82. image: tailchat
  83. restart: unless-stopped
  84. env_file: docker-compose.env
  85. environment:
  86. SERVICES: openapi/app,openapi/oidc/oidc
  87. OPENAPI_PORT: 3003
  88. OPENAPI_UNDER_PROXY: "true"
  89. depends_on:
  90. - mongo
  91. - redis
  92. - minio
  93. labels:
  94. - "traefik.enable=true"
  95. - "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
  96. - "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
  97. networks:
  98. - internal
  99. # 插件服务(所有插件)
  100. service-all-plugins:
  101. build:
  102. context: .
  103. image: tailchat
  104. restart: unless-stopped
  105. env_file: docker-compose.env
  106. environment:
  107. SERVICEDIR: plugins
  108. depends_on:
  109. - mongo
  110. - redis
  111. - minio
  112. networks:
  113. - internal
  114. # 数据库
  115. mongo:
  116. image: mongo:4
  117. restart: on-failure
  118. volumes:
  119. - ./data:/data/db
  120. networks:
  121. - internal
  122. # 数据缓存与中转通讯
  123. redis:
  124. image: redis:alpine
  125. restart: on-failure
  126. networks:
  127. - internal
  128. # 存储服务
  129. minio:
  130. image: minio/minio
  131. restart: on-failure
  132. networks:
  133. - internal
  134. environment:
  135. MINIO_ROOT_USER: tailchat
  136. MINIO_ROOT_PASSWORD: P@ssw0rd123456
  137. volumes:
  138. - ./storage:/data
  139. command: minio server /data --console-address ":9001"
  140. # 路由转发
  141. traefik:
  142. image: traefik:v2.1
  143. restart: unless-stopped
  144. command:
  145. - "--api.insecure=true" # Don't do that in production!
  146. - "--providers.docker=true"
  147. - "--providers.docker.exposedbydefault=false"
  148. - "--entryPoints.web.address=:80"
  149. - "--entryPoints.web.forwardedHeaders.insecure" # Not good
  150. ports:
  151. - 8080:80 # 8080 可以改成自己服务器上没有被占用的端口
  152. - 127.0.0.1:11001:8080 # 11001 同上
  153. volumes:
  154. - /var/run/docker.sock:/var/run/docker.sock:ro
  155. networks:
  156. - internal
  157. - default
  158. networks:
  159. internal:
  160. name: tailchat-internal

5.1)创建环境变量文件

  1. vim docker-compose.env
  1. LOGGER=true
  2. LOGLEVEL=info
  3. SERVICEDIR=services
  4. TRANSPORTER=redis://redis:6379
  5. CACHER=redis://redis:6379
  6. REDIS_URL=redis://redis:6379
  7. MONGO_URL=mongodb://mongo/tailchat
  8. SECRET=P@ssw0rd123456 # 改成自己的密钥
  9. # file
  10. API_URL=http://192.168.80.8 # 改成自己的网站
  11. # minio
  12. MINIO_URL=minio:9000
  13. MINIO_USER=tailchat
  14. MINIO_PASS=P@ssw0rd123456
  15. # SMTP
  16. SMTP_SENDER=
  17. SMTP_URI=
  18. # metrics
  19. PROMETHEUS=1

5.2)拉取镜像

  1. docker pull moonrailgun/tailchat
  2. docker tag moonrailgun/tailchat tailchat # 修改 tag 以让配置文件能够识别

5.3)创建服务

  1. cd /docker/tailchat # 确保来到 docker-compose 文件所在的文件夹下
  2. # 确保配置文件 ( docker-compose.yml 和 docker-compose.env ) 在当前目录下
  3. # 执行如下命令一键启动
  4. docker-compose up -d

6)访问 TailChat

  1. http://服务器IP地址:8080

image.png
image.png
image.png
image.png
image.png
image.png

参考: 【好玩儿的Docker项目】激情畅聊!十分钟搭建一个插件化易拓展的开源即时聊天(IM)应用——Tailchat

原文链接:https://www.cnblogs.com/wuhanjiayou/p/18152457/TailChat

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号