Обзор развертывания 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.
Процесс установки приложения¶
Развертывание приложения выполняется в несколько этапов:
-
Подготовка системы:
-
Удаление старых ключей и репозиториев Docker.
-
Установка необходимых системных пакетов:
ca-certificates,curl,git,wget. -
Добавление официального GPG-ключа Docker и настройка репозитория.
-
Установка среды выполнения:
-
Установка
docker-ceи плагинаdocker-compose-plugin. -
Запуск и активация службы Docker.
-
Настройка приложения:
-
Создание директории
/opt/chatwoot. -
Развертывание файла конфигурации
.envна основе примера. -
Автоматическая генерация уникального ключа
SECRET_KEY_BASE(если он не задан). -
Настройка параметров: URL фронтенда, пароли для баз данных и Redis, разрешение регистрации пользователей.
-
Инициализация базы данных:
-
Выполнение команды подготовки структуры базы данных через контейнер приложения.
-
Запуск сервисов:
-
Развертывание всех контейнеров Docker в фоновом режиме.
-
Настройка веб-сервера и SSL:
-
Установка
nginxи создание конфигурации проксирования на порт3000. -
Получение 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 | Хранилище в памяти (с паролем) |
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
Расположение конфигурационных файлов и данных¶
-
Конфигурация окружения:
/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:
-
Запуск всех сервисов:
-
Остановка всех сервисов:
-
Перезапуск основного приложения и фоновых задач:
Прокси серверы¶
Для обеспечения работы через интернет используется Nginx в качестве обратного прокси (Reverse Proxy). Он перенаправляет трафик с порта 80/443 на внутренний порт приложения 3000. Для защиты соединения и шифрования трафика используется Certbot, который предоставляет SSL-сертификаты от Let's Encrypt.