利用 Docker 摆设 TailChat 开源即时通讯平台

[复制链接]
发表于 2026-2-8 19:37:02 | 显示全部楼层 |阅读模式
1)先容 TailChat

官网: https://tailchat.msgbyte.com/
作者:https://www.moonrailgun.com/about/
GitHub : https://github.com/msgbyte/tailchat
   TailChat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无穷大概性。前端微内核架构 + 后端微服务架构。使得 Tailchat 可以大概驾御任何定制化 / 私有化的场景。面向企业与私域用户打造,高度自由的群组管理与定制化的面板展示可以让私域主可以大概更好的展示自己的作品,管理用户,打造自己的品牌与圈子。
  

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
复制代码






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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表