开源企业级 IM!一款高颜值的即时通讯聊天应用!

大家好,我是 Java陈序员

之前,给大家推荐过几款开源聊天工具。

今天,再给大家推荐一款高颜值的即时通讯聊天应用,轻量且高性能!

关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。

项目介绍

TangSengDaoDaoServer —— 一款基于 GO 开发,轻量级,高性能,且重安全专注于私有化部署的开源即时通讯系统。

功能特色

  • 全局特性:消息加密传输,永久存储,并支持多端同步(App、Web、PC 等)
  • 通讯功能:支持单聊和群聊,具备消息撤回功能,群聊人数无限制,支持群机器人
  • 用户关系管理:支持好友搜索、添加,可设置免打扰、置顶等,支持通用的群管理功能(群设置配置、成员管理等)
  • 后台管理:提供了完善的后台管理功能,方便管理员对系统进行全方位的运营和维护,涵盖用户管理、群组管理、消息管理、应用配置等多个维度
  • 多平台支持:提供 Web/PC 端、Android、iOS、Windows、MAC 端等多端体验

项目架构

快速上手

TangSengDaoDaoServer 支持使用 Docker 部署,可通过 Docker Compose 快速部署。

环境要求

  • Linux系统(建议配置 2 核 8G)
  • Docker
  • Docker Compose

1、创建安装目录

mkdir -p /data/software/tsdd

cd /data/software/tsdd

2、在 tsdd 下创建 docker-compose.yaml 文件

vi docker-compose.yaml

3、复制如下内容到 docker-compose.yaml 文件中并保存

version: '3.1'
services:
  wukongim:  # 唐僧叨叨通讯服务(悟空IM)
    image: registry.cn-shanghai.aliyuncs.com/wukongim/wukongim:v2
    restart: always
    ports:
      # - "5001:5001" # http api端口(业务端调用,仅限内网开放)
      - "5100:5100"  # tcp长连接端口(外网开放)
      - "5200:5200" # websocket端口(外网开放)
      - "5300:5300" # 监控端口
    volumes:
      - ./wukongim:/root/wukongim
    env_file:
      - .env
    environment:
      - WK_EXTERNAL_IP=${EXTERNAL_IP}
  tangsengdaodaoserver:  # 唐僧叨叨的业务服务
    image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaoserver:v1.5
    restart: always
    command: "api"
    healthcheck:
      test: "wget -q -Y off -O /dev/null http://localhost:8090/v1/ping > /dev/null 2>&1"
      interval: 10s
      timeout: 10s
      retries: 3
    depends_on:
       - redis
       - mysql
       - wukongim
    ports:
      - "8090:8090"
    volumes:
      - ./data:/home/tsdddata
      - ./conf:/home/configs  # 如果需要使用yaml配置,在当前目录下创建tsdd/configs目录,并新建tsdd.yaml配置文件(注意:配置生效优先级environment高于配置文件,如果你配置了environment将覆盖tsdd.yaml的配置项)
    env_file:
      - .env
    environment:
      - TS_DB_MYSQLADDR=root:${MYSQL_ROOT_PASSWORD}@tcp(mysql)/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=true&loc=Local
      - TS_EXTERNAL_IP=${EXTERNAL_IP}
      - TS_FILESERVICE=${TS_FILESERVICE}
      - TS_MINIO_ACCESSKEYID=${MINIO_ROOT_USER}
      - TS_MINIO_SECRETACCESSKEY=${MINIO_ROOT_PASSWORD}
  tangsengdaodaoweb:  # 唐僧叨叨的web服务
    image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaoweb:latest
    restart: always
    environment:
      - API_URL=http://tangsengdaodaoserver:8090/
    ports:
      - "82:80"
    depends_on:
      tangsengdaodaoserver:
        condition: service_healthy      
  tangsengdaodaomanager:  # 唐僧叨叨的后台管理系统
    image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaomanager:latest
    restart: always
    environment:
      - API_URL=http://tangsengdaodaoserver:8090/
    ports:
      - "83:80"
    depends_on:
      tangsengdaodaoserver:
        condition: service_healthy      
  minio: # minio文件管理服务
    image: registry.cn-shanghai.aliyuncs.com/wukongim/minio:RELEASE.2023-07-18T17-49-40Z # minio/minio:RELEASE.2023-07-18T17-49-40Z
    expose:
      - "9000"
      - "9001"
    command: "server /data --console-address ':9001'"
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      - MINIO_ROOT_USER=${MINIO_ROOT_USER}
      - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
    volumes:
      - ./miniodata:/data
  mysql:  # mysql数据库
    image: registry.cn-shanghai.aliyuncs.com/wukongim/mysql:8.0.33 # mysql:8.0.33
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
    volumes:
      - ./mysqldata:/var/lib/mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
  redis:  # redis
    image: registry.cn-shanghai.aliyuncs.com/wukongim/redis:7.2.3 # redis:7.2.3
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 1s
      timeout: 3s
      retries: 30
  adminer:  # mysql web管理工具 调试用,为了安全生产不要打开
    image: registry.cn-shanghai.aliyuncs.com/wukongim/adminer:latest # adminer:latest
    ports:
      - 8306:8080

4、创建配置文件 .env

vi .env

5、复制如下内容到 .env 文件中,并保存

EXTERNAL_IP 必须修改为服务器的 IP 地址,其他参数都可使用默认值。

# ######### 基础配置 #########

# 服务器的对外 IP 地址
EXTERNAL_IP=xxx.xxx.xxx.xxx

# MySQL root 用户的密码
MYSQL_ROOT_PASSWORD=Aa1234567
# MySQL 默认数据库名字
MYSQL_DATABASE=im

# ######### Minio文件服务配置 #########

# Minio 文件服务的用户名
MINIO_ROOT_USER=minio
# Minio 文件服务的密码
MINIO_ROOT_PASSWORD=Aa1234567

######### WuKongIM相关的配置 #########

# 模式 debug or release
WK_MODE=release  
# 开启最近会话服务端维护
WK_CONVERSATION_ON=true  
# 业务服务的grpc地址
WK_WEBHOOK_GRPCADDR=tangsengdaodaoserver:6979 
# 业务服务的数据源地址
WK_DATASOURCE_ADDR=http://tangsengdaodaoserver:8090/v1/datasource 
# 开启频道信息同步
WK_DATASOURCE_CHANNELINFOON=true 
# 开启token认证
WK_TOKENAUTHON=true  
# 是否关闭个人白名单功能,默认是开启的,如果关闭发送消息将不做好友关系的判断
WK_WHITELISTOFFOFPERSON=false 
# JWT的密钥
WK_JWT_SECRET=wk_secret_123
# 默认安装搜索插件
WK_PLUGIN_INSTALL=https://gitee.com/WuKongDev/plugins/releases/download/latest/wk.plugin.search-${os}-${arch}.wkp

######### TangSengDaoDao的配置 #########

# 模式 debug or release
TS_MODE=release  
# wukongim的内网访问地址
TS_WUKONGIM_APIURL=http://wukongim:5001
# Redis 连接地址
TS_DB_REDISADDR=redis:6379
# 验证码,如果此值不为空,则使用此值作为验证码,为空则使用短信提供商发送的验证码
TS_SMSCODE=123456
# 使用文件服务的类型
TS_FILESERVICE=minio
# 默认头像获取地址
TS_AVATAR_DEFAULTBASEURL=https://api.dicebear.com/8.x/avataaars/png?seed={avatar}&size=180 # 备用https://robohash.org/{avatar}
# 唐僧叨叨后台管理系统的管理员密码,用户名为 superAdmin,可随机填写(至少8位)
TS_ADMINPWD=admin1234567
# 唐僧叨叨的文件服务地址
TS_MINIO_UPLOADURL=http://minio:9000

6、运行启动

docker-compose up -d

7、运行启动成功后,浏览器访问

  • Web 端
http://{IP/域名}:52

登录手机号和密码可通过后台新增用户进行注册。

  • 后台管理端
http://{IP/域名}:52

默认用户名/密码:superAdmin/admin1234567(密码为配置文件 TS_ADMINPWD 参数值).

功能体验

聊天界面

  • 私聊

  • 群聊

  • 暗黑主题

  • 通讯录

  • 个人信息

后台管理

  • 首页

  • 用户列表

  • 好友列表

  • 聊天记录

  • 群列表

  • 违禁词

  • 设置

TangSengDaoDaoServer 的开源特性意味着可以私有化部署,完全掌控数据安全,避免信息泄露风险,同时可根据业务需求进行定制开发。如果你正在寻找一款可靠的企业级即时通讯应用,不妨试试~

项目地址:https://github.com/TangSengDaoDao/TangSengDaoDaoServer

最后

推荐的开源项目已经收录到 GitHub 项目,欢迎 Star

https://github.com/chenyl8848/great-open-source-project

或者访问网站,进行在线浏览:

https://chencoding.top:8090/#/

我创建了一个开源项目交流群,方便大家在群里交流、讨论开源项目

但是任何人在群里打任何广告,都会被 T 掉

如果你对这个交流群感兴趣或者在使用开源项目中遇到问题,可以通过如下方式进群

关注微信公众号:【Java陈序员】,回复【开源项目交流群】进群,或者通过公众号下方的菜单添加个人微信,并备注【开源项目交流群】,通过后拉你进群

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!


posted @ 2025-12-01 09:27  Java陈序员  阅读(9)  评论(0)    收藏  举报