Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| vm:chatwoot:01-install [2025/08/28 10:29] – admin | vm:chatwoot:01-install [2025/08/28 11:58] (текущий) – [Шаг 6: Инициализация базы данных] admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Установка Chatwoot в Docker на Ubuntu | + | ====== Установка Chatwoot в Docker на Ubuntu ====== |
| - | ===== Шаг | + | ===== Шаг |
| <code bash> | <code bash> | ||
| Строка 23: | Строка 23: | ||
| </ | </ | ||
| - | ===== Шаг | + | ===== Шаг |
| <code bash> | <code bash> | ||
| Строка 41: | Строка 41: | ||
| # Redis URL | # Redis URL | ||
| REDIS_URL=redis:// | REDIS_URL=redis:// | ||
| + | REDIS_PASSWORD=your_redis_password | ||
| # База данных | # База данных | ||
| POSTGRES_HOST=postgres | POSTGRES_HOST=postgres | ||
| POSTGRES_USERNAME=postgres | POSTGRES_USERNAME=postgres | ||
| - | POSTGRES_PASSWORD=your_strong_password | + | POSTGRES_PASSWORD=your_postgres_password |
| POSTGRES_DATABASE=chatwoot | POSTGRES_DATABASE=chatwoot | ||
| Строка 55: | Строка 56: | ||
| # Frontend URL | # Frontend URL | ||
| - | FRONTEND_URL=http:// | + | FRONTEND_URL=http:// |
| # Настройки почты (опционально) | # Настройки почты (опционально) | ||
| Строка 65: | Строка 66: | ||
| </ | </ | ||
| - | ===== Шаг | + | ===== Шаг |
| <code bash> | <code bash> | ||
| Строка 72: | Строка 73: | ||
| </ | </ | ||
| - | <note important> | + | **ВАЖНО: |
| - | ===== Шаг | + | ===== Шаг |
| Создайте файл '' | Создайте файл '' | ||
| Строка 89: | Строка 90: | ||
| <file yaml docker-compose.yml> | <file yaml docker-compose.yml> | ||
| - | version: ' | ||
| - | |||
| services: | services: | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | image: chatwoot/ |
| - | | + | |
| + | | ||
| volumes: | volumes: | ||
| - | - ./postgres_data:/var/lib/ | + | - ./storage:/app/storage |
| - | restart: unless-stopped | + | |
| - | + | | |
| - | | + | |
| - | | + | |
| - | volumes: | + | |
| - | - ./ | + | |
| - | restart: unless-stopped | + | |
| - | + | ||
| - | chatwoot-app: | + | |
| - | image: chatwoot/ | + | |
| - | env_file: .env | + | |
| - | environment: | + | |
| - | - POSTGRES_HOST=postgres | + | |
| - | - REDIS_URL=redis:// | + | |
| depends_on: | depends_on: | ||
| - postgres | - postgres | ||
| - redis | - redis | ||
| - | ports: | ||
| - | - " | ||
| - | volumes: | ||
| - | - ./ | ||
| - | restart: unless-stopped | ||
| - | |||
| - | chatwoot-worker: | ||
| - | image: chatwoot/ | ||
| - | env_file: .env | ||
| environment: | environment: | ||
| - | - POSTGRES_HOST=postgres | + | - NODE_ENV=production |
| - | - REDIS_URL=redis://redis:6379 | + | - RAILS_ENV=production |
| + | - INSTALLATION_ENV=docker | ||
| + | entrypoint: docker/entrypoints/rails.sh | ||
| + | command: [' | ||
| + | restart: always | ||
| + | sidekiq: | ||
| + | <<: *base | ||
| depends_on: | depends_on: | ||
| - postgres | - postgres | ||
| - redis | - redis | ||
| - | command: bundle exec sidekiq | + | |
| + | - NODE_ENV=production | ||
| + | - RAILS_ENV=production | ||
| + | - INSTALLATION_ENV=docker | ||
| + | | ||
| + | restart: always | ||
| + | postgres: | ||
| + | image: pgvector/ | ||
| + | restart: always | ||
| volumes: | volumes: | ||
| - | - ./storage:/app/storage | + | - ./postgres_data:/var/lib/ |
| - | restart: | + | environment: |
| + | - POSTGRES_DB=chatwoot | ||
| + | - POSTGRES_USER=postgres | ||
| + | - POSTGRES_PASSWORD=your_postgres_password | ||
| + | redis: | ||
| + | image: redis: | ||
| + | restart: | ||
| + | command: [" | ||
| + | env_file: .env | ||
| + | volumes: | ||
| + | - ./ | ||
| </ | </ | ||
| - | <note important> | + | **Особенности конфигурации:** |
| + | * Используется сборка из исходного кода (build) вместо готового образа | ||
| + | * PostgreSQL с поддержкой pgvector для AI функций | ||
| + | * Redis защищен паролем | ||
| + | * Нет | ||
| + | * Все данные хранятся в локальных папках | ||
| - | ===== Шаг | + | ===== Шаг |
| <code bash> | <code bash> | ||
| Строка 151: | Строка 159: | ||
| # Установка правильных прав доступа | # Установка правильных прав доступа | ||
| sudo chown -R $USER:$USER postgres_data redis_data storage | sudo chown -R $USER:$USER postgres_data redis_data storage | ||
| + | |||
| + | # Сборка образа из исходного кода (может занять несколько минут) | ||
| + | docker-compose build | ||
| + | |||
| + | # Инициализация базы данных | ||
| + | docker-compose run --rm rails bundle exec rails db: | ||
| # Создание и запуск контейнеров | # Создание и запуск контейнеров | ||
| Строка 158: | Строка 172: | ||
| docker-compose ps | docker-compose ps | ||
| - | # Просмотр логов (опционально) | + | # Просмотр логов |
| docker-compose logs -f | docker-compose logs -f | ||
| </ | </ | ||
| - | ===== Шаг | + | **ВНИМАНИЕ: |
| + | |||
| + | ===== Шаг | ||
| <code bash> | <code bash> | ||
| Строка 168: | Строка 184: | ||
| cd / | cd / | ||
| - | # Выполнение миграций базы данных | + | # Выполнение миграций базы данных |
| - | docker-compose exec chatwoot-app bundle exec rails db:create | + | docker-compose |
| - | docker-compose exec chatwoot-app bundle exec rails db: | + | |
| - | + | ||
| - | # Заполнение начальными данными | + | |
| - | docker-compose | + | |
| </ | </ | ||
| - | ===== Шаг | + | ===== Шаг |
| <code bash> | <code bash> | ||
| Строка 183: | Строка 195: | ||
| # Создание первого пользователя-администратора | # Создание первого пользователя-администратора | ||
| - | docker-compose exec chatwoot-app | + | docker-compose exec rails bundle exec rails runner ' |
| u = User.new( | u = User.new( | ||
| email: " | email: " | ||
| Строка 198: | Строка 210: | ||
| </ | </ | ||
| - | ===== Шаг | + | ===== Шаг |
| - | - Откройте браузер и перейдите на '' | + | |
| + | | ||
| - Войдите используя созданные учетные данные администратора | - Войдите используя созданные учетные данные администратора | ||
| - Настройте свою первую учетную запись | - Настройте свою первую учетную запись | ||
| + | |||
| + | **СОВЕТ: | ||
| ===== Дополнительные настройки ===== | ===== Дополнительные настройки ===== | ||
| Строка 243: | Строка 258: | ||
| docker-compose down | docker-compose down | ||
| - | # Обновление образов | + | # Пересборка |
| - | docker-compose | + | docker-compose |
| # Запуск обновленных контейнеров | # Запуск обновленных контейнеров | ||
| Строка 250: | Строка 265: | ||
| # Выполнение миграций (если необходимо) | # Выполнение миграций (если необходимо) | ||
| - | docker-compose exec chatwoot-app | + | docker-compose exec rails bundle exec rails db:migrate |
| </ | </ | ||
| Строка 260: | Строка 275: | ||
| # Просмотр логов конкретного сервиса | # Просмотр логов конкретного сервиса | ||
| - | docker-compose logs -f chatwoot-app | + | docker-compose logs -f rails |
| + | docker-compose logs -f sidekiq | ||
| # Перезапуск всех сервисов | # Перезапуск всех сервисов | ||
| docker-compose restart | docker-compose restart | ||
| + | |||
| + | # Перезапуск конкретного сервиса | ||
| + | docker-compose restart rails | ||
| # Остановка всех сервисов | # Остановка всех сервисов | ||
| docker-compose down | docker-compose down | ||
| - | # Удаление контейнеров (данные сохраняются в локальных папках) | + | # Пересборка образа |
| - | docker-compose | + | docker-compose build --no-cache |
| + | |||
| + | # Подключение к Rails консоли | ||
| + | docker-compose | ||
| # ОСТОРОЖНО! Полное удаление всех данных | # ОСТОРОЖНО! Полное удаление всех данных | ||
| Строка 292: | Строка 314: | ||
| </ | </ | ||
| - | <note tip> | ||
| **Преимущества такой структуры: | **Преимущества такой структуры: | ||
| * Все данные хранятся локально и легко доступны для резервного копирования | * Все данные хранятся локально и легко доступны для резервного копирования | ||
| Строка 298: | Строка 319: | ||
| * Репозиторий изолирован в отдельной папке | * Репозиторий изолирован в отдельной папке | ||
| * Легко переносить данные между серверами | * Легко переносить данные между серверами | ||
| - | </ | ||
| ===== Устранение неполадок ===== | ===== Устранение неполадок ===== | ||
| Строка 306: | Строка 326: | ||
| - **Порт 3000 занят**: | - **Порт 3000 занят**: | ||
| - | <note tip>После успешной установки Chatwoot будет доступен | + | **ИТОГ: |
| ===== Дополнительные настройки для продакшн ===== | ===== Дополнительные настройки для продакшн ===== | ||
| - | ==== Настройка Nginx (рекомендуется) ==== | + | ==== Настройка Nginx (обязательно) ==== |
| Создайте файл конфигурации Nginx: | Создайте файл конфигурации Nginx: | ||
| Строка 319: | Строка 339: | ||
| <file nginx> | <file nginx> | ||
| + | upstream chatwoot { | ||
| + | server rails:3000; | ||
| + | } | ||
| + | |||
| server { | server { | ||
| listen 80; | listen 80; | ||
| server_name your-domain.com; | server_name your-domain.com; | ||
| + | client_max_body_size 50M; | ||
| location / { | location / { | ||
| - | proxy_pass http://localhost: | + | proxy_pass http://chatwoot; |
| proxy_set_header Host $host; | proxy_set_header Host $host; | ||
| proxy_set_header X-Real-IP $remote_addr; | proxy_set_header X-Real-IP $remote_addr; | ||
| Строка 330: | Строка 355: | ||
| proxy_set_header X-Forwarded-Proto $scheme; | proxy_set_header X-Forwarded-Proto $scheme; | ||
| | | ||
| - | # WebSocket support | + | # WebSocket support |
| proxy_http_version 1.1; | proxy_http_version 1.1; | ||
| proxy_set_header Upgrade $http_upgrade; | proxy_set_header Upgrade $http_upgrade; | ||
| proxy_set_header Connection " | proxy_set_header Connection " | ||
| + | | ||
| + | # Увеличение таймаутов | ||
| + | proxy_connect_timeout | ||
| + | proxy_send_timeout | ||
| + | proxy_read_timeout | ||
| + | send_timeout | ||
| } | } | ||
| - | } | + | |
| - | </ | + | # Обработка статических файлов |
| + | location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { | ||
| + | proxy_pass http:// | ||
| + | expires 1y; | ||
| + | add_header Cache-Control " | ||
| + | | ||
| + | }</ | ||
| + | |||
| + | **ВНИМАНИЕ: | ||
| <code bash> | <code bash> | ||
| Строка 391: | Строка 430: | ||
| # Проверка здоровья контейнеров | # Проверка здоровья контейнеров | ||
| docker-compose ps | docker-compose ps | ||
| + | |||
| + | # Просмотр логов Rails приложения | ||
| + | docker-compose logs -f rails | ||
| + | |||
| + | # Просмотр логов Sidekiq (фоновые задачи) | ||
| + | docker-compose logs -f sidekiq | ||
| </ | </ | ||
| - | <note warning> | + | **ВАЖНЫЕ МОМЕНТЫ БЕЗОПАСНОСТИ:** |
| - | **Важные моменты безопасности:** | + | |
| * Измените пароли по умолчанию в .env файле | * Измените пароли по умолчанию в .env файле | ||
| * Используйте сильные пароли для базы данных | * Используйте сильные пароли для базы данных | ||
| Строка 400: | Строка 444: | ||
| * Регулярно обновляйте Docker образы | * Регулярно обновляйте Docker образы | ||
| * Настройте SSL/TLS для продакшн среды | * Настройте SSL/TLS для продакшн среды | ||
| - | </ | ||