====== Установка 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**
**Совет:** Всегда делайте резервную копию перед обновлением или изменением конфигурации!