Перейти к содержанию

Обзор развертывания Chatwoot на сервере

Предварительные требования

Для корректной работы приложения требуются следующие параметры и компоненты:

  • Операционная система: Ubuntu или Debian.

  • Права доступа: Права суперпользователя (root) для установки системных пакетов.

  • Доступные порты:

  • 80 (HTTP) — для конфигурации Nginx и получения SSL-сертификатов.

  • 443 (HTTPS) — основной порт доступа к приложению.

  • 3000 (внутренний) — используется контейнером приложения.

FDQN итоговой панели на домене hostkey.in

Для доступа к интерфейсу Chatwoot используется следующий шаблон доменного имени:

Параметр Значение
Префикс chatwoot
Домен hostkey.in
Полный шаблон chatwoot{Server_ID_from_Invapi}.hostkey.in

Структура файлов и каталогов

Все основные файлы приложения и данные сосредоточены в директории /opt/chatwoot:

  • /opt/chatwoot/.env — конфигурационный файл с переменными окружения.

  • /opt/chatwoot/docker-compose.yml — файл управления контейнерами Docker.

  • /opt/chatwoot/storage_data — том для хранения медиафайлов и загрузок.

  • /var/lib/postgresql/data (внутри тома postgres_data) — данные базы данных.

  • /var/lib/redis/data (внутри тома redis_data) — данные Redis.

Процесс установки приложения

Развертывание приложения выполняется в несколько этапов:

  1. Подготовка системы:

  2. Удаление старых ключей и репозиториев Docker.

  3. Установка необходимых системных пакетов: ca-certificates, curl, git, wget.

  4. Добавление официального GPG-ключа Docker и настройка репозитория.

  5. Установка среды выполнения:

  6. Установка docker-ce и плагина docker-compose-plugin.

  7. Запуск и активация службы Docker.

  8. Настройка приложения:

  9. Создание директории /opt/chatwoot.

  10. Развертывание файла конфигурации .env на основе примера.

  11. Автоматическая генерация уникального ключа SECRET_KEY_BASE (если он не задан).

  12. Настройка параметров: URL фронтенда, пароли для баз данных и Redis, разрешение регистрации пользователей.

  13. Инициализация базы данных:

  14. Выполнение команды подготовки структуры базы данных через контейнер приложения.

  15. Запуск сервисов:

  16. Развертывание всех контейнеров Docker в фоновом режиме.

  17. Настройка веб-сервера и SSL:

  18. Установка nginx и создание конфигурации проксирования на порт 3000.

  19. Получение SSL-сертификата через Certbot для обеспечения работы по протоколу HTTPS.

Права доступа и безопасность

  • Брандмауэр: Должны быть открыты порты 80 и 443.

  • Безопасность Docker: Все контейнеры базы данных и Redis проброшены только на локальный интерфейс 127.0.0.1, что ограничивает доступ к ним извне.

  • Конфиденциальность: Пароли для баз данных (chatwoot) и секретные ключи генерируются автоматически при установке.

Базы данных

Приложение использует две базы данных, работающие в контейнерах:

Компонент Образ Назначение
PostgreSQL pgvector/pgvector:pg16 Основное хранилище данных приложения
Redis redis:alpine Хранение сессий и очередей задач

Контейнеры Docker и их запуск

Приложение разворачивается в составе группы контейнеров, управляемых через docker compose. Все сервисы имеют политику автоматического перезапуска (always).

Имя сервиса Образ Порты (локальные) Тома (Volumes) Особенности
rails chatwoot/chatwoot:latest 127.0.0.1:3000:3000 storage_data:/app/storage Основной сервис приложения (Rails)
sidekiq chatwoot/chatwoot:latest — storage_data:/app/storage Обработка фоновых задач
postgres pgvector/pgvector:pg16 127.0.0.1:5432:5432 postgres_data:/var/lib/postgresql/data База данных с поддержкой векторов
redis redis:alpine 127.0.0.1:6379:6379 redis_data:/data Хранилище в памяти (с паролем)

Инструкция по обновлению приложения

Для обновления основного приложения необходимо выполнить следующие действия:

cd /opt/chatwoot
docker compose pull && docker compose up -d

Расположение конфигурационных файлов и данных

  • Конфигурация окружения: /opt/chatwoot/.env

  • Docker Compose: /opt/chatwoot/docker-compose.yml

  • Конфигурация Nginx: /etc/nginx/sites-available/{prefix}{server_id}.{zone}

Доступные порты для подключения

  • Внешний доступ: 443 (HTTPS) через доменное имя.

  • Локальный доступ (внутри сервера): 3000 (приложение), 5432 (PostgreSQL), 6379 (Redis).

Запуск, остановка приложения

Управление контейнерами осуществляется из директории /opt/chatwoot:

  • Запуск всех сервисов:

    docker compose up -d
    

  • Остановка всех сервисов:

    docker compose down
    

  • Перезапуск основного приложения и фоновых задач:

    docker compose restart rails sidekiq
    

Прокси серверы

Для обеспечения работы через интернет используется Nginx в качестве обратного прокси (Reverse Proxy). Он перенаправляет трафик с порта 80/443 на внутренний порт приложения 3000. Для защиты соединения и шифрования трафика используется Certbot, который предоставляет SSL-сертификаты от Let's Encrypt.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×