使用Docker-compose搭建TailChat即时通讯平台

使用Docker-compose搭建TailChat即时通讯平台

前言

TailChat是一个非常好用的开源即时通讯平台,在本文发布前,已经在Github斩获了3.6K Stars,支持多种方式部署,比较简单方便的还是Docker-compose的方式部署,本文就介绍了用Docker-compose搭建TailChat的详细教程和一些注意事项。

安装

第一步:创建安装目录

你得有Docker和Docker-compose才能完成安装,没有可以先去装一下,参考这篇文章

# 创建一个目录,用于安装TailChat
mkdir -p /opt/tailchat
# 切换到TailChat的安装目录
cd /opt/tailchat

第二步:编辑文件

# 编辑Docker容器编排文件
vim docker-compose.yml

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: P@ssw0rd123456
    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
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - internal
      - default

networks:
  internal:
    name: tailchat-internal

编辑环境变量文件

vim docker-compose.env

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=P@ssw0rd123456  # 改成自己的密钥,重要!一定要改!!!

# file
API_URL=http://192.168.80.8  # 改成自己的网站实际访问地址或域名

# minio
MINIO_URL=minio:9000
MINIO_USER=tailchat
MINIO_PASS=P@ssw0rd123456   # 改成自己的密码,重要!一定要改!!!

# SMTP
# 如果需要邮件功能可以在这里填写,但我建议搭好后去界面里填
SMTP_SENDER=    # 发件人,就是邮箱
SMTP_URI=       # 发件URI,比如:smtp.qq.com

# metrics
PROMETHEUS=1

第三步:拉取镜像

docker pull moonrailgun/tailchat
docker tag moonrailgun/tailchat tailchat # 与配置文件填的一致,没有改就默认tailchat

第五步:创建服务,部署!

在之前的安装目录里执行:

docker-compose up -d

等待跑完,就安装完成了

默认访问地址为 http://服务器IP地址:8080

搭建完成后的样子
搭建完成后的样子

Meilisearch太吃内存了,吐槽 2026-02-27
忘了冰点还原的密码,下了个密码查看器?别急,可能是木马! 2026-02-25

评论区