基于 Go 的开源企业级即时通讯系统 TangSengDaoDaoServer
TangSengDaoDaoServer 是一款基于 Go 语言开发的开源企业级即时通讯系统,支持私有化部署与多端同步。系统具备消息加密传输、永久存储、单聊群聊、消息撤回及群机器人等功能,并提供完善的后台管理模块。通过 Docker Compose 可快速部署,依赖 MySQL、Redis、MinIO 等组件。支持 Web、PC、Android、iOS 等多平台客户端,适合需要数据自主可控的企业场景。

TangSengDaoDaoServer 是一款基于 Go 语言开发的开源企业级即时通讯系统,支持私有化部署与多端同步。系统具备消息加密传输、永久存储、单聊群聊、消息撤回及群机器人等功能,并提供完善的后台管理模块。通过 Docker Compose 可快速部署,依赖 MySQL、Redis、MinIO 等组件。支持 Web、PC、Android、iOS 等多平台客户端,适合需要数据自主可控的企业场景。

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

TangSengDaoDaoServer 支持使用 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
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
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
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
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
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、运行启动成功后,浏览器访问
http://{IP/域名}:52
登录手机号和密码可通过后台新增用户进行注册。
http://{IP/域名}:52
默认用户名/密码:
superAdmin/admin1234567(密码为配置文件TS_ADMINPWD参数值).






用户列表
好友列表





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

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online