Установка 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
<WRAP center round important 60%> Важно: Замените все пароли на надежные! Используйте генератор паролей. </WRAP>
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
<note tip>Совет: Всегда делайте резервную копию перед обновлением или изменением конфигурации!</note>