Примечание
Установку производить на чистую систему

Предустановка необходимых пакетов

Устанавливаем репозитарий 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  1;

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
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=rocket_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
    listen 80 default;
    server_name server.local ;
    return 301 https://server.local;
}

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_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    location / {
        proxy_http_version 1.1;
        client_max_body_size 50M;
        proxy_set_header Connection "";
        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-Frame-Options SAMEORIGIN;
        proxy_buffers 256 16k;
        proxy_buffer_size 16k;
        proxy_read_timeout 600s;
        proxy_cache rocket_cache;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 2;
        proxy_cache_use_stale timeout;
        proxy_cache_lock on;
        proxy_pass http://127.0.0.1:3000;
    }
}
EOF

Настройка демона nginx

systemctl enable nginx
systemctl start nginx

Установка Rocket.Chat

Загрузка и сборка необходимых пакетов

npm install -g inherits n

n 8.9.3

# Установка 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

pushd /opt/Rocket.Chat/programs/server/npm/node_modules
npm rebuild sharp
popd

Первый запуск Rocket.Chat

export ROOT_URL=http://127.0.0.1:3000/
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=http://127.0.0.1:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF

systemctl enable rocketchat.service

Добавить комментарий