Содержание

Системные требования

OS
Ubuntu Server LTS 64bit (recommended) 1)

Примерно на 5000 подписчиков

Middlware Server with Stalker Middleware portal
CPUXeon5620
RAM16Gb
HDD2×500Gb RAID-1 (soft or hard)
Content Storage
CPUXeon5620
RAM16Gb
HDDSystem - 2×500Gb RAID-1, Content - 10×2Tb Hdw-RAID-5 (~200 simultaneous views)

Выбор дистрибутива

Приложение может работать под любой *nix системой, однако настоятельно рекомендуем использовать последние стабильные 64 bit дистрибутивы Ubuntu Server LTS. Работа под другими дистрибутивами не гарантируется, либо часть функций middleware может быть не доступна.

Установка портала "Stalker"

Необходимые службы и пакеты

''apache2''
''nginx''
''nginx-extras''
''memcached''
''mysqld'' >= 5
''php5'' >= 5.3.0
''php5-mysql'' <fc #FF0000>*</fc>
''php-pear''
''php-soap'' <fc #FF0000>*</fc>
''php5-intl'' <fc #FF0000>*</fc>
''php-gettext'' <fc #FF0000>*</fc>
''php5-memcache'' <fc #FF0000>*</fc>
''phing'' (для версии >= 4.8.0) - см. Установка **phing**<fc #FF0000>*</fc><fc #FF0000>*</fc>
''upstart'' (для stalkerd - управление PVR)
''apache2-rewrite''
''php5-curl'' <fc #FF0000>*</fc>
''php5-tidy'' <fc #FF0000>*</fc>
''php5-imagick'' <fc #FF0000>*</fc>
''php5-geoip'' <fc #FF0000>*</fc>
''php5-mcrypt'' <fc #FF0000>*</fc>

* начиная с версии 4.8.35 ставятся автоматически при выполнении phing**.

** - установка phing:

pear channel-discover pear.phing.info
pear install phing/phing

Пример установки всех необходимых служб и пакетов одной командой для Ubuntu Server 14.04.3:

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get install -y -u apache2 nginx nginx-extras memcached mysql-server php5 php5-mysql php-pear nodejs upstart && sudo pear channel-discover pear.phing.info && sudo pear install -Z phing/phing

Порядок установки

GRANT ALL PRIVILEGES ON stalker_db.* TO stalker@localhost IDENTIFIED BY '1' WITH GRANT OPTION;
Не редактируйте файл config.ini! Если Вы хотите изменить некоторые настройки - создайте файл custom.ini и добавьте в него необходимую конфигурацию.
Не копируйте все содержимое файла config.ini в custom.ini. Добавляйте в custom.ini только те секции, которые необходимо изменить. Например, если вы хотите изменить настройки MySQL - создайте файл custom.ini со следующими строками:
[database]
mysql_host = 10.128.1.3
mysql_pass = superpass
sudo phing
  • Админ-интерфейс будет доступен по URL http://<your_ip_or_domain_name>/stalker_portal/.

Доступ в Админ-интерфейс по умолчанию:
логин: admin
пароль: 1.
Рекомендуемый браузер для админ-интерфейса: - Mozilla Firefox, Google Chrome.

При необходимости пароль можно изменить в MySQL:

update administrators set pass=MD5('новый пароль') where login='admin'
  • Клиентская часть будет доступна по URL http://<your_ip_or_domain_name>/stalker_portal/c/index.html.

В STB, URL клиентской часть портала устанавливается в - Системные настройкиСерверы(Портал1 и/или Портал2). Переменные окружения - portal1, portal2.

Настройка MySQL, PHP, Node.js, Apache, Nginx

MySQL

max_allowed_packet = 32M

PHP

short_open_tag = On

Node.js

Apache

Внимание!Если в системе установлен пакет libapache2-mod-php5filter, необходимо удалить его.

sudo a2enmod rewrite
Options -Indexes -MultiViews
AllowOverride All
NameVirtualHost *:88
Listen 88

Nginx

Пример конфигурации:

server {
    listen       80;
    server_name  localhost;
 
    location / {
        proxy_pass http://127.0.0.1:88/;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
    }
 
    location ~* \.(htm|html|jpeg|jpg|gif|png|css|js)$ {
        root /var/www;
        expires 30d;
    }
}

Обновление версии

  1. Переименовать каталог с предыдущей версией, например, в stalker_portal-old.
  2. Скачать и распаковать архив с новой версией;
  3. Скопировать файл custom.ini из предыдущей версии в новую;
  4. Скопировать каталог /var/www/stalker_portal/screenshots/ из предыдущей версии в новую;
  5. Cкопировать все файлы каталога stalker_portal/misc/logos/ (кроме dummy.png) из предыдущей версии в новую;
  6. Зайти в /var/www/stalker_portal/deploy/ и выполнить:
sudo phing

Локализация

Портал

Интерфейс Middleware Stalker использует две локали RU, EN. По умолчанию Stalker вычитывает переменную текущей локализации из основного ПО и устанавливает локализацию интерфейса согласно этой переменной.

Для установки локализации портала Stalker по умолчанию необходимо:

Примерное содержание custom.ini:

[locales]
default_locale = en_GB.utf8
;allowed_locales[Русский] = ru_RU.utf8
allowed_locales[English] = en_GB.utf8

Таким образом портал «Stalker» загрузится с английским интерфейсом независимо от локали внутреннего ПО.

Внимание!Название локалей используемых в Middleware и названия системных локалей на сервере - должны совпадать

Локализация интерфеса на других языках

Админ интерфейс

Для корректного переключение локализации в админ интерфейсе в системе должны быть установлены локали en_GB.utf8 и ru_RU.utf8.






Установка • Конфигурирование хранилища (отдельный сервер)

Необходимые службы и пакеты

  1. apache2
  2. php5 >= 5.3.0
  3. php5-soap
  4. python-argparse (для записей ТВ)
  5. nginx (для ТВ архива, записей или VOD по HTTP)

Порядок установки

chmod a+x install.sh
./install.sh

Примерное содержание файла /var/www/stalker_portal/storage/config.php:

define('VIDEO_STORAGE_DIR', '/media/raid0/storage/');
define('KARAOKE_STORAGE_DIR', '/media/raid0/karaoke/');
define('RECORDS_DIR', '/media/raid0/records/');
define('NFS_HOME_PATH', '/media/raid0/mac/');
// Use login and password from the configuration file. (api_auth_login and api_auth_password in server/custom.ini)
define('API_URL', 'http://login:password@192.168.1.71/stalker_portal/api/');
define('PORTAL_URL', 'http://192.168.1.71/stalker_portal/');
define('STORAGE_NAME', 'bb3');

где:

VIDEO_STORAGE_DIR - каталог хранения файлов видеоклуба;

KARAOKE_STORAGE_DIR - каталог хранения файлов караоке;

RECORDS_DIR - каталог хранения файлов записей PVR и «ТВ Архива»« см. Настройка "ТВ Архива";

NFS_HOME_PATH - домашняя директория приставок;

API_URL - адрес API портала. URL, по которому будут происходить обращения к API портала;

PORTAL_URL - адрес портала. К нему будет обращаться хранилище для проверки ключей доступа к архиву. Например, http://<portal ip or domaшne name>/stalker_portal/

STORAGE_NAME - имя хранилища.

sudo mkdir -p -m 0777 /media/raid0/storage /media/raid0/karaoke /media/raid0/records /media/raid0/mac
sudo mkdir /var/www/media
ln -s /media/raid0/mac/ /var/www/media/<имя хранилища>

Настройка Apache, Nginx

Apache

NameVirtualHost *:88
Listen 88
TimeOut 1800

Nginx

Пример конфигурации:

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://127.0.0.1:88/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    location ~* \.(mpg|mpeg|avi|ts|mkv|mp4|mov|m2ts|flv|m4v|srt|sub|ass)$ {

        secure_link $arg_st,$arg_e;
        secure_link_md5 "supersecret$uri$remote_addr$arg_e"; # you can change secret "supersecret" in the portal config - nginx_secure_link_secret

        if ($secure_link = "") {
            return 403;
        }

        if ($secure_link = "0") {
            return 410;
        }
        
        send_timeout 6h;
        root /var/www/;
    }
}


Настройка "ТВ Архива"

Перед тем, как включать опцию «Вести ТВ архив» на ТВ канале, необходимо сконфигурировать "хранилище".
Внимание!!! Возможна запись только мультикаст потоков!!! Мультикаст потоки необходимых для записи каналов должны быть доступны на «Хранилище»
Проверить доступность мультикаст потоков необходимых каналов можно при помощи утилиты dumprtp. Утилита dumprtp входит в состав пакета dvbstream.
Пример:
dumprtp 239.1.1.1 1234 > dump239.1.1.1.ts

где:

  • 239.1.1.1 - IP адрес необходимого мультикаст потока
  • 1234 - порт необходимого мультикаст потока
  • dump239.1.1.1.ts - имя файла с дампом мультикаст потока.

Полученный файл проиграть любым доступным плеером (например: VLC).



где:

RECORDS_DIR - каталог с правами на запись 0777, в нем необходимо создать каталог archive, в котором и будут создаваться файлы тв-архива.

API_URL - адрес API портала по которому будет обращаться процесс, записывающий канал.

Для проверки можно открыть в браузере ваш API_URL для ТВ Архива <API URL>/tv_archive/, должно отобразиться: {«status»:«ERROR»,»results«:null,»error«:«Empty storage name»}. Если отображается ошибка 404 Not Found, то, возможно, неправильно сконфигурирован apache и mod_rewrite. Внимание! /tv_archive - виртуальный каталог, создавать вручную его не нужно

PORTAL_URL - адрес портала. К нему будет обращаться хранилище для проверки ключей доступа к архиву. Например, http://<portal ip or domaшne name>/stalker_portal/

STORAGE_NAME - имя хранилища, указанное в админ интерфейсе.

Примерное содержание файла /var/www/stalker_portal/storage/config.php:

define('VIDEO_STORAGE_DIR', '/media/raid0/storage/');
define('KARAOKE_STORAGE_DIR', '/media/raid0/karaoke/');
define('RECORDS_DIR', '/media/raid0/records/');
define('NFS_HOME_PATH', '/media/raid0/mac/');
// Use login and password from the configuration file. (api_auth_login and api_auth_password in server/custom.ini)
define('API_URL', 'http://login:password@192.168.1.71/stalker_portal/api/');
define('PORTAL_URL', 'http://192.168.1.71/stalker_portal/');
define('STORAGE_NAME', 'bb3');
mkdir -m 0777 /media/raid0/records/archive
ln -s /media/raid0/records/archive/  /var/www/
TimeOut 1800

Безопасность

Админ Интерфейс

Идентификация пользователя

В первую очередь необходимо включить модуль rpaf в apache. Это позволит видеть настоящий ip адрес пользователя при работе через nginx и использовать ограничение доступа по IP в конфигурационных файлах apache.

sudo apt-get install libapache2-mod-rpaf

Ограничение доступа в админ интерфейс

Для более надежной защиты админ интерфейса портала настоятельно рекомендуется открывать к нему доступ только с определенных IP адресов. Это можно сделать в конфигурационном файле apache, в котором описывается хост портала. После изменений требуется перезапуск apache.

<Directory /var/www/stalker_portal/server/administrator/>
    Order Deny,Allow
    Deny from All
    Allow from 192.168.1.0/24
</Directory>

Смена пароля пользователя

update administrators set pass=MD5('новый пароль') where login='admin'

STB - Авторизация

Настоятельно рекомендуем! для клиентского доступа к порталу использовать авторизацию пользователей по логину и паролю, метод - "Авторизация с ключом"

Отключение поддержки эмуляторов и устройств сторонних производителей

В custom.ini добавить след. строку:

disable_third_party_devices = true

Ограничение доступа к порталу для всех новых приставок

Начиная с версии портала 4.8.63 в конфигурационном файле появилась опция default_stb_status, которая позволяет закрыть доступ к порталу для всех новых приставок. Для того чтобы новые приставки по умолчанию были отключены, надо добавить в server/custom.ini:

default_stb_status = 0

Для старых версий в базе MySQL необходимо выполнить:

ALTER TABLE `users` MODIFY `status` tinyint DEFAULT 1;

При этом все приставки первый раз загрузившие портал будут в админ интерфейсе со статусом OFF.

Доступ STB в портал по логину и паролю

Простая авторизация

Организация доступа в портал для новых приставок по логину и паролю. Администратор портала создает логин/пароль и выдает пользователю. При первом запуске портала появится окно авторизации с полями для ввода логина и пароля. После успешной авторизации к логину в портале привязывается MAC адрес приставки. Последующие загрузки портала происходят без необходимости авторизации.

Для этого необходимо:

  1. В custom.ini добавить строку
    auth_url = http://localhost/stalker_portal/server/tools/auth_simple.php
  2. В админ интерфейсе в разделе Пользователи > Добавить - добавить пользователя, достаточно указать только логин (уникальный) и пароль. Поле MAC адреса заполнять не нужно.
Авторизация с ключом

Организация доступа в портал по логину и паролю. Администратор портала создает логин/пароль и выдает пользователю. При первом запуске портала появится окно авторизации с полями для ввода логина и пароля. После успешной авторизации на основании логина и пароля генерируется ключ доступа. Ключ хранится на STB. При последующих загрузках портала проверяется валидность ключа. При попытке подключить к порталу другую приставку используя этот же логин и пароль, пользователь так же увидит окно авторизации и при успешном вводе логина и пароля новое устройство получает ключ, предыдущее устройство автоматически разлогинивается.

Для этого необходимо:

  1. В custom.ini добавить строку
    auth_url = http://localhost/stalker_portal/server/tools/auth_every_load.php
  2. В админ интерфейсе в разделе Пользователи > Добавить необходимо добавить пользователя, достаточно указать только логин (уникальный) и пароль. Поле MAC адреса заполнять не нужно.

API

При включении/использовании API настоятельно рекомендуется уделять особое внимание БЕЗОПАСНОСТИ.
Рекомендуется использовать:

  • Аутентификацию (логин/пароль) для доступа к API Обязательно!.
  • Криптостойкие пароли.
  • Межсетевые экраны (firewall)

Биллинг

Если необходимо включение API для работы с внешними биллинговыми системами, то настоятельно рекомендуется использовать авторизацию. При этом в server/custom.ini необходимо указать логин и пароль

[server_api]
; API required for tv archive, pvr and billing
enable_api = true
api_auth_login = login ; указать логин
api_auth_password = password ; указать пароль

Хранилища контента (VOD). ТВ Архив

На хранилищах, на которых ведется запись ТВ архива, в storage/config.php в параметре API_URL нужно указать выбранные логин и пароль в формате:

define('API_URL', 'http://login:password@localhost/stalker_portal/api/tv_archive/');

Временные ссылки

Если используются временные ссылки Wowza для проигрывания тв каналов, то также нужно указать логин и пароль для работы с API в конфиге Wowza приложения. Для случая с nginx и VLC/udpxy ничего не требуется.

Настройка адреса API портала в конфигурационном файле приложения Wowza:

<Property>
    <Name>stalkerApiServer</Name>
    <Value>http://login:password@192.168.1.1/stalker_portal/api/</Value>
</Property>
Межсетевой экран (Firewall)

Рекомендуется: на сервере с порталом, открыть доступ к 88 порту (Apache) только для локального доступа и доступа с хранилищ, которые работают с использованием временных ссылок.

Мониторинг тв каналов

В скрипте check_channels.sh в API_URL необходимо указать URL с учетом авторизации:

API_URL=http://login:password@localhost/stalker_portal/api/monitoring_links/
1)
Внимание! Ubuntu Server 16.04 LTS в настоящий момент не поддерживается. В связи с отсутствием некоторых необходимых пакетов для установки «из коробки»