30a45c6c3a | 4 years ago | |
---|---|---|
.. | ||
ShinobiHub - Article How to use Additional Input Feeds_files | 4 years ago | |
ShinobiHub - Article How to use FTP-based Event Triggering in Shinobi_files | 4 years ago | |
README.md | 4 years ago | |
RLC-410-5MP_647_20031401.zip | 4 years ago | |
ShinobiHub - Article How to use Additional Input Feeds.htm | 4 years ago | |
ShinobiHub - Article How to use FTP-based Event Triggering in Shinobi.htm | 4 years ago |
README.md
Docker-compose was generated by the follow script below. You should install shinobi via the script below. The docker-compose.yml shown below is just an example and may not work for you.
ShinobiInstall.sh
#!/bin/bash
if ! [ -x "$(command -v docker)" ]; then
echo "You are missing Docker"
echo "docker not found!"
echo "Get it here : https://docs.docker.com/engine/install/"
exit 1
else
docker -v
fi
if ! [ -x "$(command -v docker-compose)" ]; then
echo "You are missing Docker Compose"
echo "docker-compose not found!"
echo "Get it here : https://docs.docker.com/compose/install/"
exit 1
else
docker-compose -v
fi
PLUGIN_LIST=''
PLUGIN_YMLS=();
SSL_TOGGLE="$(echo "$1" | awk '{print tolower($0)}')"
if [ "$SSL_TOGGLE" = "true" ]; then
SSL_TOGGLE='true'
else
SSL_TOGGLE='false'
fi
echo "Shinobi - Do you want to Install Object Detection? (TensorFlow.js)"
echo "(y)es or (N)o"
read -r TENSORFLOW_PLUGIN_DOCKER_ADDON_AGREE
TENSORFLOW_PLUGIN_DOCKER_ADDON_AGREE="$(echo "$TENSORFLOW_PLUGIN_DOCKER_ADDON_AGREE" | awk '{print tolower($0)}')"
if [ "$TENSORFLOW_PLUGIN_DOCKER_ADDON_AGREE" = "y" ]; then
TENSORFLOW_PLUGIN_KEY=$(head -c 1024 < /dev/urandom | sha256sum | awk '{print substr($1,1,29)}')
PLUGIN_YMLS+=('"Tensorflow":"'$TENSORFLOW_PLUGIN_KEY'"')
PLUGIN_LIST+=$(cat <<-END
shinobiplugintensorflow:
image: shinobisystems/shinobi-tensorflow:latest
container_name: shinobi-tensorflow
environment:
- PLUGIN_KEY=$TENSORFLOW_PLUGIN_KEY
- PLUGIN_HOST=Shinobi
volumes:
- $HOME/Shinobi/docker-plugins/tensorflow:/config
restart: unless-stopped
END
)
fi
# Join Plugin Keys
PLUGIN_YMLS=$(printf ",%s" "${PLUGIN_YMLS[@]}")
PLUGIN_YMLS=${PLUGIN_YMLS:1}
PLUGIN_YMLS="{$PLUGIN_YMLS}"
cat > docker-compose.yml <<- EOM
version: "3"
services:
shinobi:
image: shinobisystems/shinobi:dev
container_name: Shinobi
environment:
- PLUGIN_KEYS=$PLUGIN_YMLS
# - SSL_ENABLED=$SSL_TOGGLE
volumes:
- ./config:/config
- ./customAutoLoad:/home/Shinobi/libs/customAutoLoad
- ./database:/var/lib/mysql
- ./videos:/home/Shinobi/videos
- ./plugins:/home/Shinobi/plugins
- /dev/shm/Shinobi/streams:/dev/shm/streams
- /etc/localtime:/etc/localtime:ro
# ports:
# - 8080:8080
restart: unless-stopped
$PLUGIN_LIST
networks:
default:
external:
name: caddy_net
EOM
cat docker-compose.yml
docker-compose up -d
# rm docker-compose.yml
Minimum File Structure
/home/
└── ~/
└── docker/
└── shinobi/
├── docker-compose.yml
Caddyfile
shinobi.yourdomain.com {
reverse_proxy shinobi:8080
}
docker-compose.yml
Notes: No tensorflow option. Use script above if you want that feature.
version: "3"
services:
shinobi:
image: shinobisystems/shinobi:dev
container_name: shinobi
volumes:
- ./config:/config
- ./customAutoLoad:/home/Shinobi/libs/customAutoLoad
- ./database:/var/lib/mysql
- ./videos:/home/Shinobi/videos
- ./plugins:/home/Shinobi/plugins
- /dev/shm/Shinobi/streams:/dev/shm/streams
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
ports:
- "521:521"
networks:
default:
external:
name: caddy_net
Gotchas and Whys
Why did I do ports 521:521? Well I wanted to enable FTP inside the docker with port 521 open (see below). After that I port forwarded on my router to open 521 to my docker host machine.
shinobi/config/conf.json
Here I added the following lines to conf.json to enable FTP.
"dropInEventServer": true,
"ftpServer": true,
"ftpServerPort": 521,
"dropInEventsDir": "/dev/shm/streams/dropInEvents",
"thisIsDocker": true,
Camera specific notes
You may need to port forward RTSP or RTMP ports for your cameras.
Reolink Specific (RLC-410-5MP) Gotchas
RTMP Main Stream (High Bit Rate 1024Kbps ~ 8192Kbps)
rtmp://[USERNAME]:[PASSWORD]@CAMERAIPADDRESS:PORT/bcs/channel0_main.bcs?token=sdasdasc&channel=0&stream=0&user=[USERNAME]&password=[PASSWORD] Token value entered doesn't matter just need to put something. Only lines before /bcs and after user= need to be changed.
RTMP Sub Stream (Lower Bit Rate 64Kbps ~ 512Kbps)
rtmp://[USERNAME]:[PASSWORD]@CAMERAIPADDRESS:PORT/bcs/channel0_sub.bcs?token=sdasdasc&channel=0&stream=0&user=[USERNAME]&password=[PASSWORD]
You can use the main stream for recording while using the sub stream for streaming both at the same time in shinobi. Reference: https://hub.shinobi.video/articles/view/w8azEAI2peYeNul
RMTP FTP Motion Detection
You can also designate motion detection to the cameras instead of shinobi to reduce load. Reference: https://hub.shinobi.video/articles/view/LyCI3yQsUTouSAJ
ONE BIG GOTCHA... Do not use firmware v3.0.0.65_2007100 because FTP does not work on that firmware. Use firmware v2.0.0.647_20031401 (RLC-410-5MP_647_20031401.zip in this repo) which does work.