Обзор развертывания Chatwoot на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие параметры системы и сетевые настройки:
-
Операционная система: Ubuntu или Debian.
-
Доступ: Права суперпользователя (root) для установки пакетов и управления Docker.
-
Порты:
-
80(HTTP) — для первичного обращения и перенаправления на HTTPS. -
443(HTTPS) — основной порт для работы приложения через SSL. -
3000(внутренний) — используется контейнером Rails.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к приложению используется динамический поддомен, сформированный по следующему шаблону:
| Параметр | Значение |
|---|---|
| Префикс | chatwoot |
| Домен | hostkey.in |
| Полный шаблон | chatwoot{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Все основные компоненты приложения и конфигурационные файлы сосредоточены в следующей директории:
-
/opt/chatwoot— корневая директория приложения, содержащая Docker Compose файл и переменные окружения. -
/etc/nginx/sites-available/— место хранения конфигурации прокси-сервера Nginx. -
/etc/letsencrypt/live/— директория с SSL-сертификатами (Certbot).
Процесс установки приложения¶
Развертывание выполняется путем настройки среды Docker и запуска контейнеров через docker compose.
Процесс включает:
-
Установку необходимых системных утилит (
curl,git,wget). -
Настройку репозитория Docker Engine.
-
Создание директории
/opt/chatwootи загрузку шаблона.env. -
Генерацию уникального ключа
SECRET_KEY_BASEдля обеспечения безопасности сессий. -
Инициализацию базы данных с помощью команды:
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
Права доступа и безопасность¶
-
Брандмауэр: Должны быть открыты порты
80и443. -
Безопасность данных:
-
Все пароли для баз данных (PostgreSQL, Redis) задаются в файле
.env. -
Включен принудительный переход на HTTPS (
FORCE_SSL=true). -
Порты баз данных и внутренних сервисов проброшены только на
127.0.0.1, что ограничивает доступ к ним извне сервера.
Базы данных¶
Приложение использует две базы данных, работающие в изолированных контейнерах:
| Тип БД | Образ | Имя хоста (в сети Docker) | Пароль по умолчанию |
|---|---|---|---|
| PostgreSQL | pgvector/pgvector:pg16 | postgres | chatwoot |
| Redis | redis:alpine | redis | chatwoot |
Данные баз данных хранятся в именованных томах Docker (postgres_data и redis_data).
Контейнеры Docker и их запуск¶
Приложение развернуто с использованием нескольких контейнеров. Все контейнеры имеют политику перезапуска always.
| Имя сервиса | Образ | Порты (хост:контейнер) | Тома (volumes) | Переменные окружения / Особенности |
|---|---|---|---|---|
rails | chatwoot/chatwoot:latest | 127.0.0.1:3000:3000 | storage_data:/app/storage | RAILS_ENV=production, NODE_ENV=production |
sidekiq | chatwoot/chatwoot:latest | Не проброшен | storage_data:/app/storage | Фоновые задачи, режим production |
postgres | pgvector/pgvector:pg16 | 127.0.0.1:5432:5432 | postgres_data:/var/lib/postgresql/data | Настроенная БД chatwoot |
redis | redis:alpine | 127.0.0.1:6379:6379 | redis_data:/data | Запуск с паролем через команду |
Инструкция по обновлению приложения¶
Обновление выполняется путем подтягивания новых версий образов и перезапуска контейнеров:
Настройки прав¶
-
Директория
/opt/chatwootимеет права доступа0755. -
Файлы конфигурации в директории приложения имеют права
0644.
Расположение конфигурационных файлов и данных¶
| Тип | Путь / Имя |
|---|---|
| Основной конфиг окружения | /opt/chatwoot/.env |
| Docker Compose файл | /opt/chatwoot/docker-compose.yml |
| Конфигурация Nginx | /etc/nginx/sites-available/{prefix}{server_id}.{zone} |
Доступные порты для подключения¶
Для внешнего пользователя доступны только следующие порты:
-
80/TCP(HTTP) -
443/TCP(HTTPS)
Все остальные порты (3000, 5432, 6379) доступны только локально на самом сервере.
Запуск, остановка приложения¶
Управление жизненным циклом контейнеров осуществляется из директории /opt/chatwoot:
-
Запуск всех сервисов:
-
Остановка приложения:
-
Перезапуск отдельных компонентов (например, Rails):
Прокси серверы¶
В качестве прокси-сервера используется Nginx.
-
SSL: Сертификаты выпускаются через Certbot (Let's Encrypt). Настроен автоматический редирект с HTTP на HTTPS.
-
Конфигурация: Nginx выступает в роли обратного прокси (Reverse Proxy), перенаправляя трафик с порта
80/443на внутренний порт контейнера Rails (127.0.0.1:3000). -
Особенности: В конфигурации включена поддержка заголовков
UpgradeиConnectionдля корректной работы WebSocket (черезproxy_set_header Upgrade $http_upgrade;).