Это старая версия документа!
Установка Chatwoot в Docker на Ubuntu (продолжение)
Шаг 4: Клонирование репозитория Chatwoot
# Создание директории для Chatwoot в /opt sudo mkdir -p /opt/chatwoot # Изменение владельца папки на текущего пользователя sudo chown $USER:$USER /opt/chatwoot # Переход в созданную директорию cd /opt/chatwoot # Клонирование репозитория в подпапку repo git clone https://github.com/chatwoot/chatwoot.git repo # Переход в репозиторий cd repo # Переход на стабильную версию (опционально) git checkout main
Шаг 5: Настройка переменных окружения
# Убедитесь, что находитесь в корневой директории Chatwoot cd /opt/chatwoot # Копирование примера конфигурации из репозитория cp repo/.env.example .env # Редактирование файла конфигурации nano .env
Основные параметры в файле .env:
# Redis URL REDIS_URL=redis://redis:6379 # База данных POSTGRES_HOST=postgres POSTGRES_USERNAME=postgres POSTGRES_PASSWORD=your_strong_password POSTGRES_DATABASE=chatwoot # Secret key (сгенерируйте уникальный) SECRET_KEY_BASE=your_secret_key_here # Rails environment RAILS_ENV=production # Frontend URL FRONTEND_URL=http://localhost:3000 # Настройки почты (опционально) MAILER_SENDER_EMAIL=chatwoot@yourdomain.com SMTP_ADDRESS=smtp.gmail.com SMTP_PORT=587 SMTP_EMAIL=your_email@gmail.com SMTP_PASSWORD=your_app_password
Шаг 6: Генерация секретного ключа
# Генерация SECRET_KEY_BASE openssl rand -hex 64
<note important>Скопируйте сгенерированный ключ в файл .env как значение для SECRET_KEY_BASE.</note>
Шаг 7: Создание Docker Compose файла
Создайте файл docker-compose.yml в корневой директории /opt/chatwoot:
# Убедитесь, что находитесь в корневой директории Chatwoot cd /opt/chatwoot # Создайте файл docker-compose.yml nano docker-compose.yml
Содержимое файла:
- docker-compose.yml
version: '3.8' services: postgres: image: postgres:13 environment: POSTGRES_DB: chatwoot POSTGRES_USER: postgres POSTGRES_PASSWORD: your_strong_password volumes: - ./postgres_data:/var/lib/postgresql/data restart: unless-stopped redis: image: redis:6-alpine volumes: - ./redis_data:/data restart: unless-stopped chatwoot-app: image: chatwoot/chatwoot:latest env_file: .env environment: - POSTGRES_HOST=postgres - REDIS_URL=redis://redis:6379 depends_on: - postgres - redis ports: - "3000:3000" volumes: - ./storage:/app/storage restart: unless-stopped chatwoot-worker: image: chatwoot/chatwoot:latest env_file: .env environment: - POSTGRES_HOST=postgres - REDIS_URL=redis://redis:6379 depends_on: - postgres - redis command: bundle exec sidekiq volumes: - ./storage:/app/storage restart: unless-stopped
<note important>Обратите внимание: теперь все данные (postgres_data, redis_data, storage) будут храниться в локальных папках внутри /opt/chatwoot, а не в Docker volumes.</note>
Шаг 8: Создание папок для данных и запуск контейнеров
# Убедитесь, что находитесь в корневой директории Chatwoot cd /opt/chatwoot # Создание папок для данных баз данных и файлов mkdir -p postgres_data redis_data storage # Установка правильных прав доступа sudo chown -R $USER:$USER postgres_data redis_data storage # Создание и запуск контейнеров docker-compose up -d # Проверка статуса контейнеров docker-compose ps # Просмотр логов (опционально) docker-compose logs -f
Шаг 9: Инициализация базы данных
# Убедитесь, что находитесь в корневой директории Chatwoot cd /opt/chatwoot # Выполнение миграций базы данных docker-compose exec chatwoot-app bundle exec rails db:create docker-compose exec chatwoot-app bundle exec rails db:migrate # Заполнение начальными данными docker-compose exec chatwoot-app bundle exec rails db:seed
Шаг 10: Создание администратора
# Убедитесь, что находитесь в корневой директории Chatwoot cd /opt/chatwoot # Создание первого пользователя-администратора docker-compose exec chatwoot-app bundle exec rails runner ' u = User.new( email: "admin@example.com", password: "password123", password_confirmation: "password123", name: "Admin User" ) u.skip_confirmation! u.save! account = u.accounts.create!(name: "My Company") AccountUser.create!(user: u, account: account, role: :administrator) '
Шаг 11: Проверка установки
- Откройте браузер и перейдите на
http://your-server-ip:3000 - Войдите используя созданные учетные данные администратора
- Настройте свою первую учетную запись
Дополнительные настройки
Настройка SSL (опционально)
Для продакшн использования рекомендуется настроить SSL через Nginx или Traefik.
Резервное копирование
# Переход в корневую директорию Chatwoot cd /opt/chatwoot # Создание бэкапа базы данных docker-compose exec postgres pg_dump -U postgres chatwoot > chatwoot_backup_$(date +%Y%m%d_%H%M%S).sql # Бэкап всех данных (база данных, redis, файлы загрузок) tar -czf chatwoot_full_backup_$(date +%Y%m%d_%H%M%S).tar.gz postgres_data redis_data storage # Бэкап только файлов загрузок tar -czf storage_backup_$(date +%Y%m%d_%H%M%S).tar.gz storage # Бэкап конфигурационных файлов tar -czf config_backup_$(date +%Y%m%d_%H%M%S).tar.gz .env docker-compose.yml
Обновление
# Переход в корневую директорию Chatwoot cd /opt/chatwoot # Обновление репозитория cd repo git pull origin main cd .. # Остановка сервисов docker-compose down # Обновление образов docker-compose pull # Запуск обновленных контейнеров docker-compose up -d # Выполнение миграций (если необходимо) docker-compose exec chatwoot-app bundle exec rails db:migrate
Полезные команды
# Переход в корневую директорию Chatwoot (выполнять перед командами ниже) cd /opt/chatwoot # Просмотр логов конкретного сервиса docker-compose logs -f chatwoot-app # Перезапуск всех сервисов docker-compose restart # Остановка всех сервисов docker-compose down # Удаление контейнеров (данные сохраняются в локальных папках) docker-compose down # ОСТОРОЖНО! Полное удаление всех данных # docker-compose down && sudo rm -rf postgres_data redis_data storage
Структура папок
После установки структура папок будет следующая:
/opt/chatwoot/ ├── docker-compose.yml # Конфигурация Docker Compose ├── .env # Переменные окружения ├── repo/ # Репозиторий Chatwoot (клон с GitHub) │ ├── .env.example │ ├── Gemfile │ └── ... (остальные файлы репозитория) ├── postgres_data/ # Данные PostgreSQL ├── redis_data/ # Данные Redis └── storage/ # Файлы загрузок пользователей
<note tip> Преимущества такой структуры:
- Все данные хранятся локально и легко доступны для резервного копирования
- Простое управление файлами и конфигурацией
- Репозиторий изолирован в отдельной папке
- Легко переносить данные между серверами
</note>
Устранение неполадок
- Проблемы с подключением к базе данных: Проверьте, что контейнер postgres запущен
- Проблемы с памятью: Убедитесь, что у вас достаточно RAM (минимум 2GB)
- Порт 3000 занят: Измените порт в docker-compose.yml на свободный
<note tip>После успешной установки Chatwoot будет доступен по адресу http://localhost:3000 (или IP-адресу вашего сервера)</note>
Дополнительные настройки для продакшн
Настройка Nginx (рекомендуется)
Создайте файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/chatwoot
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
# Активация конфигурации sudo ln -s /etc/nginx/sites-available/chatwoot /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
Настройка автозапуска
Создайте systemd service:
sudo nano /etc/systemd/system/chatwoot.service
[Unit] Description=Chatwoot Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/opt/chatwoot ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target
# Активация сервиса sudo systemctl enable chatwoot.service sudo systemctl start chatwoot.service # Проверка статуса сервиса sudo systemctl status chatwoot.service
Мониторинг и логи
# Просмотр системных логов Chatwoot sudo journalctl -u chatwoot.service -f # Мониторинг ресурсов контейнеров docker stats # Проверка здоровья контейнеров docker-compose ps
<note warning> Важные моменты безопасности:
- Измените пароли по умолчанию в .env файле
- Используйте сильные пароли для базы данных
- Настройте firewall (ufw) для ограничения доступа к портам
- Регулярно обновляйте Docker образы
- Настройте SSL/TLS для продакшн среды
</note>