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 по умолчанию :
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 по молчанию :
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
Первоначально зайдем на него с учетной записью админа как на картинке:
и паролем по умолчанию
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, откроем и проверим:
Ура!
Работает!