ПримечаниеУстановку производить на чистую систему
Предустановка необходимых пакетов
Устанавливаем репозитарий EPEL
yum -y install epel-release yum clean all yum -y update
Устанавливаем MongoDB
cat <<EOF> /etc/yum.repos.d/mongodb.repo [mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1 EOF
yum -y install mongodb-org-server mongodb-org systemctl enable mongod systemctl start mongod
Устанавливаем необходимые пакеты
yum install -y nodejs curl GraphicsMagick npm gcc-c++ nginx
Настройка nginx
Сам чат работает на 3000 порту интерфейса обратной петли 127.0.0.1. Рекомендуем настроить связку с nginx.
Создаём самоподписанные сертификаты
mkdir /etc/nginx/cert openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ -keyout /etc/nginx/cert/rocket.key -out /etc/nginx/cert/rocket.crt \ -subj '/C=RU/ST=Moscow/L=Moscow/CN=server.local'
Основной конфигурационный файл nginx
cat << EOF > /etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" ' '\$status $body_bytes_sent "\$http_referer" ' '"\$http_user_agent" "\$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/rocket.conf; } EOF
Файл виртуального хоста
cat << EOF > /etc/nginx/conf.d/rocket.conf upstream rocketbackend { server 127.0.0.1:3000; } server { listen 80 default; server_name server.local ; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2 default; server_name server.local ; ssl on; ssl_certificate /etc/nginx/cert/rocket.crt; ssl_certificate_key /etc/nginx/cert/rocket.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_pass http://rocketbackend/; proxy_http_version 1.1; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_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 http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } } EOF
Настройка демона nginx
systemctl enable nginx systemctl start nginx
Установка Rocket.Chat
cd /opt curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz tar zxvf rocket.chat.tgz mv bundle Rocket.Chat cd Rocket.Chat/programs/server npm install cd ../..
Первый запуск Rocket.Chat
export ROOT_URL=http://server.local/ export MONGO_URL=mongodb://127.0.0.1:27017/rocketchat export PORT=3000 export ADMIN_USERNAME=admin export ADMIN_PASS=PASSWORD export ADMIN_EMAIL=EMAIL
где:
- PASSWORD — пароль пользователя admin
- EMAIL — действущий почтовый адрес
node main.js
Настройка демона
cat << EOF > /usr/lib/systemd/system/rocketchat.service [Unit] Description=The Rocket.Chat server After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target [Service] ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=rocketchat User=root Environment=MONGO_URL=mongodb://127.0.0.1:27017/rocketchat ROOT_URL=https://server.local/ PORT=3000 [Install] WantedBy=multi-user.target EOF
Запуск Rocket.Chat
systemctl enable rocketchat systemctl start rocketchat
Настройка firewall
firewall-offline-cmd --zone=public --add-service=http firewall-offline-cmd --zone=public --add-service=https firewall-offline-cmd --zone=public --add-service=ssh firewall-offline-cmd --zone=public --add-port=3000/tcp
Здравствуйте! Есть VM с Centos 7, из вне открыт только 3000 порт. Стоит задача поставить rocketchat с возможностью подключатся с мобильного клиента из внешней сети. Подскажите с настройками портов nginx и rocketchat, какие куда прописать. Так же, хотелось использовать доменное имя, я так понимаю его вписывать вместо server.local при создании сертификата и в настройках nginx?
Доменное имя необходимо указать вместо server.local. Если наружу открыт только 3000 порт, имеет смысл virtualhost nginx повесить на 3000 порт (вместо 80 и 443), а rocket.chat на любой другой свободный. Вы можете заказать виртуальный сервер с Rocket.Chat у нас, всё настроят наши специалисты.
После смены портов 80 и 443 на 3000, nginx не стартует
Все правильно, потому что 3000 порт занял Rocket.Chat. Вам необходимо перевесить его на другой порт, к примеру на 8888 и изменить в конфиге nginx соответственно 127.0.0.1:8888.
/usr/lib/systemd/system/rocketchat.service — изменил порты с 3000 на 8888 и в конфиге nginx — /etc/nginx/conf.d/rocket.conf, проблема осталась. Хотя, если в конфиге nginx не менять порт 80, а только 443, то он запускается.
Суть задачи — перевесить Rocket.Chat на порт 8888, nginx на порт 3000. В файлах изменить значения соответственно: 3000 -> 8888, 443 -> 3000. Перезапустить сервисы. Если сервисы не стартуют, необходимо анализировать логи на предмет ошибок, возможно что проблема где-то еще.