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

OS
Ubuntu Server LTS 64bit (recommended) 1) Внимание! Ubuntu Server 16.04 LTS в настоящий момент не поддерживается. В связи с отсутствием некоторых необходимых пакетов для установки «из коробки»

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

Middlware Server with Stalker Middleware portal
CPU	2×Xeon5620
RAM	16Gb
HDD	2×500Gb RAID-1 (soft or hard)
Content Storage
CPU	2×Xeon5620
RAM	16Gb
HDD	System - 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

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

1. Установить необходимые пакеты и зависимости;

2. Распаковать архив с версией в корень веб сервера /var/www/. Файлы проекта должны быть доступны по URL http://<you_ip_or_domain_name>/stalker_portal/;

3. Создать пользователя MySQL с доступом только в базу stalker_portal:

GRANT ALL PRIVILEGES ON stalker_db.* TO stalker@localhost IDENTIFIED BY '1' WITH GRANT OPTION;

4. Выполнить необходимые изменения в конфиге портала. Для изменения настроек/конфигурации, отличающихся от настроек по умолчанию - необходимо создать конфигурационный файл /var/www/stalker_portal/server/custom.ini и добавить в него отличающиеся от config.ini пункты настроек.

Не редактируйте файл config.ini! Если Вы хотите изменить некоторые настройки - создайте файл custom.ini и добавьте в него необходимую конфигурацию. Не копируйте все содержимое файла config.ini в custom.ini. Добавляйте в custom.ini только те секции, которые необходимо изменить. Например, если вы хотите изменить настройки MySQL - создайте файл custom.ini со следующими строками: [database] mysql_host = 10.128.1.3 mysql_pass = superpass

5. Зайти в /var/www/stalker_portal/deploy/ и выполнить:

sudo phing

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

Админ-интерфейс будет доступен по 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

Установить в /etc/mysql/my.cnf

max_allowed_packet = 32M

PHP

Установить в /etc/php5/apache2/php.ini

short_open_tag = On

Node.js

Необходимо убедиться что в config.ini и custom.ini установлены правильные значения daemon_api_url и stalker_api_url

Apache

Включить mod_rewrite:

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

sudo a2enmod rewrite

Установить в конфиге хоста, отвечающего за портал:

Options -Indexes -MultiViews AllowOverride All

В /etc/apache2/ports.conf установить:

NameVirtualHost *:88 Listen 88

В /etc/apache2/sites-enabled/default.conf исправить <VirtualHost *:80> на <VirtualHost *:88>

Перезапустить apache.

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; } }

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

Переименовать каталог с предыдущей версией, например, в stalker_portal-old.

Скачать и распаковать архив с новой версией;

Скопировать файл custom.ini из предыдущей версии в новую;

Скопировать каталог /var/www/stalker_portal/screenshots/ из предыдущей версии в новую;

Cкопировать все файлы каталога stalker_portal/misc/logos/ (кроме dummy.png) из предыдущей версии в новую;

Зайти в /var/www/stalker_portal/deploy/ и выполнить:

sudo phing

Локализация

Портал

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

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

создать файл custom.ini в каталоге .../stalker_portal/server/

скопировать в custom.ini секцию [Locales] из файла ...//stalker_portal/server/config.ini

отредактировать custom.ini

Примерное содержание 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.

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

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

apache2

php5 >= 5.3.0

php5-soap

python-argparse (для записей ТВ)

nginx (для ТВ архива, записей или VOD по HTTP)

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

Распаковать архив с версией портала. Скопировать содержимое каталога /stalker_portal/storage/ в /var/www/stalker_portal/storage/;

Для записи ТВ архива необходимо зайти в /var/www/stalker_portal/storage/ и выполнить;

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

Отредактировать файл /var/www/stalker_portal/storage/config.php и привести к виду:

Примерное содержание файла /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 - имя хранилища.

Создать каталоги /media/raid0/storage/, /media/raid0/karaoke/, /media/raid0/records/, /media/raid0/mac/ и установить на них все права 0777.

sudo mkdir -p -m 0777 /media/raid0/storage /media/raid0/karaoke /media/raid0/records /media/raid0/mac

Создать каталог /var/www/media/

sudo mkdir /var/www/media

Создать в каталоге /var/www/media/ символьную ссылку на домашние директории приставок:

ln -s /media/raid0/mac/ /var/www/media/<имя хранилища>

В админ интерфейсе портала, в разделе «Хранилища» выполнить необходимые настройки:

Имя - <имя хранилища>. Например: bb3;

IP - IP адрес хранилища;

Домашняя директория - <домашняя директория приставок>. Например: /media/raid0/mac/

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

Apache

В /etc/apache2/ports.conf установить:

NameVirtualHost *:88 Listen 88

В /etc/apache2/sites-enabled/default.conf изменить <VirtualHost *:80> на <VirtualHost *:88>

Если планируется ТВ архив, то добавить внутри блока VirtualHost директиву

TimeOut 1800

Убедиться что в системе не установлен пакет libapache2-mod-php5filter. При необходимости удалить его.

Перезапустить apache.

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).

1. Необходимо убедиться что на сервере с порталом установлен и запущен memcached.

2. В админ интерфейсе в разделе «Хранилища» нужно выбрать нужный сервер и установить на нем опцию «Запись ТВ».

3. Затем на самом хранилище в /var/www/stalker_portal/storage/config.php необходимо правильно установить RECORDS_DIR, API_URL, PORTAL_URL и STORAGE_NAME.

где:

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');

4. Создать каталог /media/raid0/records/archive/

mkdir -m 0777 /media/raid0/records/archive

5. Cоздать символьную ссылку папки с архивом в корень web сервера

ln -s /media/raid0/records/archive/ /var/www/

После этого в админ интерфейсе при редактировании ТВ канала можно указывать опцию «Вести ТВ архив».

Убедиться что в конфигурационном файле сервера apache, отвечающем за хост с архивом, установлена директива:

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 адрес приставки. Последующие загрузки портала происходят без необходимости авторизации.

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

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

auth_url = http://localhost/stalker_portal/server/tools/auth_simple.php

В админ интерфейсе в разделе Пользователи > Добавить - добавить пользователя, достаточно указать только логин (уникальный) и пароль. Поле MAC адреса заполнять не нужно.

Авторизация с ключом

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

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

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

auth_url = http://localhost/stalker_portal/server/tools/auth_every_load.php

В админ интерфейсе в разделе Пользователи > Добавить необходимо добавить пользователя, достаточно указать только логин (уникальный) и пароль. Поле 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/