ПримечаниеУстановку производить на чистую систему
Предустановка необходимых пакетов
Устанавливаем репозитарий 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. Перезапустить сервисы. Если сервисы не стартуют, необходимо анализировать логи на предмет ошибок, возможно что проблема где-то еще.