2.2. Настройка Boro VoD Solution

Примечание

Разделы данной главы являются инструкциями по настройке приложения Boro VoD Solution после его успешной установки и запуска. Таким образом, инструкции применимы к серверу, который уже находится в эксплуатации, если это не оговаривается отдельно.

2.2.1. Изменение имени сервера (Host name)

Чтобы изменить имя сервера, заданное в переменной SERVER_PUBLIC_NAME, уже после установки Boro VoD Solution необходимо выполнить следующие шаги:

  • Запросить у инженера технической поддержки сертификат для нового доменного имени или IP-адреса сервера;

  • Авторизоваться под учетной записью администратора сервера (роль суперадмина), перейти в настройки SettingsПанель администратораCertificates и загрузить полученные сертификаты;

  • При необходимости обновить имя сервера (Host name) во вкладке SettingsПанель администратораGeneral;

  • В консоли сервера, на котором установлен Boro VoD Solution, запустить от суперпользователя следующую команду:

    NEW_SERVER_PUBLIC_NAME="local_BoroVoDServer_ip_or_hostname"        #set new IP address or hostname of the BoroVoDServer
    sed -i "s#client_api_base_url: .*#client_api_base_url: \"https://${NEW_SERVER_PUBLIC_NAME}:8444\"#;
            s#turn:turn:[^:]*:3478#turn:turn:${NEW_SERVER_PUBLIC_NAME}:3478#" \
            /opt/elecard/boro_vod/Rails/config/.env.yml
    systemctl reload boro_vod_puma.default
    if [ -e /etc/coturn/turnserver.conf ]; then
      sed -i "s/^realm=.*/realm=${NEW_SERVER_PUBLIC_NAME}/" /etc/coturn/turnserver.conf
      systemctl restart coturn
    fi
    find /opt/elecard/boro_vod/Rails/tmp/archive/ -type f -name 'Boro.proj*.zip' -delete
    

    Вместо local_BoroVoDServer_ip_or_hostname следует указать новое имя сервера. В результате будут изменены адрес сервера в конфигурационном файле зонда и адрес STUN/TURN-сервера;

  • Ранее скачанные зонды не смогут подключиться к серверу, для возобновления их работы следует обновить значение поля server в файле monitor.cfg. После редактирования конфигурации зонда запустите его и убедитесь, что зонд отображается на сервере Boro VoD Solution.

2.2.2. Изменение расположения файлов базы данных

Чтобы изменить директорию, в которой должны храниться файлы базы данных, выполните следующие команды от суперпользователя:

# Step #0: setup environment:
NEW_DB_LOCATION="/PATH/TO/NEW/DB/LOCATION"        # set path to new location of DB files

# Step #1: check available space:
CUR_DB_DIR=$(realpath /var/lib/pgsql);
NEW_DB_LOCATION="$NEW_DB_LOCATION/pgsql";
mkdir -p "$NEW_DB_LOCATION";
if [ "$(findmnt -o TARGET -nT "$CUR_DB_DIR")" != "$(findmnt -o TARGET -nT "$NEW_DB_LOCATION")" ]; then
  DB_SIZE=$(du -s -B1M "$CUR_DB_DIR" | cut -f1)
  TARGET_FS_AVAIL=$(df -B1M --output=avail "$NEW_DB_LOCATION" | tail -1)
  if [ "$DB_SIZE" -gt "$TARGET_FS_AVAIL" ]; then
    echo "No sufficient space on destination FS:"
    printf "%22s - %9d MB\n" \
      "DB size" "$DB_SIZE" "target FS available" "$TARGET_FS_AVAIL"
  fi
fi

# Step #2: stop PostgreSQL:
PG_VER=$(psql -V | sed 's/psql (PostgreSQL) \([0-9]\+\)\.[0-9]\+.*/\1/');
systemctl stop postgresql-${PG_VER}.service;

# Step #3: move files:
echo "Start copying: \"$CUR_DB_DIR\" -> \"$NEW_DB_LOCATION\" ...";
time mv -Tf "$CUR_DB_DIR" "$NEW_DB_LOCATION";

# Step #4: update link and SELinux rules:
ln -Tfs "$NEW_DB_LOCATION" /var/lib/pgsql;
semanage fcontext --add --equal /var/lib/pgsql "$NEW_DB_LOCATION";
restorecon -R "$NEW_DB_LOCATION";

# Step #5: restore services:
systemctl restart postgresql-${PG_VER}.service \
  boro_vod_sidekiq.default boro_vod_puma.{web_api,default} \
  boro_vod_golang.{worker,server};

# Step #6: check Solution status:
/opt/elecard/boro_vod/bin/status.sh

Примечания

  • Вместо /PATH/TO/NEW/DB/LOCATION следует указать директорию для хранения файлов базы данных. Дополнительная поддиректория pgsql создастся в указанном месте назначения;

  • Из-за потенциально опасных операций следует выполнять скрипт по частям, проверяя ошибки после каждого шага;

  • Операция перемещения может занять некоторое время, которое зависит от размера базы данных и скоростей устройств хранения данных;

  • После выполнения переноса проверьте web-интерфейс Boro VoD Solution.

2.2.3. Организация доступа к web-интерфейсу по HTTPS

Чтобы настроить доступ к web-интерфейсу по защищенному протоколу, необходимо выполнить следующее от суперпользователя:

  • Добавить правило в Firewall:

    firewall-cmd --state && (firewall-cmd --permanent --add-service=https; firewall-cmd --reload);
    
  • Далее следует настроить пути до сертификата и ключа, которые должны использоваться для установки HTTPS-соединения. Для этого в файле /etc/nginx/sites-available/boro_vod.https.conf укажите пути до сертификата ssl_certificate и ключа ssl_certificate_key. Рекомендуемым вариантом размещения сертификата и ключа являются пути, указанные в файле boro_vod.https.conf. Однако если вы хотите использовать собственные пути размещения, требуется учесть следующие ограничения:

    • Файлы должны иметь одинаковый контекст безопасности SELinux httpd_config_t,

    • Не стоит размещать сертификат и ключ в домашних директориях каких-либо пользователей.

  • Для добавления конфигурационного файла с использованием HTTPS-порта в Nginx введите следующую команду:

    ln -fs ../sites-available/boro_vod.https.conf /etc/nginx/sites-enabled/boro_vod.https.conf
    
  • Чтобы проверить конфигурацию и перезапустить Nginx:

    nginx -t && (restorecon /var/run/nginx.pid; systemctl restart nginx)
    

Пример c помощью утилиты Certbot

Ниже описан метод генерации HTTPS-сертификата с помощью утилиты Certbot. Данный метод подходит для организации HTTPS-доступа на время тестирования Boro VoD Solution.

Выполните команды последовательно от суперпользователя:

# Команда добавит правило в Firewall:
firewall-cmd --state && (firewall-cmd --permanent --add-service=https; firewall-cmd --reload);
# Команда установит репозиторий EPEL (Extra Packages for Enterprise Linux) repository:
dnf install epel-release -y
# Команда установит утилиту Certbot и ее дополнительный модуль для Nginx:
dnf install -y certbot python3-certbot-nginx
# Команда запустит процесс генерации HTTPS-сертификата. Следуйте инструкции в терминале:
certbot --nginx -d <domain name>
  • Вместо <domain name> укажите существующее зарегистрированное доменное имя;

  • По завершении Certbot:

    • Укажет пути до сертификата и ключа,

    • Укажет дату действия сертификата,

    • Пропишет пути до сертификата и ключа в файл /etc/nginx/sites-available/boro_vod.http.conf.

  • Отредактируйте содержимое файла /etc/nginx/sites-available/boro_vod.http.conf;

  • Закомментируйте первую строку, содержащую include sites-include/boro_vod.conf; c помощью символа #;

  • Сохраните изменения;

  • Проверьте конфигурацию и перезапустите Nginx:

    nginx -t && (restorecon /var/run/nginx.pid; systemctl restart nginx)
    

2.2.4. Разрешение ControlAPI в Nginx

По умолчанию в настройках Nginx-сервера доступ к API заблокирован для всех IP-адресов. Чтобы настроить доступ, необходимо отредактировать файл /etc/nginx/sites-include/boro_vod.conf на сервере Boro VoD Solution от суперпользователя. Найдите в файле следующий блок:

location /ctrl_api {
#    allow 10.1.1.0/16;
#    allow 2001:0db8::/32;
    deny all;
    try_files /dev/null @default;
}
  • Чтобы предоставить доступ, раскомментируйте строку allow и укажите IP-адрес или пул IP-адресов. Вы можете задать список правил, указав несколько директив allow с новой строки.

  • Для разрешения доступа с любого IP-адреса закомментируйте строку deny all, чтобы она выглядела следующим образом:

    #    deny all;
    

Чтобы проверить конфигурацию и применить настройки, перезапустите Nginx:

nginx -t && (restorecon /var/run/nginx.pid; systemctl restart nginx)

При возникновении ошибок устраните их и попытайтесь повторно применить конфигурацию.

Подсказка

Более подробно о настройке доступа для IP-адресов в Nginx можно узнать по этой ссылке.

2.2.5. Изменение сроков хранения статистики

По умолчанию срок хранения данных составляет 14 дней. В течение этого срока вы можете обратиться к истории проверки (журналы, инфографики, отчеты) запущенных ранее задач. Ротация статистики происходит во время ежедневной очистки данных, в результате чего удаляются данные старше установленного срока хранения.

Если необходимо изменить срок хранения, перейдите к файлу /opt/elecard/boro_vod/Rails/config/config/.env.yml и добавьте следующие строки TBD:

db:
  keep_rotation_tables_days: xx

Вместо xx укажите нужный срок хранения в сутках. Далее примените изменения:

systemctl restart boro_vod_sidekiq.default

2.2.6. Сброс пароля администратора

Если пароль администратора был скомпрометирован, то его можно изменить в SettingsПанель администратора ➝ вкладка Users. Найдите пользователя admin@admin.com, перейдите на вкладку Edit settings и обновите его пароль.

Если вы забыли пароль, единственный способ входа в аккаунт администратора — это сброс пароля. Зайдите в консоль сервера, на котором установлен Boro VoD Solution, и от суперпользователя выполните следующий скрипт, где в качестве значения переменной USER_PASSWORD необходимо указать новый пароль:

USER_EMAIL='admin@admin.com'
USER_PASSWORD='adm1n678'

su boro -c "
  cd /opt/elecard/boro_vod/Rails;
  source setup_env.sh;
  bin/rails r \"
    u = User.find_by!(email: '$USER_EMAIL');
    u.password = '$USER_PASSWORD';
    u.save(validate: false)
  \"
"

2.2.7. Ручная установка драйверов HASP

По умолчанию функция установки драйверов HASP отключена при установке приложения Boro VoD Solution. Если необходимо установить поддержку дополнительной защиты HASP, выполните команды ниже от суперпользователя:

  1. Перейдите во временную директорию с распакованным архивом установки:

    cd $TMP_DIR/packs
    

    Если временная директория была удалена, распакуйте архив с приложением Boro VoD Solution, как указано в шаге 2 раздела Установка Boro VoD Solution Server. Запускать скрипт установки не требуется!

  2. Установите драйверы защиты HASP:

    rpm -ivh aksusbd.x86_64.rpm
    
  3. Перезапустите все сервисы Boro VoD Solution:

    systemctl restart boro_vod*