大家好,我是 Java陳序員。
之前,給大家推薦過幾款開源聊天工具。
-
極速、便捷!一個接入 AI 的匿名在線即時聊天室!
-
太強了!這款仿微信的聊天工具開源了!
-
一款極簡的聊天應用
今天,再給大家推薦一款高顏值的即時通訊聊天應用,輕量且高性能!
關注微信公眾號:【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陳序員】,回覆【開源項目交流羣】進羣,或者通過公眾號下方的菜單添加個人微信,並備註【開源項目交流羣】,通過後拉你進羣。
大家的點贊、收藏和評論都是對作者的支持,如文章對你有幫助還請點贊轉發支持下,謝謝!