2018-06-09 23:34:06 +00:00
#!/bin/bash
echo "========================================================="
echo "==!! Shinobi : The Open Source CCTV and NVR Solution !!=="
echo "========================================================="
echo "To answer yes type the letter (y) in lowercase and press ENTER."
echo "Default is no (N). Skip any components you already have or don't need."
echo "============="
2018-10-04 15:24:55 +00:00
#Detect Ubuntu Version
echo "============="
echo " Detecting Ubuntu Version"
echo "============="
2018-10-04 22:37:12 +00:00
getubuntuversion = $( lsb_release -r | awk '{print $2}' | cut -d . -f1)
2018-10-04 15:24:55 +00:00
echo "============="
echo " Ubuntu Version: $getubuntuversion "
echo "============="
2018-10-04 22:37:12 +00:00
if [ " $getubuntuversion " = "18" ] || [ " $getubuntuversion " > "18" ] ; then
2018-10-04 15:24:55 +00:00
apt install sudo wget -y
sudo apt install -y software-properties-common
sudo add-apt-repository universe -y
fi
#create conf.json
2018-06-09 23:34:06 +00:00
if [ ! -e "./conf.json" ] ; then
sudo cp conf.sample.json conf.json
fi
2018-10-04 15:24:55 +00:00
#create super.json
2018-06-09 23:34:06 +00:00
if [ ! -e "./super.json" ] ; then
echo "Shinobi - Do you want to enable superuser access?"
echo "This may be useful if passwords are forgotten or"
echo "if you would like to limit accessibility of an"
echo "account for business scenarios."
echo "(y)es or (N)o"
read createSuperJson
if [ " $createSuperJson " = "y" ] || [ " $createSuperJson " = "Y" ] ; then
echo "Default Superuser : admin@shinobi.video"
echo "Default Password : admin"
echo "* You can edit these settings in \"super.json\" located in the Shinobi directory."
sudo cp super.sample.json super.json
fi
fi
echo "Shinobi - Do you want to Install Node.js?"
echo "(y)es or (N)o"
read nodejsinstall
if [ " $nodejsinstall " = "y" ] || [ " $nodejsinstall " = "Y" ] ; then
wget https://deb.nodesource.com/setup_8.x
chmod +x setup_8.x
./setup_8.x
sudo apt install nodejs -y
2018-09-26 17:41:28 +00:00
sudo apt install npm -y
2018-06-09 23:34:06 +00:00
fi
2018-07-23 15:49:49 +00:00
sudo apt install make -y
2018-06-09 23:34:06 +00:00
echo "============="
echo "Shinobi - Do you want to Install FFMPEG?"
echo "(y)es or (N)o"
read ffmpeginstall
if [ " $ffmpeginstall " = "y" ] || [ " $ffmpeginstall " = "Y" ] ; then
echo "Shinobi - Do you want to Install FFMPEG with `apt` or download a static version provided with `npm`?"
echo "(a)pt or (N)pm"
echo "Press [ENTER] for default (npm)"
read ffmpegstaticinstall
if [ " $ffmpegstaticinstall " = "a" ] || [ " $ffmpegstaticinstall " = "A" ] ; then
2018-10-04 22:37:12 +00:00
if [ " $getubuntuversion " = "16" ] || [ " $getubuntuversion " < "16" ] ; then
2018-06-09 23:34:06 +00:00
echo "============="
echo "Shinobi - Get FFMPEG 3.x from ppa:jonathonf/ffmpeg-3"
sudo add-apt-repository ppa:jonathonf/ffmpeg-3 -y
sudo apt update -y && sudo apt install ffmpeg libav-tools x264 x265 -y
echo "============="
else
echo "============="
echo "Shinobi - Installing FFMPEG"
sudo apt install ffmpeg -y
echo "============="
fi
else
2018-09-29 20:09:24 +00:00
sudo npm install ffbinaries
2018-06-09 23:34:06 +00:00
fi
fi
echo "============="
echo "Shinobi - Do you want to use MariaDB or SQLite3?"
echo "SQLite3 is better for small installs"
echo "MariaDB (MySQL) is better for large installs"
echo "(S)QLite3 or (M)ariaDB?"
echo "Press [ENTER] for default (MariaDB)"
read sqliteormariadb
if [ " $sqliteormariadb " = "S" ] || [ " $sqliteormariadb " = "s" ] ; then
sudo npm install jsonfile
sudo apt-get install sqlite3 libsqlite3-dev -y
sudo npm install sqlite3
node ./tools/modifyConfiguration.js databaseType = sqlite3
if [ ! -e "./shinobi.sqlite" ] ; then
echo "Creating shinobi.sqlite for SQLite3..."
sudo cp sql/shinobi.sample.sqlite shinobi.sqlite
else
echo "shinobi.sqlite already exists. Continuing..."
fi
else
echo "Shinobi - Do you want to Install MariaDB? Choose No if you already have it."
echo "(y)es or (N)o"
read mysqlagree
if [ " $mysqlagree " = "y" ] || [ " $mysqlagree " = "Y" ] ; then
echo "Shinobi - Installing MariaDB"
echo "Password for root SQL user, If you are installing SQL now then you may put anything:"
read 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 - Database Installation"
echo "(y)es or (N)o"
read mysqlagreeData
if [ " $mysqlagreeData " = "y" ] || [ " $mysqlagreeData " = "Y" ] ; then
if [ " $mysqlagree " = "y" ] || [ " $mysqlagree " = "Y" ] ; then
sqluser = "root"
fi
if [ ! " $mysqlagree " = "y" ] ; then
echo "What is your SQL Username?"
read sqluser
echo "What is your SQL Password?"
read sqlpass
fi
sudo mysql -u $sqluser -p$sqlpass -e "source sql/user.sql" || true
sudo mysql -u $sqluser -p$sqlpass -e "source sql/framework.sql" || true
fi
fi
echo "============="
echo "Shinobi - Install NPM Libraries"
2018-08-11 18:58:15 +00:00
sudo npm i npm -g
sudo npm install --unsafe-perm
2018-09-23 15:43:29 +00:00
sudo npm audit fix --force
2018-06-09 23:34:06 +00:00
echo "============="
echo "Shinobi - Install PM2"
sudo npm install pm2 -g
echo "Shinobi - Finished"
sudo chmod -R 755 .
touch INSTALL/installed.txt
2018-10-04 03:34:50 +00:00
dos2unix /home/Shinobi/INSTALL/shinobi
2018-10-03 22:05:29 +00:00
ln -s /home/Shinobi/INSTALL/shinobi /usr/bin/shinobi
2018-06-09 23:34:06 +00:00
if [ " $mysqlDefaultData " = "y" ] || [ " $mysqlDefaultData " = "Y" ] ; then
echo "=====================================" > INSTALL/installed.txt
echo "======= Login Credentials =======" >> INSTALL/installed.txt
echo " || Username : $userEmail " >> INSTALL/installed.txt
echo " || Password : $userPasswordPlain " >> INSTALL/installed.txt
echo " || API Key : $apiKey " >> INSTALL/installed.txt
echo "=====================================" >> INSTALL/installed.txt
echo "=====================================" >> INSTALL/installed.txt
fi
echo "Shinobi - Start Shinobi and set to start on boot?"
echo "(y)es or (N)o"
read 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
if [ " $mysqlDefaultData " = "y" ] || [ " $mysqlDefaultData " = "Y" ] ; then
echo "details written to INSTALL/installed.txt"
echo "====================================="
echo "======= Login Credentials ======="
echo " || Username : $userEmail "
echo " || Password : $userPasswordPlain "
echo " || API Key : $apiKey "
echo "====================================="
echo "====================================="
fi
if [ ! " $sqliteormariadb " = "M" ] && [ ! " $sqliteormariadb " = "m" ] ; then
echo "====================================="
echo "||===== Install Completed =====||"
echo "====================================="
echo "|| Login with the Superuser and create a new user!!"
echo "||==================================="
echo " || Open http:// $( ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' ) :8080/super in your web browser. "
echo "||==================================="
echo "|| Default Superuser : admin@shinobi.video"
echo "|| Default Password : admin"
echo "====================================="
echo "====================================="
else
echo "+=================================+"
echo "||===== Install Completed =====||"
echo " || Access the main Shinobi panel at http:// $( ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' ) :8080 in your web browser. "
echo "+=================================+"
2018-09-23 15:43:29 +00:00
fi