唐僧叨叨,一款开源即时通讯聊天软件

发布时间: 2024-09-21

介绍:

唐僧叨叨是一款轻量级,高性能,重安全,专注于私有化部署的开源即时通讯系统。

特点:

  • 🆓 开源免费:服务端源码,APP源码,Web/PC端源码全部开源,Apache2.0开源协议(可商用),没人能拿捏你
  • 🔏 私有化部署:所有程序和数据都在自己的服务器上,不用担心数据泄露,不用担心数据被用于其他用途
  • 🆚 消息必达:采用 tcp + ack机制,保证消息必达,支持离线消息,支持消息漫游。
  • 🔐 内容安全:消息传输采用私有二进制加密协议、DH+流式加密,防止消息内容泄露
  • 💽 消息永久存储:消息支持永久存储,得益于WuKongIM的自研消息db,永久存储不影响性能,只浪费点磁盘空间
  • 📱 多设备消息同步:支持 1 个移动端、多个 Web/PC 端同时在线,并且支持多端之间的消息实时同步。
  • 📟 全平台支持:iOS,Android,Windows,MAC,Ubuntu,Web

提示:

在自部署客户端中,新用户注册必须使用iOS/Android应用,且无法进行密码找回
开源版有很多功能无法使用,更推荐使用Tailchat
部署教程:https://www.upx8.com/4335

环境要求:

配置>=2H8G

部署方法:

第一步:更新源

Ubuntu/Debian:

apt update -y && apt upgrade -y    
Bash

Centos:

yum update -y && yum upgrade -y   
Bash

第二步:安装并配置Docker

安装Docker:

curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh ./get-docker.sh
Bash

启动Docker:

sudo systemctl start docker
Bash

设置Docker在开机时自动启动:

sudo systemctl enable docker
Bash

第三步:创建安装目录

sudo mkdir -p ~/tsdd && cd ~/tsdd
Bash

第四步:配置参数

  1. 配置docker-compose.yaml 文件

    nano docker-compose.yaml
    Bash

    填入以下内容:

    version: '3.1'
    services:
      wukongim:  # 唐僧叨叨通讯服务(悟空IM)
     image: registry.cn-shanghai.aliyuncs.com/wukongim/wukongim:latest
     restart: always
     ports:
       # - "5001:5001" # http api端口(业务端调用,仅限内网开放) 
       - "5100:5100"  # tcp长连接端口(外网开放)
       - "5200:5200" # websocket端口(外网开放)
       - "5300:5300" # 监控端口
     volumes:
       - ./wukongim:/root/wukongim
     environment:
       - WK_MODE=${WK_MODE}
       - WK_EXTERNAL_IP=${EXTERNAL_IP}
       - WK_CONVERSATION_ON=true
       - WK_WEBHOOK_GRPCADDR=tangsengdaodaoserver:6979
       - WK_DATASOURCE_ADDR=http://tangsengdaodaoserver:8090/v1/datasource
       - WK_DATASOURCE_CHANNELINFOON=true
       - WK_TOKENAUTHON=true  
      tangsengdaodaoserver:  # 唐僧叨叨的业务服务
     image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaoserver:latest
     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:
       - ./tsdd:/home/tsdddata
       # - ./tsdd/configs/tsdd.yaml:/home/configs/tsdd.yaml
     environment:
       - TS_MODE=${TS_MODE}
       - TS_WUKONGIM_APIURL=http://wukongim:5001
       - TS_DB_MYSQLADDR=root:${MYSQL_ROOT_PASSWORD}@tcp(mysql)/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=true&loc=Local
       - TS_DB_REDISADDR=redis:6379
       - TS_EXTERNAL_IP=${EXTERNAL_IP}
       - TS_SMSCODE=${TS_SMSCODE}
       - TS_FILESERVICE=${TS_FILESERVICE}
       - TS_MINIO_ACCESSKEYID=${MINIO_ROOT_USER}
       - TS_MINIO_SECRETACCESSKEY=${MINIO_ROOT_PASSWORD}
       - TS_AVATAR_DEFAULTBASEURL=https://api.multiavatar.com/{avatar}.png
      tangsengdaodaoweb:  # 唐僧叨叨的web服务
     image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaoweb:latest
     restart: always
     environment:
       - API_URL=http://${EXTERNAL_IP}:8090/
     ports:
       - "82:80" 
      tangsengdaodaomanager:  # 唐僧叨叨的后台管理系统
     image: registry.cn-shanghai.aliyuncs.com/wukongim/tangsengdaodaomanager:latest
     restart: always
     environment:
       - API_URL=http://${EXTERNAL_IP}:8090/
     ports:
       - "83:80"    
      minio: # minio文件管理服务
     image: minio/minio:latest # use a remote image
     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: mysql:latest
     command: --default-authentication-plugin=mysql_native_password
     healthcheck:
       test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
     environment:
       - TZ=Asia/Shanghai
       - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
       - MYSQL_DATABASE=${MYSQL_DATABASE}
     volumes:
       - ./mysqldata:/var/lib/mysql                    
      redis:  # redis
     image: redis
     restart: always
     healthcheck:
       test: ["CMD", "redis-cli", "ping"]
       interval: 1s
       timeout: 3s
       retries: 30
      adminer:  # mysql web管理工具 调试用,为了安全生产不要打开
    image: adminer:latest
    ports:
      - 8306:8080
    Bash
  2. 配置.env 文件

    nano .env
    Bash

    填入以下内容:

    # Common config
    
    # The IP address of the server.
    EXTERNAL_IP=
    
    # MYSQL Config
    
     # The password of the root user of the mysql database
    MYSQL_ROOT_PASSWORD=
    # The name of the mysql database
    MYSQL_DATABASE=im
    
    # Minio Config
    
    # The access key ID of the minio file service
    MINIO_ROOT_USER=minio
    # The secret access key of the minio file service
    MINIO_ROOT_PASSWORD=
    
    # WuKongIM Config
    
    # debug or release
    WK_MODE=debug
    
    # TangSengDaoDao Config
    
    # File service type, default is minio
    TS_FILESERVICE=minio
    # debug or release
    TS_MODE=debug
    # The SMS code for testing, if it is not empty, the SMS code will be this value (If you need to configure real SMS, please refer to the SMS configuration in the complete configuration)
    TS_SMSCODE=123456
    Bash

    需要修改如下参数:

  3. EXTERNAL_IP:服务器的对外IP地址
  • MYSQL_ROOT_PASSWORD:mysql数据库的root用户密码,随机填写
  • MINIO_ROOT_PASSWORD:minio 文件服务的密码,随机填写(至少8位)
  • TS_SMSCODE:手机注册默认的短信验证码

    第五步:启动 Docker 容器

    docker compose up -d
    Bash

    并对如下端口进行开放:

    端口 说明
    8090 API端口
    82 Web IM 端口
    5100 TCP长连接端口
    5200 Websocket端口
    9000 minio文件服务端口
    9001 minio文件管理端口 (非必须)
    8306 mysql web管理端端口 (非必须)

    部署完成后可以访问 https://<your-ip>:82 来访问唐僧叨叨

    第六步:注册新用户

登录手机端,点击右上角的设置

在服务器配置中服务器地址为服务器IP地址,端口为8090,配置完成后点击提交按钮

返回登录界面,长按欢迎登录唐僧叨叨按钮进入隐藏登录界面

在此页面中短信验证码输入刚才设置的TS_SMSCODE即可进行注册,无须实际发码验证

注册成功后即可在Web端使用账号密码登录或使用手机号进行登录

相关地址:

官方地址:https://tangsengdaodao.com

GitHub地址:https://github.com/TangSengDaoDao/TangSengDaoDaoServer

请在下方留下您的评论.加入TG吹水群