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

Обзор развертывания 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.

Процесс включает:

  1. Установку необходимых системных утилит (curl, git, wget).

  2. Настройку репозитория Docker Engine.

  3. Создание директории /opt/chatwoot и загрузку шаблона .env.

  4. Генерацию уникального ключа SECRET_KEY_BASE для обеспечения безопасности сессий.

  5. Инициализацию базы данных с помощью команды: 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 Запуск с паролем через команду

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

Обновление выполняется путем подтягивания новых версий образов и перезапуска контейнеров:

docker compose pull && docker compose up -d

Настройки прав

  • Директория /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:

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

    docker compose up -d
    

  • Остановка приложения:

    docker compose down
    

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

    docker compose restart rails sidekiq
    

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

В качестве прокси-сервера используется 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;).

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