Пошаговая инструкция по установке Rocket.Chat с помощью Docker Compose и Traefik, включая создание каталога, всех необходимых файлов и запуск сервиса.

🧾 Требования

  • Установлен Docker и Docker Compose
  • DNS-запись A/AAAA или CNAME указывает на ваш сервер (chat.example.com)
  • Рабочий Traefik, настроенный на автоматическое получение TLS (например, через Let's Encrypt)
  • У пользователя есть доступ по SSH и права sudo

🛠️ Шаг 1: Создание рабочего каталога

mkdir -p ~/rocketchat && cd ~/rocketchat

🗂️ Шаг 2: Создание .env файла

Создайте файл .env:

nano .env

Вставьте в файл:

# Домен без https://
DOMAIN=chat.example.com

# Полный URL приложения
ROOT_URL=https://${DOMAIN}

# Порт приложения внутри контейнера
PORT=3000

# MongoDB
MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0
MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0

# Версии
RELEASE=latest
MONGODB_VERSION=6.0

# Настройки MongoDB
MONGODB_REPLICA_SET_NAME=rs0
MONGODB_PORT_NUMBER=27017
MONGODB_ADVERTISED_HOSTNAME=mongodb
MONGODB_ENABLE_JOURNAL=true
ALLOW_EMPTY_PASSWORD=yes

Сохраните: Ctrl+O, затем Enter Выйдите: Ctrl+X


📄 Шаг 3: Создание docker-compose.yml

Создайте файл:

nano docker-compose.yml

Вставьте:

version: '3.8'

services:
  rocketchat:
    image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE}
    container_name: rocketchat
    restart: always
    networks:
      - traefik_network
    labels:
      - "traefik.enable=true"
      - "traefik.http.middlewares.rocketchat_https.redirectscheme.scheme=https"
      - "traefik.http.routers.rocketchat.entrypoints=web"
      - "traefik.http.routers.rocketchat.middlewares=rocketchat_https@docker"
      - "traefik.http.routers.rocketchat.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.rocketchat_https.entrypoints=websecure"
      - "traefik.http.routers.rocketchat_https.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.rocketchat_https.tls=true"
      - "traefik.http.routers.rocketchat_https.tls.certresolver=le"
      - "traefik.http.services.rocketchat.loadbalancer.server.port=3000"
    environment:
      - DEPLOY_METHOD=docker
      - ROOT_URL=${ROOT_URL}
      - PORT=${PORT}
      - MONGO_URL=${MONGO_URL}
      - MONGO_OPLOG_URL=${MONGO_OPLOG_URL}
      - BROKER_TCP_PORT=40000
    depends_on:
      - mongodb
    expose:
      - "${PORT}"
    volumes:
      - uploads:/app/uploads
    extra_hosts:
      - "ipa-master.example.com:xxx.xxx.xxx.xxx"

  mongodb:
    image: docker.io/bitnami/mongodb:${MONGODB_VERSION}
    container_name: mongodb
    restart: always
    networks:
      - traefik_network
    volumes:
      - mongodb_data:/bitnami/mongodb
    environment:
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_REPLICA_SET_NAME=${MONGODB_REPLICA_SET_NAME}
      - MONGODB_PORT_NUMBER=${MONGODB_PORT_NUMBER}
      - MONGODB_ADVERTISED_HOSTNAME=${MONGODB_ADVERTISED_HOSTNAME}
      - MONGODB_ENABLE_JOURNAL=${MONGODB_ENABLE_JOURNAL}
      - ALLOW_EMPTY_PASSWORD=${ALLOW_EMPTY_PASSWORD}

volumes:
  uploads:
    driver: local
  mongodb_data:
    driver: local

networks:
  traefik_network:
    external: true

▶️ Запуск Rocket.Chat

docker compose --env-file .env up -d

🧪 Проверка

Откройте браузер и перейдите по адресу:

https://chat.example.com