1.1 介绍
Tailchat
是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat
无限可能性。
前端微内核架构 + 后端微服务架构 使得 Tailchat
能够驾驭任何定制化/私有化的场景
特性
- 完整的即时通讯基础能力
- 插件化架构的赋予的自由拓展能力
- 微服务架构赋予的水平拓展能力
技术栈
- 前端
React
Redux
MiniStar
tailwindcss
iconify
- 后端
Nodejs
Socket.io
koa
moleculer
功能列表
- 用户管理
- 基于4位数字标识(战网like)的用户名系统
- 好友管理
- 聊天系统
- 私聊
- 群聊
- 富文本消息
- 图片
- 链接
- 提及(@)
- 代码
- 插件系统
- 前端插件系统(基于
ministar
的微内核架构)- 自定义主题
- 自定义面板
- 自定义操作
- 消息内容转换
- ...
- 后端插件系统(基于
moleculer
的微服务架构)
- 前端插件系统(基于
- 开放平台
- Connect ID
- (其他正在开发中)
- 快速跳转
1.2 图片
2.1 搭建环境
建议最低配置:1核2G 我推荐服务器配置为:2c4g 系统:Debian 11(非必需DD用原来的系统也OK,之后教程都是用Debian或者Ubuntu搭建~) 安装好Docker、Docker-compose 【非必需但建议】域名一枚,并做好解析到服务器上 【非必需】提前安装好宝塔面板海外版本aapanel,并安装好Nginx
2.2 开始搭建(第一种方法)
安装docker(点我跳转)
创建安装目录
sudo -i
mkdir -p /root/data/docker_data/tailchat
cd /root/data/docker_data/tailchat
vim docker-compose.yml
输入以下内容
version: "3.3"
services:
# 应用网关
service-gateway:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/gateway
PORT: 3000
depends_on:
- mongo
- redis
labels:
- "traefik.enable=true"
- "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
- "traefik.http.services.api-gw.loadbalancer.server.port=3000"
networks:
- internal
# 用户服务
service-user:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/user/*
depends_on:
- mongo
- redis
networks:
- internal
# 群组服务
service-group:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/group/*
depends_on:
- mongo
- redis
networks:
- internal
# 聊天服务
service-chat:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/chat/*
depends_on:
- mongo
- redis
networks:
- internal
# 文件服务 / 插件注册中心 / 配置服务
service-file:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/file,core/plugin/registry,core/config
depends_on:
- mongo
- redis
- minio
networks:
- internal
service-openapi:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: openapi/app,openapi/oidc/oidc
OPENAPI_PORT: 3003
OPENAPI_UNDER_PROXY: "true"
depends_on:
- mongo
- redis
- minio
labels:
- "traefik.enable=true"
- "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
- "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
networks:
- internal
# 插件服务(所有插件)
service-all-plugins:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICEDIR: plugins
depends_on:
- mongo
- redis
- minio
networks:
- internal
# 数据库
mongo:
image: mongo:4
restart: on-failure
volumes:
- ./data:/data/db
networks:
- internal
# 数据缓存与中转通讯
redis:
image: redis:alpine
restart: on-failure
networks:
- internal
# 存储服务
minio:
image: minio/minio
restart: on-failure
networks:
- internal
environment:
MINIO_ROOT_USER: tailchat
MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
volumes:
- ./storage:/data
command: minio server /data --console-address ":9001"
# 路由转发
traefik:
image: traefik:v2.1
restart: unless-stopped
command:
- "--api.insecure=true" # Don't do that in production!
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:80"
- "--entryPoints.web.forwardedHeaders.insecure" # Not good
ports:
- 8080:80 # 8080可以改成自己服务器上没有被占用的端口
- 127.0.0.1:11001:8080 #11001同上
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- internal
- default
networks:
internal:
name: tailchat-internal
如果出现错位,使用宝塔,或者直接下载下面文件上传服务器
按一下esc,然后:wq 保存退出,之后,
vim docker-compose.env
写入下面内容:
LOGGER=true
LOGLEVEL=info
SERVICEDIR=services
TRANSPORTER=redis://redis:6379
CACHER=redis://redis:6379
REDIS_URL=redis://redis:6379
MONGO_URL=mongodb://mongo/tailchat
SECRET=........ # 改成自己的密钥
# file
API_URL=https://www.beiweidoge.top # 改成自己的网站
# minio
MINIO_URL=minio:9000
MINIO_USER=tailchat
MINIO_PASS=com.msgbyte.tailchat
# SMTP
SMTP_SENDER=
SMTP_URI=
# metrics
PROMETHEUS=1
按一下esc,然后:wq 保存退出,之后,
docker pull moonrailgun/tailchat
docker tag moonrailgun/tailchat tailchat # 修改tag以让配置文件能够识别
最后
cd /root/data/docker_data/tailchat # 确保来到docker-compose文件所在的文件夹下
# 确保配置文件(docker-compose.yml和docker-compose.env)在当前目录下
# 执行以下命令一键启动
docker-compose up -d
访问: http://<server ip>:8080 即可打开tailchat
2.3 开始搭建(第二种方法)
我们可以通过从公共镜像拉取已经编译好的镜像来快速搭建
使用已经编译好的镜像可以无需花费足够的计算机资源进行编译,对小资源配置的服务器会十分友好。另外相对于源码编译,公共镜像的代码更加稳定。
使用Docker原生命令手动安装:
docker pull moonrailgun/tailchat
docker tag moonrailgun/tailchat tailchat
启动之前需要下载配置文件以告知 docker-compose
要如何启动镜像
mkdir tailchat && cd tailchat
wget https://raw.githubusercontent.com/msgbyte/tailchat/master/docker-compose.yml
wget https://raw.githubusercontent.com/msgbyte/tailchat/master/docker-compose.env
最后
docker compose up -d
访问: http://<server ip>:11000
即可打开
ENG 结尾
祝大家用得开心,有问题可以在评论区互相交流探讨
© 版权声明
THE END
暂无评论内容