DownloadIt is recommended to install a fresh Ubuntu 20.04 for the Operating System before beginning. If you have other applications installed on the server machine you will need to ensure there are no conflicts.
If you have questions please post on Reddit or Discord. Due to limited resources support time is limited. Ordering a support package will give you priority for support.
Moe Alam
These requirements will be installed for you with The Ninja Way. The Ninja Way is the recommended way to install. It will allow ease in updating as well as changes to the code.
Node.js (12.x), FFmpeg (Between 3.3 to 4.1), and MariaDB (10.4+) are the main components that Shinobi needs. With the Ninja Way it is expected that all these requirements will be fulfilled for you.
To get the best experience and most support it is suggested that you install on a dedicated machine with Ubuntu 20.04 then install Shinobi the Ninja Way.
Friendly Warning : Avoid Docker. If you can use a VM if you must use a shared environment.
Warning : The Ninja Way installs from source code. Which means many libraries from other sources are going to be installed aswell.
The easiest way to install from source, directly on metal, is through git. The following operating systems are supported.
Ubuntu 20.04
CentOS 8
MacOS 10.7(+)
Become root to use the installer and run Shinobi. Use one of the following to do so.
Ubuntu 20.04
sudo su
CentOS 8
su
MacOS 10.7(+)
su
Download and run the installer.
bash <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
It is recommended that you have a dedicated machine for Shinobi even if you intend to use Docker. If you are willing to install directly on the operating system please consider installing Ubuntu 20.04 and using the Ninja Way.
More Information about Docker Installation in the Respository's Docker folder.
Just do it.
bash <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-docker.sh)
Once complete open port 8080 of your Docker host in a web browser.
Login to your Super user account at http://your.shinobi.video/super
to create your first Admin account.
Username : [email protected]
Password : admin
You should now be able to manage accounts
Learn to set accounts with limited permission sets here as well as other account types.
conf.json is the file that you create from conf.sample.json during the install process using the following command from inside the Shinobi directory.
cp conf.sample.json conf.json
Anyway! on to what’s really important. What’s in the file itself. This is the contents of conf.sample.json.
{
"port": 8080,
"addStorage": [
{"name":"second","path":"__DIR__/videos2"}
],
"ssl":{
"key":"/path/to/key/file",
"cert":"/path/to/cert/file"
},
"db": {
"host": "127.0.0.1",
"user": "majesticflame",
"password": "",
"database": "ccio",
"port":3306
},
"mail":{
"service": "gmail",
"auth": {
"user": "[email protected]",
"pass": "your_password_or_app_specific_password"
}
},
"cron":{
"key":"change_this_to_something_very_random__just_anything_other_than_this"
},
"pluginKeys":{
"Motion":"change_this_to_something_very_random____make_sure_to_match__/plugins/motion/conf.json"
}
}
Options | Required | Type | Description |
---|---|---|---|
cpuUsageMarker | no | string | The marker that is used to search for CPU usage in top command. Default is %Cpu . Some systems, like Puppy Linux, require it be set to CPU . |
defaultMjpeg | no | string | A path leading to a JPEG file. This default image is needed for when the camera cannot provide frames. |
doSnapshot | no | boolean | By default the snapshot in the top left open its own FFMPEG process for a moment to get a single frame, You can avoid this by turning on JPEG API or setting this option to false . |
updateKey | no | string | For updating by API. |
streamDir | no | string | default is /dev/shm/streams/ . Remember to end with / . Leave it undefined or null to use default. Be careful in using HLS as Stream Type. This directory should be set as somewhere in RAM
|
videosDir | no | string | default is videos/ in the Shinobi directory. Remember to end with / . Leave it undefined or null to use default. |
windowsTempDir | no | string | default is C:/Windows/Temp. If your system is not located on the C: drive then you must add this option in your conf.json file. |
DropboxAppKey | no | string | Future releases will hide dropbox functions when this key is left null. |
ip | no | string | IP that is used for the Shinobi server instance. Default is undefined, which will tell the webserver to automatically choose. |
port | yes | int | Port that is used for the Shinobi server instance. Default is 8080 |
utcOffset | yes | string | Timezone that matches your SQL database. |
db | yes | object | The login information for the SQL database |
db.host | yes | string | The IP address or domain name. Default is 127.0.0.1 |
db.user | yes | string | The user name. Default is majesticflame. |
db.password | yes | string | The password. Default is no password. |
db.database | yes | string | The database name. Default is ccio. |
db.port | yes | int | The port number for Shinobi. Default is 3306. |
cron | no | object | The object that contains some options for cron.js |
cron.deleteOld | no | boolean | cron will delete videos older than Max Number of Days per account. Default is true. |
cron.deleteNoVideo | no | boolean | cron will delete SQL rows that it thinks have no video files. Default is true. |
cron.deleteOverMax | no | boolean | cron will delete files that are over the set maximum storage per account. Default is true. |
no | object | If your Email account uses 2-Step Authentication, like Gmail, then you will be require to create an Application Password. | |
ssl | no | object | If you would to use SSL (Encryption) you can include this object. |
ssl.key | yes* | string | Required if SSL object is present. This is a reference to a file that usually ends in .key. Example : ssl/server.key will direct to a folder named ssl inside your Shinobi directory. |
ssl.cert | yes* | string | Required if SSL object is present. This is a reference to a file that usually ends in .crt. Example : ssl/server.crt will direct to a folder named ssl inside your Shinobi directory. |
ssl.passphrase | yes* | string | If your key and certificate use a passphrase you must define it or SSL will not start. |
ssl.port | no | int | This is the port SSL will listen on. If option is undefined 443 will be used. |
language | no | string | Default is en_CA. You can check the langauges folder inside the Shinobi directory for more options. You can make more by using node tools/translateLanguageFile.js . |
addStorage | no | object | View the sample above for how to structure this object. |
passwordType | no | string | This can be sha256, sha512, or md5. md5 is the default. |
passwordSalt | yes* | string | This is only needed if passwordType is set to sha512. |
We will answer your questions about how Shinobi works, the different ways you can use it, and it's documentation. We will keep your installation maintained with the latest stable build.
Ordering a support package also supports the developers.