====== Установка Rocket.Chat на Ubuntu с Docker ====== ===== 1. Подготовка структуры проекта ===== # Создайте директорию для Rocket.Chat mkdir -p /opt/rocketchat cd /opt/rocketchat # Создайте структуру папок mkdir -p data/db data/uploads ===== 2. Создание keyfile для MongoDB ===== MongoDB в режиме реплики требует keyfile для аутентификации между узлами: # Создайте keyfile для репликации MongoDB openssl rand -base64 756 > keyfile chmod 400 keyfile chown 999:999 keyfile ===== 3. Создание файла окружения (.env) ===== Создайте файл **.env** с переменными окружения: # URL вашего сайта ROOT_URL=https://your-domain.com # Пользователи MongoDB MONGO_USER=rocketchatuser MONGO_PASSWORD=your_strong_password_here MONGO_OPLOG_USER=oplogger MONGO_OPLOG_PASSWORD=your_oplog_password_here # Администратор Rocket.Chat (только для первого запуска) ADMIN_USERNAME=admin ADMIN_NAME=Administrator ADMIN_EMAIL=admin@your-domain.com ADMIN_PASS=your_admin_password_here **Важно:** Замените все пароли на надежные! Используйте генератор паролей. ===== 4. Создание docker-compose.yml ===== services: rocketchat_mongodb: image: mongo:6.0 container_name: rocketchat_mongodb restart: unless-stopped volumes: - ./data/db:/data/db - ./keyfile:/data/keyfile:ro command: > mongod --auth --replSet rs0 --storageEngine wiredTiger --keyFile /data/keyfile --bind_ip_all networks: - webproxy healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 30s timeout: 10s retries: 5 start_period: 40s rocketchat: image: rocketchat/rocket.chat:latest container_name: rocketchat restart: unless-stopped environment: - PORT=3000 - ROOT_URL=${ROOT_URL} - MONGO_URL=mongodb://${MONGO_USER}:${MONGO_PASSWORD}@rocketchat_mongodb:27017/rocketchat?authSource=admin&replicaSet=rs0&retryWrites=true&w=majority - MONGO_OPLOG_URL=mongodb://${MONGO_OPLOG_USER}:${MONGO_OPLOG_PASSWORD}@rocketchat_mongodb:27017/local?authSource=admin&replicaSet=rs0 # Оптимизации для решения проблем с Moleculer - MOLECULER_LOG_LEVEL=warn - TRANSPORTER=TCP - MOLECULER_TRANSPORTER_PORT=0 # Отключение некоторых функций для стабильности - Accounts_AvatarResize=false - FileUpload_Storage_Type=GridFS # Увеличение таймаутов для медленных систем - SETTINGS_BLOCKED_TIMEOUT=30000 # Отключение телеметрии для уменьшения нагрузки - DISABLE_DB_WATCHERS=false - EXIT_UNHANDLEDPROMISEREJECTION=true # Отключение регистрации workspace и облачных функций - OVERWRITE_SETTING_Show_Setup_Wizard=pending - OVERWRITE_SETTING_Organization_Type=other - OVERWRITE_SETTING_Cloud_Service_Agree_PrivacyTerms=false - OVERWRITE_SETTING_Statistics_reporting=false - OVERWRITE_SETTING_Cloud_Workspace_Registration_Client_Uri= - OVERWRITE_SETTING_Cloud_Url= - OVERWRITE_SETTING_Cloud_Workspace_Id= - REG_TOKEN= # Дополнительные настройки для полного отключения cloud connectivity - OVERWRITE_SETTING_Cloud_Workspace_Connected=false - OVERWRITE_SETTING_Register_Server=false # Создание администратора (только при первом запуске) - ADMIN_USERNAME=${ADMIN_USERNAME} - ADMIN_NAME=${ADMIN_NAME} - ADMIN_EMAIL=${ADMIN_EMAIL} - ADMIN_PASS=${ADMIN_PASS} volumes: - ./data/uploads:/app/uploads depends_on: rocketchat_mongodb: condition: service_healthy networks: - webproxy # Ограничения ресурсов для предотвращения конфликтов deploy: resources: limits: memory: 2G reservations: memory: 1G networks: webproxy: external: true ===== 5. Инициализация MongoDB ===== Запустите только MongoDB для настройки пользователей: # Запустите только MongoDB docker-compose up -d rocketchat_mongodb # Дождитесь готовности базы (проверьте статус) docker-compose ps ===== 6. Создание пользователей MongoDB ===== # Подключитесь к MongoDB без аутентификации docker exec -it rocketchat_mongodb mongosh В консоли MongoDB выполните: // Переключитесь в базу admin use admin // Создайте root пользователя db.createUser({ user: "admin", pwd: "your_admin_password_here", roles: [{ role: "root", db: "admin" }] }) // Создайте пользователя для Rocket.Chat db.createUser({ user: "rocketchatuser", pwd: "your_strong_password_here", roles: [ { role: "readWrite", db: "rocketchat" }, { role: "dbAdmin", db: "rocketchat" } ] }) // Создайте пользователя для oplog db.createUser({ user: "oplogger", pwd: "your_oplog_password_here", roles: [{ role: "read", db: "local" }] }) // Инициализируйте реплику rs.initiate() // Выйдите exit ===== 7. Запуск Rocket.Chat ===== # Перезапустите все сервисы docker-compose down docker-compose up -d # Проверьте статус контейнеров docker-compose ps # Следите за логами запуска docker-compose logs -f rocketchat ===== 8. Первоначальная настройка ===== - Откройте браузер и перейдите по адресу вашего домена - Должен появиться **Setup Wizard** (Мастер настройки) - Создайте администратора: * **Username:** admin (или другой) * **Email:** admin@your-domain.com * **Password:** надежный пароль * **Name:** Administrator - Следуйте инструкциям мастера настройки - Выберите тип организации: "Other" - **Откажитесь** от регистрации в облаке Rocket.Chat ===== 9. Настройка после установки ===== ==== 9.1. Отключение переменных ADMIN ==== После успешного создания администратора: - Закомментируйте ADMIN переменные в **.env**: # Администратор Rocket.Chat (отключено после создания) #ADMIN_USERNAME=admin #ADMIN_NAME=Administrator #ADMIN_EMAIL=admin@your-domain.com #ADMIN_PASS=your_admin_password_here - Перезапустите контейнеры: docker-compose down docker-compose up -d ==== 9.2. Настройка прокси (Nginx/Traefik) ==== Rocket.Chat работает на порту 3000. Настройте ваш веб-сервер для проксирования: **Пример для Nginx:** server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your-domain.com; # SSL настройки здесь location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_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; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } } ===== 10. Полезные команды ===== # Просмотр логов docker-compose logs -f rocketchat docker-compose logs -f rocketchat_mongodb # Перезапуск сервисов docker-compose restart rocketchat docker-compose restart rocketchat_mongodb # Остановка всех сервисов docker-compose down # Полная остановка с удалением контейнеров docker-compose down --volumes # Обновление Rocket.Chat docker-compose pull docker-compose up -d # Подключение к MongoDB docker exec -it rocketchat_mongodb mongosh admin -u admin -p ===== 11. Резервное копирование ===== # Создание бэкапа MongoDB docker exec rocketchat_mongodb mongodump --username admin --password your_password --authenticationDatabase admin --out /backup # Копирование из контейнера docker cp rocketchat_mongodb:/backup ./backup # Бэкап файлов загрузок tar -czf uploads_backup.tar.gz ./data/uploads/ ===== 12. Устранение неполадок ===== ==== Проблемы с подключением к MongoDB ==== * Проверьте правильность паролей в **.env** * Убедитесь, что реплика инициализирована: **rs.status()** * Проверьте права доступа к keyfile: **chmod 400 keyfile** ==== "User not found" при входе ==== * Используйте Setup Wizard: **OVERWRITE_SETTING_Show_Setup_Wizard=pending** * Проверьте верификацию email в базе данных * Перезапустите Rocket.Chat после изменений в базе ==== Высокое потребление памяти ==== * Ограничьте ресурсы в docker-compose.yml * Отключите ненужные функции * Используйте **DISABLE_DB_WATCHERS=true** **Совет:** Всегда делайте резервную копию перед обновлением или изменением конфигурации!