Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Кластер DS Astra Linux (beta)

Обновлено: 25.12.25

Обратите внимание

Рекомендации по безопасному развёртыванию

1. Если планируется подключение к Серверу документов из внешней сети, к нему следует применять те же меры защиты, что и к веб-серверу. Такой сервер необходимо размещать в DMZ (зоне демилитаризации), вне внутреннего корпоративного периметра, чтобы снизить риск для внутренних систем. Заранее определите список необходимых портов и протоколов для внешнего и внутреннего взаимодействия и настройте соответствующие правила межсетевого экрана.

2. Для корпоративных установок рекомендуется организовывать доступ к Серверу документов только через корпоративный VPN. Размещение сервера с прямым доступом из интернета не рекомендуется.


Обратите внимание

Кластер не прошёл тестирование, статья выложена без всех стадий тестирования и проверок, поэтому может быть не актуальна и иметь ошибки.

0. Схема:

1. Роль СУБД, RabbitMQ и Redis

Важно

Данные роли можно разнести по серверам, выполняя пункты 1.1, 1.2 и 1.3 на разных серверах.

Важно

При включенной службе firewalld необходимо выполнить настройку для postgresql, redis и amqp.

# Добавляем службы:
sudo firewall-cmd --permanent --zone=public --add-service=postgresql
sudo firewall-cmd --permanent --zone=public --add-service=redis
sudo firewall-cmd --permanent --zone=public --add-service=amqp
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

1.1. СУБД

1.1.1. Установите PostgreSQL:

apt install postgresql -y

1.1.2. Инициализируйте БД:

sudo -i -u postgres psql -c "CREATE USER r7office WITH password 'r7office';"
sudo -i -u postgres psql -c "CREATE DATABASE r7office OWNER r7office;"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE r7office TO r7office;"

1.1.3. Добавьте сервис в автозагрузку:

systemctl enable postgresql

1.1.4. Приведите файл /etc/postgresql/11/main/pg_hba.conf к виду:

Важно

Версия PostgreSQL может отличаться.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
 
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    r7office        r7office        192.168.25.234/32       md5
host    r7office        r7office        192.168.25.130/32       md5
host    r7office        r7office        192.168.25.203/32       md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Где:

  • host r7office r7office 192.168.25.234/32 md5 — Это доступ к БД r7office пользователю r7office с ip 192.168.25.234 по методу md5.

1.1.5. Приведите строки в файле /etc/postgresql/11/main/postgresql.conf к виду и раскомментируйте их

listen_addresses = 'localhost, 192.168.25.56'
port = 5432

Где:

  • localhost, 192.168.25.56 — интерфейсы, которые должен слушать PostgreSQL (чтобы слушались все интерфейсы можно также указать ‘*’).

1.1.6. Перезапустите сервис:

systemctl restart postgresql
  • Проверяем:
systemctl status postgresql

1.1.7. Проверьте, что слушает нужные интерфейсы:

netstat -tln | grep 5432
  • Пример вывода:

1.2. Установка и настройка Redis

1.2.1. Установите Redis:

apt install redis -y

1.2.2. Запустите и добавьте в автозагрузку:

systemctl start redis-server
systemctl enable redis-server

1.2.3. Редактируйте файл /etc/redis/redis.conf, строки приведите к виду:

bind 127.0.0.1 192.168.25.56
protected-mode no

Где:

  • bind 127.0.0.1 192.168.25.102интерфейсы, которые необходимо слушать приложению Redis.

1.2.4. Перезапустите сервис:

systemctl restart redis

1.2.5. Проверьте, слушаются ли порты:

netstat -lpn | grep redis

1.3. Установка и настройка RabbitMQ

1.3.1. Установите RabbitMQ:

apt install "rabbitmq-server=3.*" -y

1.3.2. Запустите и добавьте в автозагрузку:

systemctl enable rabbitmq-server --now

1.3.3. Редактируйте/создайте (если нет в директории) файл /etc/rabbitmq/rabbitmq.conf, приведите параметры к виду:

listeners.tcp.other_ip = 192.168.25.56:5672

Где:

  • 192.168.25.56 — ip сервера с RabbitMQ.

1.3.4. Перезапустие сервис и проверьте:

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

1.3.5. Проверьте, слушает ли порты:

netstat -lpn | grep beam
  • Пример вывода:

1.3.6. Выдайте права для ds:

# Создаём пользователя r7office с паролем r7office 
rabbitmqctl add_user r7office r7office    
# Создаем вирутальный хост для DS 
rabbitmqctl add_vhost ds

#Выдаем права на пользователя для доступа к виртуальному хосту
rabbitmqctl set_permissions -p ds r7office ".*" ".*" ".*"
 
# Даём права ВМ с DS (выполнить для каждой ноды DS)
rabbitmqctl set_permissions -p ds r7office ".*" ".*" ".*"
Важно

Обратите внимание, что по умолчанию существует виртуальной хотс «/» с доступом guest\guest

2. Роль балансировщика

Важно

При включенной службе firewalld необходимо выполнить настройку для http и https.

# Добавляем службы:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

2.1. Установите Nginx:

apt install nginx -y

2.1.1. Запустите службу nginx:

systemctl enable nginx --now

2.2. Создайте конфигурационные файлы

2.2.1. Общий конфигурационный файл:

nano /etc/nginx/conf.d/r7-proxy.conf
  • С содержимым:
upstream ds {
  server <IP_DS>;
}
 
map $http_host $this_host {
    "" $host;
default $http_host;
}
 
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
    "" $scheme;
}
 
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
    "" $this_host;
}
 
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
Уточнение


В блоке upstream ds {} — указываем IP адреса серверов DS
<IP_DS> – приватные ip адреса нод с Document Server

2.2.2. Конфигурационный файл для DS:

nano /etc/nginx/conf.d/r7-ds.conf
  • С содержимым:
server {
  listen 80;
  server_name <DNS_DS>;
  server_tokens off;
  ## Redirects all traffic to the HTTPS host
  return 301 https://$server_name$request_uri;
}
 
server {
  listen 443 ssl http2;
  server_name <DNS_DS>;
  server_tokens off;
  root /usr/share/nginx/html;
   
  ssl_certificate <SSL_CERTIFICATE_PATH>;
  ssl_certificate_key <SSL_KEY_PATH>;
  ssl_verify_client off;
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
   
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_session_cache builtin:1000 shared:SSL:10m;
   
  ssl_prefer_server_ciphers on;
   
  add_header X-Content-Type-Options nosniff;
   
  location / {
    proxy_pass http://ds;
    proxy_http_version 1.1;
     
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $proxy_connection;
    proxy_set_header X-Forwarded-Host $the_host;
    proxy_set_header X-Forwarded-Proto $the_scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Где:

  • <DNS_DS> – имя для сервиса DS,
    Например: astracl-ds.uatr7.ru;
  • <SSL_CERTIFICATE_PATH> – путь до ssl сертификата,
    Например: ssl_certificate /etc/nginx/ssl/uatr7.ru.crt;
  • <SSL_KEY_PATH> – путь до приватного ключа сертификата,
    Например ssl_certificate_key /etc/nginx/ssl/uatr7.ru.key.

2.3. Проверьте конфигурацию:

nginx -t
  • Пример вывода:

2.4. Перезапустите сервис:

systemctl restart nginx

3. Файловое хранилище

3.1. Подготовка к установке ПО Samba

Рассмотрим вариант простого samba хранилища на Astra Linux 1.7.4 Orel

Важно

При включенной службе firewalld необходимо выполнить настройку для samba.

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=samba
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

3.1.1. Установите ПО Samba:

apt install samba -y

3.1.2. Запустите сервис:

systemctl enable smbd.service

3.1.3. Создайте директории:

mkdir /mnt/cache
mkdir /mnt/data

3.2. Добавьте файл лицензии

  • По данному пути добавляем файл лицензии с именно таким именем license.lic:
/mnt/data/license.lic

3.3. Создайте пользователя

Обратите внимание

Важно заметить, что в данной инструкции рассматривается чистая инсталляции без имеющихся DS. Если у Вас уже есть DS, то необходимо указать UID и GID пользователя ds с ВМ, где установлен DS.

  • Можно воспользоваться командой:
id ds
Обратите внимание

В данной инструкции установки не рассматривается наличие уже установленного Документ сервера, поэтому UID и GID будут везде указаны 1100. Если Вам важно сохранить имеющийся DS, то необходимо использовать GID и UID с данной ВМ, либо изменить их на ней, возможно использовать данные команды:

systemctl stop ds-* --all
groupmod -g 1100 ds
usermod -u 1100 -g 1100 ds
chown -R ds:ds /var/lib/r7-office/
chown -R ds:ds /var/www/r7-office/
chown -R ds:ds /etc/r7-office/

3.3.1. Создайте пользователя «ds»

Обратите внимание

UID и GID пользователя ds должны быть одинаковые на всех ВМ с Сервер Документов и samba хранилищем

# Создаём группу с gid 1100
groupadd -g 1100 ds
 
# Создаём пользователя с uid 1100 и добавляем его в группу с gid 1100
useradd -u 1100 -g 1100 ds
 
# Задаем пароль пользователю
smbpasswd -a ds
 
# Обновляем права на каталоги
chown ds:ds -R /mnt/cache/
chown ds:ds -R /mnt/data

3.3.2. Редактируйте файл:

vi /etc/samba/smb.conf
  • С содержимым:
[cache]
comment = DS cache
path = /mnt/cache/
valid users = ds
write list = ds
read only = no
writable = yes
 
[data]
comment = DS data
path = /mnt/data
valid users = ds
write list = ds
read only = no
writable = yes

3.3.3. Перезапустите сервис

4. Роль DS

Важно

При включенной службе firewalld необходимо выполнить настройку для http и https.

# Добавляем службы:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

4.1. Подготовка к установке Сервер Документов

4.1.1. Добавьте репозиторий Debian:

nano /etc/apt/sources.list
  • С содержимым:
# Репозиторий Debian
deb https://archive.debian.org/debian/ stretch main contrib non-free

4.1.2. Измените параметр «Pin-Priority» на «500»:

nano /etc/apt/preferences.d/smolensk
  • С содержимым:
Package: *
Pin: release n=1.7_x86-64
Pin-Priority: 900 на 500

4.1.3. Добавьте репозиторий «r7-office»:

sudo apt update && sudo apt install curl -y
sudo echo "deb https://download.r7-office.ru/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/r7-office.list
sudo curl -s https://download.r7-office.ru/repo/gpgkey/r7-office.gpg.key | sudo apt-key add -

4.1.4. Обновите список пакетов:

sudo apt update

4.1.5. Добавьте записи для сервисов в /etc/hosts

Важно

ip для сервисов может быть разный или у Вас может быть свой DNS с уже сделанными записями, поэтому данный пункт можете пропустить.

192.168.25.56 rabbitmq
192.168.25.56 redis
192.168.25.56 postgresql

4.1.6. Задайте параметры для PostgreSQL, RabbitMQ, Redis

  • Для PostgreSQL:
echo r7-office-documentserver-ee ds/db-host string postgresql | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-pwd select r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-user select r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-name select r7office | sudo debconf-set-selections
  • Для RabbitMQ:
echo r7-office-documentserver-ee ds/rabbitmq-host string rabbitmq:5672 | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/rabbitmq-user string r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/rabbitmq-pwd password r7office | sudo debconf-set-selections
  • Для Redis:
echo r7-office-documentserver-ee ds/redis-host string redis | sudo debconf-set-selections

4.1.7. Задайте «header» и «secret» ,включите «jwt»

Обратите внимание

Это параметры из файла /etc/r7-office/documentserver/local.json
Должны быть ОДИНАКОВЫ для всех ВМ с DS в кластере, если используется «JWT»

Важно

Если JWT необходимо отключить, то выполните данную команду:

echo r7-office-documentserver-ee ds/jwt-enabled boolean false | sudo debconf-set-selections

echo r7-office-documentserver-ee ds/jwt-header string AuthorizationJWT | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/jwt-enabled boolean true | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/jwt-secret password x8HtBJJavrBlYmXaVaRwcKPTxW | sudo debconf-set-selections
  • Пример содержимого:
},
      "token": {
        "enable": {
          "request": {
            "inbox": true,
            "outbox": true
          },
          "browser": true
        },
        "inbox": {
          "header": "AuthorizationJWT"
        },
        "outbox": {
          "header": "AuthorizationJWT"
        }
      },
      "secret": {
        "inbox": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        },
        "outbox": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        },
        "session": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        }

4.1.8. Установите пакеты ПО для подключения файлового хранилища:

apt install cifs-utils smbclient -y

4.2. Установите Сервер Документов:

apt-get install r7-office-documentserver-ee -y

4.3. Настройка сервера с Сервер Документов

4.3.1. Остановите службы:

systemctl stop ds-* --all

4.3.2. Создайте файл для авторизации в smb:

nano ~/.ds
  • С содержимым:
# Логин
username=ds
# Пароль (если не требуется, то можно оставить пустым)
password=M7qcsbs3b5IoXSqa

4.3.3. Измените права:

chmod 600 ~/.ds

4.3.4. Добавьте автомонтирование в файл:

nano /etc/fstab
  • С содержимым:
//192.168.25.56/cache /var/lib/r7-office/documentserver/App_Data/cache cifs credentials=/root/.ds,uid=1100,gid=1100,rw,iocharset=utf8,nofail,_netdev 0 0
//192.168.25.56/data /var/www/r7-office/Data cifs credentials=/root/.ds,uid=1100,gid=1100,rw,iocharset=utf8,nofail,_netdev 0 0

Где:

  • 192.168.25.56 — ip samba сервера;
  • /mnt/cache и /mnt/data — каталоги на samba сервере;
  • /var/www/r7-office/Data и /var/lib/r7-office/documentserver/App_Data/cache — пути монтирования на ВМ с DS.

4.3.5. Измените gid группы и uid пользователя ds:

groupmod -g 1100 ds
usermod -u 1100 -g 1100 ds

4.3.6. Назначьте права на директории:

chown -R ds:ds /var/lib/r7-office/
chown -R ds:ds /var/www/r7-office/
chown -R ds:ds /etc/r7-office/
chown -R ds:ds /var/log/r7-office/

4.3.7. Выполните монтирование:

mount -a

4.3.8. Проверьте монтирование:

df -h
  • Пример вывода:

4.3.9. Обновите параметры для ds и nginx

Обратите внимание

Данные параметры должны ОДИНАКОВЫ для всех ВМ с DS в кластере

  • Для ds «secretString»:
nano /etc/r7-office/documentserver/local.json
Обратите внимание

Проверьте в параметре rabbitmq на всех нодах:

"rabbitmq": {
    "url": "amqp://r7office:r7office@192.168.25.102/ds"
  },

Где:

  • r7office:r7office — логин и пароль из пункта 1.3.6;
  • 192.168.25.102 — адрес сервера rabbitmq;
  • /ds — виртуальный адрес из пункта 1.3.6.

  • Для nginx «secure_link_secret»:
nano /etc/r7-office/documentserver/nginx/ds.conf

4.3.10. Перезапустите службу Nginx:

systemctl restart nginx.service

4.3.11. Перезапустите службы ds и проверьте их статус:

systemctl restart ds-* --all
systemctl status ds-* --all

4.4. Проверьте веб страницу DS:

http://192.168.25.234/
Уточнение

Где:

  • 192.168.25.234 — ip адрес DS.

Пример страницы:

4.5. Проверьте веб страницу на балансировщике/reverse proxy:

https://astracl-ds.uatr7.ru/

Где:

  • astracl-ds.uatr7.ru — dns имя балансировщика/reverse proxy.

 

  • Пример страницы:

4.6. Повторите пункт 4 для каждой ноды DS