# Создайте директорию для Rocket.Chat mkdir -p /opt/rocketchat cd /opt/rocketchat # Создайте структуру папок mkdir -p data/db data/uploads
MongoDB в режиме реплики требует keyfile для аутентификации между узлами:
# Создайте keyfile для репликации MongoDB openssl rand -base64 756 > keyfile chmod 400 keyfile chown 999:999 keyfile
Создайте файл .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>
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
Запустите только MongoDB для настройки пользователей:
# Запустите только MongoDB docker-compose up -d rocketchat_mongodb # Дождитесь готовности базы (проверьте статус) docker-compose ps
# Подключитесь к 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
# Перезапустите все сервисы docker-compose down docker-compose up -d # Проверьте статус контейнеров docker-compose ps # Следите за логами запуска docker-compose logs -f rocketchat
После успешного создания администратора:
# Администратор 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
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;
}
}
# Просмотр логов 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
# Создание бэкапа 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/
<note tip>Совет: Всегда делайте резервную копию перед обновлением или изменением конфигурации!</note>