唐僧叨叨,一款开源即时通讯聊天软件
介绍:
唐僧叨叨是一款轻量级,高性能,重安全,专注于私有化部署的开源即时通讯系统。
特点:
- 🆓 开源免费:服务端源码,APP源码,Web/PC端源码全部开源,Apache2.0开源协议(可商用),没人能拿捏你
- 🔏 私有化部署:所有程序和数据都在自己的服务器上,不用担心数据泄露,不用担心数据被用于其他用途
- 🆚 消息必达:采用 tcp + ack机制,保证消息必达,支持离线消息,支持消息漫游。
- 🔐 内容安全:消息传输采用私有二进制加密协议、DH+流式加密,防止消息内容泄露
- 💽 消息永久存储:消息支持永久存储,得益于WuKongIM的自研消息db,永久存储不影响性能,只浪费点磁盘空间
- 📱 多设备消息同步:支持 1 个移动端、多个 Web/PC 端同时在线,并且支持多端之间的消息实时同步。
- 📟 全平台支持:iOS,Android,Windows,MAC,Ubuntu,Web
提示:
在自部署客户端中,新用户注册必须使用iOS/Android应用,且无法进行密码找回
开源版有很多功能无法使用,更推荐使用Tailchat
部署教程:https://blog.fuyiran.link/Technology/13.html
环境要求:
配置>=2H8G
部署方法:
第一步:更新源
Ubuntu/Debian:
apt update -y && apt upgrade -y
Centos:
yum update -y && yum upgrade -y
第二步:安装并配置Docker
安装Docker:
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh ./get-docker.sh
启动Docker:
sudo systemctl start docker
设置Docker在开机时自动启动:
sudo systemctl enable docker
第三步:创建安装目录
sudo mkdir -p ~/tsdd && cd ~/tsdd
第四步:配置参数
配置
docker-compose.yaml
文件nano docker-compose.yaml
填入以下内容:
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
配置
.env
文件nano .env
填入以下内容:
# 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
需要修改如下参数:
- EXTERNAL_IP:服务器的对外IP地址
- MYSQL_ROOT_PASSWORD:mysql数据库的root用户密码,随机填写
- MINIO_ROOT_PASSWORD:minio 文件服务的密码,随机填写(至少8位)
TS_SMSCODE:手机注册默认的短信验证码
第五步:启动 Docker 容器
docker compose up -d
并对如下端口进行开放:
端口 说明 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
原文链接:https://blog.fuyiran.link/Technology/44.html
版权声明:本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 傅说 (blog.fuyiran.link)