博客 / 詳情

返回

開源企業級 IM!一款高顏值的即時通訊聊天應用!

大家好,我是 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陳序員】,回覆【開源項目交流羣】進羣,或者通過公眾號下方的菜單添加個人微信,並備註【開源項目交流羣】,通過後拉你進羣

大家的點贊、收藏和評論都是對作者的支持,如文章對你有幫助還請點贊轉發支持下,謝謝!


user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.