vm:chatwoot:01-install

Это старая версия документа!


Установка Chatwoot в Docker на Ubuntu (продолжение)

# Создание директории для 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
# Убедитесь, что находитесь в корневой директории Chatwoot
cd /opt/chatwoot
 
# Копирование примера конфигурации из репозитория
cp repo/.env.example .env
 
# Редактирование файла конфигурации
nano .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
# Генерация SECRET_KEY_BASE
openssl rand -hex 64

<note important>Скопируйте сгенерированный ключ в файл .env как значение для SECRET_KEY_BASE.</note>

Создайте файл 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>

# Убедитесь, что находитесь в корневой директории 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
# Убедитесь, что находитесь в корневой директории 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
# Убедитесь, что находитесь в корневой директории 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)
'
  1. Откройте браузер и перейдите на http://your-server-ip:3000
  2. Войдите используя созданные учетные данные администратора
  3. Настройте свою первую учетную запись

Для продакшн использования рекомендуется настроить 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>

  1. Проблемы с подключением к базе данных: Проверьте, что контейнер postgres запущен
  2. Проблемы с памятью: Убедитесь, что у вас достаточно RAM (минимум 2GB)
  3. Порт 3000 занят: Измените порт в docker-compose.yml на свободный

<note tip>После успешной установки Chatwoot будет доступен по адресу http://localhost:3000 (или IP-адресу вашего сервера)</note>

Создайте файл конфигурации 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>

  • vm/chatwoot/01-install.1756376941.txt.gz
  • Последнее изменение: 2025/08/28 10:29
  • admin