Download
Nov 30, 2015 DONE +-+ PM2 Freeze a process list on reboot via: $ pm2 save PM2 Remove init script via: $ pm2 unstartup upstart PM2 is configured to be started on boot, but we didn't have any application to restart. Let's start a Node.js server with PM2. Start Node.js Server. PM2 is version 2.4.2 and the MM install was built on Jessie Lite (2017-03-02) on a Pi2. I can start the script with PM2 start mm.sh and use PM2 save when it's running but PM2 list after a reboot shows nothing running.
PM2 keeps a list of your processes to be able to start, restart and stop them easily. All your apps are started in the background, letting you access to the command line. Use the PM2 CLI to interact with your apps. Add processes to your process list with the start and delete commands. Indeed, maxrestart concerns consecutives unstable restarts (restarts happening in less than 1sec interval between them). Maxrestarts defaults to 15. I will implement -no-restart flag soon.
It is recommended to install a fresh Ubuntu 19.10 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 AlamDownloadRequirements
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+), FFmpeg (3.3+), 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 19.10 then install Shinobi the Ninja Way.
Friendly Warning : Avoid Docker. If you can use a VM if you must use a shared environment.
Installation
Pm2 Start On Reboot Amazon Fire
The Simplest Way
Install the Ubuntu 19.10 ISO with Shinobi, TensorFlow Object Detection. This Ubuntu Installer ISO will install NVIDIA Drivers, CUDA Toolkit 10.0, and CUDNN if an NVIDIA GPU is detected during installation.
Learn more about the ISO here.
The Ninja Way
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.
CentOS 8
Become root to use the installer and run Shinobi. Use one of the following to do so.
CentOS 8
Download and run the installer.
Docker
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 19.10 and using the Ninja Way.
More Information about Docker Installation in the Respository's Docker folder.
Ubuntu : The Easier Way
Open
Terminal
.Install git command line library.
Open Shinobi directory.
Packages will be installed. MariaDB will ask to create a password on first installation.
Once complete. Open up
http://localhost:8080
in your browser.Note : if you are installed on a remote computer open up the IP in your web browser.
You should now be able to manage accounts
CentOS, Fedora, RHEL : The Easier Way
Open
Terminal
.Install git command line library.
Open Shinobi directory.
Packages will be installed. MariaDB will ask to create a password on first installation.
Once complete. Open up
http://localhost:8080
in your browser.Note : if you are installed on a remote computer open up the IP in your web browser.
You should now be able to manage accounts
Account Management
Set up Superuser Access
Rename super.sample.json
to super.json
. Run the following command inside the Shinobi directory with terminal. Passwords are saved as MD5 strings.You only need to do this step once.
You should now be able to manage accounts
Set up Sub-Accounts
Login at http://your.shinobi.video/admin
. With the main account of the group. If a sub account is used to login to this page it will be directed to the regular dashboard.
Clean up
Set up the cron file
Run
cron.js
to get data about how much space is used and to clear old videos.
Updating Shinobi
Getting the latest files
There were multiple ways to do this, now there is only one recommended way to do it. Please follow the link below.
Daemonize and Startup
Keep running and on boot
Start
camera.js and cron.js
then run check to see they are running under PM2.After
camera.js and cron.js
are started you can run the following to start them on boot.
Configuration
Done Installation
Default Login
You should now be able to manage accounts
Configuration File
conf.json
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.
Anyway! on to what's really important. What's in the file itself. This is the contents of conf.sample.json.
Available Options for 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. |
Troubleshooting
Finding Problems
What to do
For all errors please try the following before posting in the Issues or asking on Discord.
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.
Anyway! on to what's really important. What's in the file itself. This is the contents of conf.sample.json.
Available Options for 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. |
Troubleshooting
Finding Problems
What to do
For all errors please try the following before posting in the Issues or asking on Discord.
- Read through the Shinobi Wiki
- Searching the web.
- Google, Lukol, anything.
- Make sure you have installed all the Requirements.
- Review the Installation Process
- If you are paying for support package ignore the previous requirements and open a ticket or contact a developer directly.
Posting in the Issues
The following are required when posting in the issues.
- Must be about Shinobi, not Node.js or a library used by Shinobi
- Include a snippet of any errors you are describing.
- If logs are not available, providing some screenshots may be helpful.
- Must be about a bug.
- Suggestions must be posted on Forum in the Suggestions section.
Support Packages
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.
In seconds, this Quick Start tutorial will show you how to set up to production a Node.js application with PM2.
Installation
With npm:
With yarn:
With debian, use the install script:
With docker, follow this tutorial.
CLI autocompletion
Complete your installation with the CLI autocompletion:
Manage multiple processes
PM2 keeps a list of your processes to be able to start, restart and stop them easily.
All your apps are started in the background, letting you access to the command line. Use the PM2 CLI to interact with your apps.
Process list
Add processes to your process list with the start and delete commands.
Default process name is the filename without .js
(eg: app
for app.js
). Use --name
or -n
to change.
Routine
Once in your process list, use the process name to interact with your application. Mac demarco chamber of reflection piano.
You can then setup a startup script, to automatically start your process list across machine restarts.
Access your logs
Pm2 Remove Startup
Access your logs in realtime with pm2 logs app
.
Consult your logs history files in the ~/.pm2/logs
folder.
Clusterize
The cluster mode scales your app accross all CPUs available, without any code modifications.
Before using the load balancer, make sure your application is stateless, meaning that no local data is stored in the process (sessions/websocket connections, session-memory and related).
To start in cluster mode, pass the -i option followed by the number of clusters that you want:
Pm2 Auto Start On Reboot Windows
or, to automatically detect number of CPUs available:
Pm2 Startup Windows
Use reload instead of restart for 0-seconds downtime reloads:
Pm2 Start On Reboot Iphone X
Next Steps
Questions?
Pm2 Start On Restart
We are always happy to help with questions you might have. Use the search or check out the FAQ. You can also post questions or comments on the PM2 github repository.