На кофе

Поиск

Поиск Яндекс

Вход

Установка сервера видеонаблюдения Shinobi на Астра Линукс 1.7

Поделиться статьей

ShinobiCCTV - сервер видеонаблюдения с открытым исходным кодом, написан на Node.js и очень прост в использовании.

Shinobi рассчитан на высокую производительность. Вы можете собрать видеопотоки различных протоколов в одном месте и не заморачиваться с перекодировкой и какими-то еще дополнительными действиями.

Собрать в кучу IP камеры и видеорегистраторы на одном своем сайте? Не вопрос! Shinobi на Astra Linux поможет Вам в этом!

Основатель Shinobi Systems Мо Алам хотел создать облачное решение для записи видео. Такое, которым мог бы легко пользоваться каждый. Просто войдите в свою учетную запись, добавьте сведения о камере, задайте параметры, и все готово. Просмотр трансляций и записей на вашем мобильном устройстве простым открытием веб-страницы. Никаких установок. Это означает, что вы можете просматривать их на любом устройстве с поддерживаемым браузером.

За основу возьмем стандартный скрипт установки Shinobi и поправим его под Astra Linux:

Скачаем скрипт-установщик с официального сайта в домашнюю папку ну и заодно переименуем его:

sudo wget -O ~/shinobi-astra-install.sh   https://cdn.shinobi.video/installers/shinobi-install.sh

1. Начнем править скрипт установки Shinobi для Astra Linux:

Скрипт установки скачивает ветку git репозитория в нашу локальную домашнюю папку.

Все что нам необходимо - это создать по аналогии с Ubuntu файлы установки Shinobi для Astra Linux.

Ну и, естественно добавить выбор операционной системы Astra Linux в еще одном файле, путем замены его содержимого также в нашем редактируемом скрипте установки shinobi-astra-install.sh.

Путем замены и дополнения содержимого нашего файла-установщика shinobi-astra-install.sh, для начала, разрешим установку пакетов не только релиза Astra Linux, так как нам будет нужна версия Node.js выше 10ой, которая имеется в репозитории Astra Linux, так сказать закомментируем содержимое  файла /etc/apt/preferences.d/smolensk , ну и заменим сурслисты Astra Linux на верные интернет-репозитории Astra Linux путем замены содержимого файла /etc/apt/sources.list

Откроем наш файл на редактирование:

kate ~/shinobi-astra-install.sh

После 110 строки добавляем:

cat << EOF > /etc/apt/preferences.d/smolensk
#Package: *
#Pin: release n=1.7_x86-64
#Pin-Priority: 900
EOF

cat << EOF > /etc/apt/sources.list
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/             1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/         1.7_x86-64 main contrib non-free astra-ce
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/uu/last/repository-base/     1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/uu/last/repository-extended/ 1.7_x86-64 main contrib non-free astra-ce
EOF

sudo apt update

После этих строк  путем вставки в наш скрипт shinobi-astra-install.sh следующего кода добавим в папку склонированной ветки git репозитория 3 файла с необходимым нам содержимым для Astra Linux и заменим содержимое одного файла путем вставки в наш скрипт shinobi-astra-install.sh следующего кода:

cat << EOF > "$installLocation"/Shinobi/INSTALL/now.sh
#!/bin/bash
echo "Установщик Shinobi"
echo "========"
echo "Выберите свою ОС"
echo "Если Ваша ОС не в списке, пожалуйста, обратитесь к документации."
echo "========"
echo "1. Ubuntu - Fast and Touchless"
echo "2. Ubuntu - Advanced"
echo "3. Alma Linux 9.2 / Rocky 9 / CentOS 8 - Fast and Touchless (Red Hat)"
echo "4. CentOS"
echo "5. MacOS"
echo "6. FreeBSD"
echo "7. OpenSUSE"
echo "8. Astra Linux 1.7"
echo "========"
read oschoicee
case \$oschoicee in
"1")
chmod +x INSTALL/ubuntu-touchless.sh
sh INSTALL/ubuntu-touchless.sh
  ;;
"2")
chmod +x INSTALL/ubuntu.sh
sh INSTALL/ubuntu.sh
  ;;
"3")
chmod +x INSTALL/rocky9-touchless.sh
sh INSTALL/rocky9-touchless.sh
  ;;
"4")
chmod +x "INSTALL/CentOS - Quick Install.sh"
sh "INSTALL/CentOS - Quick Install.sh" 1
  ;;
"5")
chmod +x INSTALL/macos.sh
sh INSTALL/macos.sh
  ;;
"6")
chmod +x INSTALL/freebsd.sh
sh INSTALL/freebsd.sh
  ;;
"7")
chmod +x INSTALL/opensuse.sh
sh INSTALL/opensuse.sh
  ;;
"8")
chmod +x INSTALL/astra.sh
sh INSTALL/astra.sh
  ;;

*)
  echo "Choice not found."
  ;;
esac
EOF

cat << EOF > "$installLocation"/Shinobi/INSTALL/astra.sh
#!/bin/bash
DIR=\$(dirname \$0)
echo "========================================================="
echo "==!! Shinobi : The Open Source CCTV and NVR Solution !!=="
echo "========================================================="
echo "Чтобы ответить утвердительно нажмите (y) в строчном режиме и нажмите ENTER."
echo "По умолчанию нет (N). Пропустите компоненты в которых не нуждаетесь."
echo "============="
#Detect Ubuntu Version
echo "============="
echo " Определяем версию Astra"
echo "============="
getubuntuversion=\$(lsb_release -r | awk '{print $2}' )
echo "============="
echo " Версия Astra: \$getubuntuversion"
echo "============="
sudo apt install sudo wget -y
sudo apt install -y software-properties-common
sudo apt install  git gcc-8 g++-8 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
#create conf.json
if [ ! -e "./conf.json" ]; then
    sudo cp conf.sample.json conf.json
    #Generate a random Cron key for the config file
    cronKey=\$(head -c 1024 < /dev/urandom | sha256sum | awk '{print substr($1,1,29)}')
    #Insert key into conf.json
    sudo sed -i -e 's/change_this_to_something_very_random__just_anything_other_than_this/'"$cronKey"'/g' conf.json
fi
#create super.json
if [ ! -e "./super.json" ]; then
    echo "============="
    echo "Superuser по умолчанию : Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript."
    echo "Пароль по умолчанию : admin"
    echo "* Вы можете изменить эти настройки в файле \"super.json\" расположенном в каталоге Shinobi."
    sudo cp super.sample.json super.json
fi
if ! [ -x "\$(command -v ifconfig)" ]; then
    echo "============="
    echo "Shinobi - устанавливаем Net-Tools и Dos2Unix"
    sudo apt install net-tools -y
fi
sudo apt install dos2unix
if ! [ -x "\$(command -v node)" ]; then
    echo "============="
    echo "Shinobi - устанавливаем Node.js"
    $installLocation/Shinobi/INSTALL/nodejs-astra.sh
else
    echo "Node.js найден..."
    echo "Версия : \$(node -v)"
fi
if ! [ -x "\$(command -v npm)" ]; then
    sudo apt install npm -y
fi
sudo apt install make zip -y
if ! [ -x "\$(command -v ffmpeg)" ]; then
        echo "============="
        echo "Shinobi - установка кодеков FFMPEG"
        sudo apt install ffmpeg -y
else
    echo "FFmpeg найден..."
    echo "Версия : \$(ffmpeg -version)"
fi
echo "============="
#TODO УСТАНОВКА БАЗЫ ДАННЫХ СДЕЛАТЬ КАК В PHPMYADMIN
echo "Shinobi - Вы хотите установить MariaDB? Выберите нет, если она уже установлена."
echo "(y)es or (N)o"
read -r mysqlagree
if [ "\$mysqlagree" = "y" ] || [ "\$mysqlagree" = "Y" ]; then
    echo "Shinobi - Установка MariaDB"
    echo "Пароль для пользователя SQL root, Если вы устанавливаете сейчас SQL Вы должны ввести какой-либо пароль:"
    read -r sqlpass
    echo "mariadb-server mariadb-server/root_password password \$sqlpass" | debconf-set-selections
    echo "mariadb-server mariadb-server/root_password_again password \$sqlpass" | debconf-set-selections
    sudo apt install mariadb-server -y
    sudo service mysql start
fi
echo "============="
echo "Shinobi - Создаем базу данных "
#echo "(y)es or (N)o"
#read -r mysqlagreeData
#if [ "\$mysqlagreeData" = "y" ] || [ "\$mysqlagreeData" = "Y" ]; then
#    if [ "\$mysqlagree" = "y" ] || [ "\$mysqlagree" = "Y" ]; then
        sqluser="root"
#    fi
#    if [ ! "\$mysqlagree" = "y" ]; then
#        echo "Введите имя пользователя SQL"
#        read -r sqluser
#        echo "Введите пароль SQL?"
#        read -r sqlpass
#    fi
    sudo mysql -u "\$sqluser" -p"\$sqlpass" -e "source sql/user.sql" || true
#fi
echo "============="
echo "Shinobi - Установка библиотек NPM"
sudo npm i npm -g
sudo npm install --unsafe-perm
# sudo npm audit fix --force
echo "============="
echo "Shinobi - Установка PM2"
sudo npm install pm2@latest -g
echo "Shinobi - Установка завершена"
sudo chmod -R 755 .
touch INSTALL/installed.txt
dos2unix INSTALL/shinobi
ln -s \`readlink -f INSTALL/shinobi\` /usr/bin/shinobi
echo "Shinobi - Генерируем ключ cron"
node tools/modifyConfiguration.js addToConfig="{\"cron\":{\"key\":\"\$(head -c 64 < /dev/urandom | sha256sum | awk '{print substr($1,1,60)}')\"}}"
#echo "Shinobi - Запустить Shinobi и установить в автозагрузку?"
#echo "(y)es or (N)o"
#read -r startShinobi
#if [ "$startShinobi" = "y" ] || [ "$startShinobi" = "y" ]; then
    sudo pm2 start camera.js
    #sudo pm2 start cron.js
    sudo pm2 startup
    sudo pm2 save
    sudo pm2 list
#fi
echo "====================================="
echo "||=====  Установка Завершена  =====||"
echo "====================================="
echo "|| Войдите с учетной записью Superuser и создайте нового пользователя !!!"
echo "||==================================="
echo "|| Откройте http://\$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'):8080/super в вашем браузере."
echo "||==================================="
echo "|| Superuser по молчанию : Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript."
echo "|| Пароль по умолчанию : admin"
echo "====================================="
echo "====================================="
EOF

cat << EOF > "$installLocation"/Shinobi/INSTALL/nodejs-astra.sh
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
rm /etc/apt/keyrings/nodesource.gpg
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
#NODE_MAJOR=16
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
EOF

Ну и конечно же нужно дать вновь созданным файлам права на исполнение:

добавляем в наш скрипт shinobi-astra-install.sh после вышестоящего блока и перед sudo chmod +x INSTALL/start.sh команды, меняющие права на исполнение этим файлам:

sudo chmod +x INSTALL/astra.sh

sudo chmod +x INSTALL/nodejs-astra.sh

sudo chmod +x INSTALL/now.sh

 

Ну вот, в принципе и все, файл установки подготовлен, сохраняем его, даем права на исполнение и запускаем.

Как это сделать указано ниже:

1. Переходим в root

$ sudo su

2. Переходим в папку с установщиком, даем права на исполнение:

chmod +x shinobi-astra-install.sh


3. Запускаем:

./shinobi-astra-install.sh

как ответить на вопросы, покажем на картинках:

Устанавливать ветку разработки? Ответим n, нам нужна мастер ветка:


Какую же ОС мы выберем то? Ну конечно нашу Астру, вводим вариант 8:
Устанавливать базу данных MariaDB ? Если еще не установлена, то конечно же да! выбираем y :

Однозначно, нужно ввести парольдля root базы данных. Главное его не забыть потом:

Ну вот, сервер установлен:


Переходим по ссылке зажав Ctrl и нажав мышью на адрес нашего сервера http://какой-то-наш-ИП-сервер:8080/super

Первоначально зайдем на него с учетной записью админа как на картинке:

Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.

и паролем по умолчанию

admin

После входа в так называемую административную панель создадим первого пользователя, с которым мы будем входить во фронтальную часть непосредственно на фронтенд Shinobi на ОС Astra Linux:

Для этого достаточно будет ввести email и пароль с подтверждением и сохранить:

 

Как для нас привычно поменяем порт с 8080 на привычный нам 80 (стандартный http) чтобы не вводить его в адресной строке, жмем на save  (конечно же, после этого, необходимо перезапустиь наш сервер командой sudo pm2 restart all) если не меняем, то продолжаем по тому же адресу:

Естественно, поменяем учетную запись и пароль администратора в разделе preferences:

Ну что, в принципе наш видеосервер сбора информации готов к работе. Переходим в браузере по ссылке (если Вы не меняли порт 8080 на 80)

http://какой-то-наш-ИП-сервер:8080

Логинимся созданной учетной записью фронтального пользователя, которого мы создали в административной панели:

Встречаем интерфейс нашего видеосервера:

ну и проверим какой-нибудь пляж в Лос-Анджелесе :) мы нашли такую ссылку для примера:

https://5ddd47d64e730.streamlock.net:444/westland/westland.stream/chunklist_w258063052.m3u8

Проверим нашу ссылку на работоспособность:

Рабочая? Сохраняем!:

Переименуем ее для себя:

Сохраним, и выбрав в менюшке monitors, откроем и проверим:

 

Ура!

Работает!