--- url: /add-camera.md --- # Add a Camera ::: warning The [Camera Configuration](/camera-preparation) steps should be completed prior to adding the camera to Scrypted. ::: Scrypted supports a variety of camera plugins, some of which are listed on this page. In the `Scrypted Management Console`, navigate to `Plugins` in the side bar. Then search and install the appropriate Scrypted Plugin for your camera manufacturer. ## Plugins Cameras fall into two categories: `Local` cameras and `Cloud` cameras. `Local` cameras stream on the local network, while `Cloud` cameras stream through the cloud, even if the camera is on the local network. Cloud cameras can also be added to Scrypted, but often have limited functionality, including: high latency streams, slow snapshots, unreliable motion detection, etc. Find the matching plugin for your camera and install it in Scrypted Management Console. Multiple brands may be supported by a plugin, so check the list carefully. For example, Amcrest supports Dahua and some Lorex cameras. Hikvision supports many white labeled cameras. If the camera is a `Local` camera, and no compatible plugin can be found, try using the `ONVIF` or `RTSP` plugin (in that order). ::: tip When adding a camera using the appropriate `Local` camera plugin, it is recommended to log in with **admin** login credentials. Features such as Pan/Tilt/Zoom, codec configuration, etc, are often unavailable to a user account. ::: ## Amcrest The `Amcrest Plugin` also supports Dahua and some Lorex cameras. Supports `Two Way Audio`. * Install the ONVIF plugin if your camera has `Pan/Tilt/Zoom` capability. ## Hikvision The `Hikvision Plugin` also supports a wide variety of whitelabled cameras such as Hitosino, etc. Supports `Two Way Audio`. * Install the ONVIF plugin if your camera has `Pan/Tilt/Zoom` capability. ## Reolink The `Reolink Plugin` supports Reolink cameras and doorbells. `Two Way Audio` is only supported on the doorbell. ## Tapo The Tapo plugin *only* provides `Two Way Audio` support for Tapo cameras. The Tapo camera itself should be added using the `ONVIF Plugin`. ## Doorbird Doorbird Plugin supports Doorbird devices, including `Two Way Audio`. ## Unifi Protect The `Unifi Protect Plugin` supports all Unifi cameras, including `Two Way Audio`. Create a dedicated Protect user account with `Local Administrator` permissions. Unifi cameras must enable regular motion events/recordings. This is not the same thing as smart detections. ::: warning A local account is required. Ubiquiti SSO accounts are not supported as they will fail to authorize if the internet is down or 2FA is required. A local account can be created in the Unifi Protect Settings on the UDM/UNVR. ::: ::: warning Unifi Protect's `Enhanced Mode` camera configuration changes the codec to H.265 and should be disabled. ::: ## ONVIF Most local cameras can be used with the `ONVIF Plugin`, but using this plugin is recommended only if a manufacturer plugin is not available. ## RTSP `RTSP Plugin` should be used as a last resort, as it will require a Scrypted to do video processing to detect motion events. * If the RTSP Camera has webhook or mail delivery for motion events, that can be used to trigger a [Dummy Motion Switch](/detection/dummy-detection) within Scrypted, and video processing will not be necessary. * If there is no mail delivery of motion events, use one of the [Motion Detection Plugins](/detection/motion-detection) to analyze video for motion. * When adding the camera with the `RTSP Plugin`, add and assign all available streams. There is typically a `Main Stream` and a `Substream`. ::: tip For optimal system performance, it is extremely important to add and assign both the main stream and the sub stream. Motion analysis on a high resolution main stream may cause system instability. ::: ## Ring The `Ring Plugin` can be used to add Ring nearly all Ring cameras, sensors, security systems, lights, and more. ## Arlo The `Arlo Plugin` supports all Arlo cameras. ## Google The `Google Device Access Plugin` supports Google, Nest, and Dropcam cameras, as well as Nest/Google Thermostats. ## Tuya The `Tuya Plugin` supports Tuya cameras. It requires a Tuya developer account. ## Wyze The `Wyze Plugin` supports Wyze cameras. It requires a Wyze email account (not Google or Apple Sign In) and [API Key](https://developer-api-console.wyze.com/#/apikey/view). Wyze cameras do not have a built in motion sensor. Use one of the [Motion Detection Plugins](/detection/motion-detection) to analyze video for motion for HomeKit Secure Video and NVR Object Detection support. --- --- url: /AGENTS.md --- # AGENTS.md ## Project Overview This is the documentation site for [Scrypted](https://scrypted.app), an open source video integration platform and NVR. The site is built with [VitePress](https://vitepress.dev) and deployed to [docs.scrypted.app](https://docs.scrypted.app). The main Scrypted application repository is at [github.com/koush/scrypted](https://github.com/koush/scrypted). ## Build & Dev Commands | Command | Description | | - | - | | `npm install` | Install dependencies | | `npm run docs:dev` | Start the local dev server with hot reload | | `npm run docs:build` | Build the static site into `.vitepress/dist/` | | `npm run docs:preview` | Preview the production build locally | ## Architecture ``` .vitepress/config.ts # VitePress configuration: sidebar, nav, head, plugins .vitepress/theme/ # Custom theme (extends default VitePress theme) src/ # Vue components and TypeScript helpers used in Markdown parts/ # Reusable Markdown partials (included via ) install/ # Installation guide pages scrypted-nvr/ # Scrypted NVR documentation detection/ # Vision and AI plugin docs buyers-guide/ # Hardware buyer's guide maintenance/ # Server maintenance docs home-assistant/ # Home Assistant integration docs public/ # Static assets (images, icons) ``` ### Content Conventions * All documentation pages are Markdown files (`.md`). * Pages can include Vue ` ## Results ### Theme Data
{{ theme }}
### Page Data
{{ page }}
### Page Frontmatter
{{ frontmatter }}
```
## Results
### Theme Data
### Page Data
### Page Frontmatter
## More
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
---
---
url: /scrypted-nvr.md
---
# Scrypted NVR
## What is Scrypted NVR?
[Scrypted NVR](https://demo.scrypted.app/#/demo) is a `Scrypted Plugin` that provides 24/7 recording and smart detections, with accompanying mobile and desktop applications.
## 24/7 Recording
Scrypted NVR records your camera 24 hours a day, 7 days a week. The fluid user interface provides quick and easy access to all your recordings.
## Scrypted NVR Demo
---
---
url: /scrypted-nvr/installation.md
---
# Scrypted NVR Setup
Install Scrypted using the one of the [installation options](/installation).
After installation, the Scrypted NVR can be installed from the `Plugins` section of the `Scrypted Management Console`.
## Purchase and Manage Subscription
This Scrypted NVR Plugin is in a *paid* plugin. A [live demo server](https://demo.scrypted.app/#/demo) and free trial is available to test the product.
1. Visit to the [billing portal](https://billing.scrypted.app) and login to purchase a subscription. Return to the billing portal at any time to upgrade or cancel the subscription.
2. Login to the Scrypted NVR Plugin using the *same login account* from the billing potral. The plugin's `Login` button can be found at the top of the Scrypted NVR plugin page within the Scrypted Management Console.
::: tip
Scrypted NVR on Mac and Windows must [Install](https://docs.scrypted.app/desktop-application.html) or [Migrate](https://docs.scrypted.app/maintenance/migration.html#migrating-to-the-desktop-application) to the Desktop Application.
:::
## Remove Defunct Plugins
Scrypted NVR contains improved motion sensor and video decoder components. The following plugins can be removed, if they are installed:
* Python Codecs
* OpenCV
* PAM-Diff
## Configure Object Detection
::: warning
Most systems require no further configuration. Changing defaults is not recommended.
:::
For common hardware setups found in the buyer's guide, like Intel iGPU or Apple Silicon, no further configuration is necessary. However, uncommon hardware configurations will need additional setup:
* Windows + NVIDIA
* [ONNX dependencies](/detection/object-detection.md#onnx) must be installed.
* Set the Scrypted NVR Default Object Detector to ONNX.
* Proxmox/Docker + NVIDIA
* Installation must use the `nvidia` docker [tag](/detection/object-detection.md#onnx).
* Coral EdgeTPU
* EdgeTPU drivers [must be installed](/detection/object-detection.md#tensorflow-lite).
* Set the Scrypted NVR Default Object Detector to Tensorflow Lite.
---
---
url: /buyers-guide/servers.md
---
# Server Hardware
## Base Recommendations
Cameras that have good motion sensors, plugin support, and the necessary codecs dramatically reduce the server requirements: Scrypted will have no problem streaming to the various supported [Platforms](/platforms) on low power hardware like a Raspberry Pi 4 or Synology NAS.
**The latest server hardware is NOT always the best.** Newer hardware may not have full/stable hardware acceleration support in kernel/drivers/software. Being 2 generations behind the latest release is generally recommended for hassle free setup and compatibility.
::: warning Raspberry Pi 4
From a current price to performance standpoint, the Raspberry Pi 4b is a poor choice compared to similarly priced Intel thin clients and NUCs. A used Dell Wyse 5070 can be found on eBay for half the price of a Raspberry Pi 4b.
:::
## NVR Recommendations
However, if motion detection is necessary, or the server will be running Scrypted NVR for 24/7 recording and [Smart Detections](/scrypted-nvr/features#smart-detections), running it on a more capable system than a Raspberry Pi 4 is recommended. A good CPU, GPU, and TPU/NPU (Tensor/Neural Processing Unit, aka AI chip) all contribute towards video stream detection performance.
While a TPU/NPU can improve performance, a capable GPU can also fill the gap.
|Processor|Video Decode|Motion Detection|Object Detection|
|-|-|-|-|
|CPU|🥈|🥈|🥉|
|GPU|🥇|🥇|🥈|
|TPU/NPU|❌|❌|🥇|
❌ Not applicable.
## System Comparison
|Name|General Compute|Video Decode|Object Detection|Cameras|
|-|-|-|-|-|
|Apple Mac Mini|🥇|🥇|🥇|30+|
|Intel Core Ultra 125H|🥇|🥇|🥇|30+|
|NVIDIA 4XXX|❌|🥇|🥇|30+|
|Intel 12600H|🥈|🥈|🥈|20+|
|Intel N100|🥉|🥉|🥉|12|
❌ Not applicable.
## Object Detection Comparison
::: danger
Coral EdgeTPU devices are not recommended. While these TPUs were fast on initial release in 2020, they are now outclassed by both modern Intel and Apple Silicon chips. Furthermore, the aging chips have not seen a single hardware or software refresh. The software (Tensorflow) is no longer in use at Google. For all intents and purposes, the Coral EdgeTPU is now Google abandonware.
Coral EdgeTPU only supports basic object detection with Scrypted NVR. It does not support face recognition, license plate recognition, or enhanced search.
:::
::: tip
The [Object Detection Benchmark](https://scripts.scrypted.app/object-detection-benchmark.html#reference-times) script has collected results from many common systems.
:::
|Type|Name|Rating|Notes|
|-|-|-|-|
|NPU|Apple Mac Mini|🥇|Low power consumption, fast, and expensive. Can easily handle a large number of cameras.|
|NPU|Intel Core Ultra 125H|🥇|The GPU on the H series Intel chips have 2-3x the typical number of cores. The Core Ultra series includes Intel's new NPU. Low power consumption, fast, and moderately priced. Can easily handle a large number of cameras.|
|GPU|Intel 12600H|🥈|The GPU on the H series Intel chips have 2-3x the typical number of cores. They are blazing fast at low power. Highly recommended.|
|GPU|Intel N100|🥉|Fantastic Object Detection Performance in a tiny package. Highly recommended.|
|GPU|NVIDIA|🥇|The NVIDIA 3000 and 4000 series has incredible decode and detect performance but at a high price and power consumption. Generally not recommended for purchase, great if on hand.|
|TPU|M.2/PCI Coral|🥉|The M.2 dual TPU model is is not supported by many systems. **Google Abandonware. Do not buy if purchasing new hardware**.|
|TPU|USB Coral|🥉|High latency and crash prone. Google Abandonware. **Google Abandonware. Do not buy if purchasing new hardware**.|
# Server Recommendations
All servers are recommended to have at least 8GB of RAM, 16GB preferred.
## Apple Mac Mini
This system contains a CPU, GPU, and a TPU (neural cores).
## Intel Core Ultra 125H
This Intel 12th generation NUC contains a CPU and laptop class GPU and NPU in a tiny package. The H series chip has 80 GPU cores compared to the 24 on the Intel N100. The Intel Core Ultra 125H is the top recommendation for large scale deployments.
## Intel 12600H
This Intel 12th generation NUC contains a CPU and laptop class GPU in a tiny package. The H series chip has 80 GPU cores compared to the 24 on the Intel N100.
## Intel N100
This Intel 12th generation NUC contains a CPU and capable GPU in a tiny package.
***
# Storage
## Disk Drive
Scrypted NVR recommends using a direct attached storage drive (internal or USB). A surveillance rated drive is preferred, but not strictly necessary. SSD storage will only marginally improve performance. Flash Storage (USB Stick) and SD Cards are not recommended, as they are prone to data corruption and failure.
|Recommended Drives|
|-|
|Western Digital WD Purple|
|Seagate Skyhawk|
::: warning
There are many [fake drives](https://www.youtube.com/watch?v=QOhLlvNlI20) for sale that misreport their actual storage capacity. Buy from a reputable retailer and manufacturer. If a deal seems too good to be true, it probably is.
:::
## External Enclosure
When using an external enclosure, it is recommended to connect a dedicated enclosure directly to the server. Multifunction enclosures (which have additional USB ports, network ports, or card readers) have been known to cause issues. Daisy chaining the USB connection through a secondary USB hub can cause connectivity issues as well.
::: tip
Macs can be quite picky about USB drive bays and may disconnect them randomly. Using a brand that advertises itself as Mac compatible, such as OWC, is advised. Read the Amazon reviews from Mac users. All drive bays tend to be trouble free on Linux and Windows.
:::
|Mac Drive Bays|
|-|
|OWC miniStack|
|OWC Drive Dock USB-C Dual Drive Bay Solution|
## Network Attached Storage
::: tip
Using [Cluster Mode](/maintenance/cluster.md) is recommended when storing Recordings on a NAS.
:::
Storing video on a NAS is a reasonable option if one is available, however timelapse scrubbing may suffer from poor performance over the network.
---
---
url: /detection/smart-motion-sensor.md
---
# Smart Motion Sensor
## Setup
Scrypted can create a `Smart Motion Sensor` to report when a object is detected on a camera. This feature can be used with supported cameras that report smart detection events or [Scrypted NVR Object Detection](/scrypted-nvr/).
1. Install the `Video Analysis Plugin`.
2. Click `Add New`.
3. Select a camera to create a sensor.
4. Select the desired detections to report.
5. This sensor can be synced to other platforms to be used within automations.
::: tip
When using Smart Motion Sensor with detections from Scrypted NVR (and supported camera plugins like Unifi), the sensor can also provide a snapshot of the most recent event.
:::
## License Plate Recognition
Scrypted can create a `Smart Motion Sensor` that triggers on specific license plates. This feature requires camera hardware with native LPR support (Unifi AI Cameras) or via software with Scrypted NVR Object Detection. License Plate Recognition is *highly* dependent on lighting conditions, vehicle speed, camera angle, and video quality. Refer to the manufacturers documentation for optimal setup.
## Face Recognition
Scrypted can create a `Smart Motion Sensor` that triggers on specific people. This feature requires requires Scrypted NVR Object Detection (currently no camera/plugin supports this on hardware). Face Recognition is *highly* dependent on lighting conditions and face capture angle.
---
---
url: /detection/smart-occupancy-sensor.md
---
# Smart Occupancy Sensor
## Setup
Scrypted can create a `Smart Occupancy Sensor` that remains active while a specific object is detected on a camera. For example, the sensor can determine if a parking spot is utilized or a baby's crib is empty, and trigger automations.
Smart Occupancy Sensor requires [Scrypted NVR Object Detection](/scrypted-nvr/) or any of the other object detection plugins like CoreML, OpenVINO, ONNX, or TensorFlow-lite.
1. Install the `Video Analysis Plugin`.
2. Click `Add New`.
3. Select a camera to create a sensor.
4. Select the desired detections to report.
5. This sensor can be synced to other platforms to be used within automations.
## License Plate Recognition
Scrypted can create a `Smart Occupancy Sensor` that triggers on specific license plates. This feature requires Scrypted NVR Object Detection. License Plate Recognition is *highly* dependent on lighting conditions, vehicle speed, camera angle, and image quality.
## Face Recognition
Scrypted can create a `Smart Occupancy Sensor` that triggers on specific people. This feature requires requires Scrypted NVR Object Detection (currently no camera/plugin supports this on hardware). Face Recognition is *highly* dependent on lighting conditions and face capture angle.
---
---
url: /scrypted-nvr/recording-storage.md
---
# Storage Setup
Scrypted NVR requires a disk that can store at least 3 days of video for the cameras in the system. The storage requirement will vary based on the camera count and camera resolution. The following table provides a rough estimate for one week retention with a given number of cameras.
::: warning
* All storage disks must be 1TB minimum in size.
* External hard drives must use an enclosure that provides power. USB powered enclosures will result in data loss.
* Storage must be dedicated to Scrypted NVR. [Scrypted NVR will not record to a NAS or drive that is mostly full with data from other applications.](#storage-utilization).
* Scrypted NVR will not work with filesystem quota features. Use a separate filesystem partition to restrict how much space is available.
:::
::: warning
NAS storage should also refer to the [NAS notes](#nas).
:::
| Resolution | 4 Cameras | 6 Cameras | 10 Cameras | 16 Cameras |
|------------|-----------|-----------|------------|------------|
| 1080P | 1TB | 1TB | 1.5TB | 2.4TB |
| 2K | 1.2TB | 1.8TB | 3TB | 4.8TB |
| 4K | 2.4TB | 3.6TB | 6TB | 9.6TB |
## Host Setup
To configure storage, select the server installation platform below:
* [Proxmox VE](/scrypted-nvr/storage/proxmox.md)
* [Windows](/scrypted-nvr/storage/windows.md)
* [Mac](/scrypted-nvr/storage/mac.md)
* [Docker](/scrypted-nvr/storage/docker.md)
* [Unraid](/scrypted-nvr/storage/unraid.md)
After configuring storage, continue on to [Enable Camera Recording](/scrypted-nvr/camera-recording).
## Multiple Storage Devices
Multiple Recording Storage directories can be added to Scrypted NVR (`Large Disks`). This can be used to improve loading performance, particularly when recording a large number of cameras. Multiple Recording Storage directories is not the same as [RAID](https://en.wikipedia.org/wiki/RAID), but it is a form of redundancy: main and sub streams are distributed across all storage devices. If a Storage disk goes offline or fails, the specific camera stream stored on that disk will be unavailable. The other streams will be available on other Storage disk(s).
Scrypted NVR setups recording to Network Attached Storage (NAS) will result in reduced performance due to network latency as well as an increased surface area for recording failure. This configuration is not recommended. To mitigate the performance issues, Scrypted NVR can utilize a direct attach disk (as a `Fast` disk) in addition to the NAS disk. The NAS (`Large`) disk will store the main stream while `Fast` disk will store medium and low resolution (scrubbing, event lookup).
::: danger
Do not use `Fast` storage unless the Scrypted NVR server is primarily recording to a NAS (a separate storage server); it will not improve performance at all.
The `Fast` disk must be a direct attached disk (SATA or USB) and at least 1TB in size. The ideal ratio for `Fast` and `Large` disks is **1 to 6**.
E.g.: If the `Large` storage is located on a NAS with 18TB available, the `Fast` disk must be at least 3TB.
:::
The Default Recording Storage is designated as `Large`.
RAID disks can be assigned to Recording Storage as a storage directory for servers that need true redundancy.
## Storage Utilization
Scrypted NVR will begin deleting recordings when the disk reaches 15% free space and potentially stop recording if the disk reaches 10% free space or only has 10GB free space remaining. This is to ensure there is sufficient space available for OS updates and optimal filesystem performance (defragmentation/reallocation). Disk performance decreases as the utilization approaches 90%. The system may become unresponsive if disk is filled completely, potentially by other programs writing to the disk. Approaching these limits will show as alerts.
For best performance, provide an entire disk or partition to Scrypted NVR. Volumes that share disk space with others is not recommended as it may cause issues with recording retention periods. A constant work load consisting of writes requires a decent overhead on free space to ensure inode availability - regardless of volume size. Refer to this link for more information: [Why filling a volume is bad](https://chatgpt.com/share/6855f16d-068c-800c-b109-3f0e716e1b6a)
## NAS
::: warning
* When the storage device is a NAS Share, ensure that the NAS `Recycle Bin` feature is disabled, or the old recordings can not be properly deleted by Scrypted NVR and the disk will fill up.
* Storing video on a NAS is a reasonable option if one is available, however timelapse scrubbing may suffer from poor performance over the network.
* NAS must be dedicate a drive to Scrypted NVR. Using a NAS path that is mostly full with data from other applications will not work.
:::
---
---
url: /scrypted-nvr/storage/synology.md
---
# Synology Storage
1. Configure a Recordings storage path in the Scrypted container inside Synology (`Volume Mapping`). The `Host Path` is the path to the storage on the Synology host. The provided `Container Path` (a chosen path in the container like `/nvr` or `/recordings`) will be used for the recordings storage directory.
---
---
url: /server-hardware.md
---
# System Requirements
## Host Operating System
Scrypted can run on Mac, Windows, Proxmox VE, and Linux (via Docker).
Linux + Docker installations should use `Ubuntu Server 64bit 24.04 LTS Noble` as the host, including Raspberry Pi.
## Base System Requirements
Scrypted can run on low power devices such as a Raspberry Pi 4 or more powerful devices like an Intel NUC or Mac Mini. Most users will be just fine with a low powered device. However, if running software [Motion Sensors](/detection/motion-detection) or [Scrypted NVR](/scrypted-nvr/), the performance requirements will increase per camera.
::: warning
The server must be connected to the network with a wired network connection. If the server has a wireless connection, disabling it altogether is recommended.
:::
::: tip
When choosing cameras or a server, consult the [Buyers's Guide](/buyers-guide/) for recommendations that will work together to perform best with Scrypted.
:::
## NVR System Requirements
### Server
The Raspberry Pi 4 and low performance NAS are not recommended for use with Scrypted NVR. Here are the baseline hardware recommendations:
|Operating System|CPU Generation|
|-|-|
|Windows|9th Generation (or equivalent for AMD)|
|Linux|6th Generation (or equivalent for AMD)|
|macOS|Apple Silicon|
The following chart is a rough idea of the capabilities of a few such systems.
|Hardware|Operating System|Number of Cameras|Notes|
|-|-|-|-|
|Dell Wyse 5070|Proxmox/Docker|5|Available cheap on eBay.|
|Intel N100|Proxmox/Docker|12|New Intel NUC that has a fantastic iGPU for accelerated transcode and detection.|
|Mac Mini 16GB|macOS|20+|Scrypted NVR can leverage Apple Silicon's [Neural Engine](https://www.makeuseof.com/what-is-a-neural-engine-how-does-it-work/).|
|Intel Core Ultra 125h|Proxmox/Docker|20+|Scrypted NVR can leverage Intel's [NPU](https://www.intel.com/content/www/us/en/products/details/embedded-processors/core-ultra.html).|
### Cameras
### Storage
::: warning
A drive of at least 1TB is required for NVR to function properly.
:::
Any hard drive will work, surveillance hard drives are recommended. Flash drives and SD cards should not be used, as they will corrupt quickly due to the high write volume.
---
---
url: /system-validation.md
---
# System Validation
After Scrypted has been installed, install the `Diagnostics` plugin and run `System Validation` to validate the environment. This tool can also be used to verify cameras after they have been added.
System validation will check network settings and server hardware properties:
```
============================================
System Validation
============================================
Scrypted Installation Running
OK
IPv4 (jsonip.com) Running
66.219.189.10
IPv6 (jsonip.com) Running
2002:559:76c::3cf
IPv4 (wtfismyip.com) Running
66.219.189.10
IPv6 (wtfismyip.com) Running
2002:559:76c::3cf
Scrypted Server Address Running
192.168.2.130, 2002:559:76c::3cf
OK
CPU Count Running
12
Memory Running
31 GB
GPU Passthrough Running
OK
Cloud Plugin Running
OK
OpenVINO Plugin Running
OK
GPU Decode Running
OK
Deprecated Plugins Running
OK
============================================
System Validation Complete
============================================
```
## Validation Resolutions
### IPv6
IPv6 on the network and Scrypted server is recommended for optimal performance when streaming from cellular networks.
### Scrypted Server Address
Specifying the `Scrypted Server Address` will affect how Scrypted advertises devices via the `HomeKit` plugin and how it communicates with other devices on the local network. Selecting a pair of wired ethernet addresses (one IPv4 and one IPv6) is recommended.
### GPU Passthrough and GPU Decode
If this fails, it is usually due to the system not properly passing through GPU due to installation via an unsupported method. Or the system may not have a GPU at all. Resolving this is recommended for `Scrypted NVR` systems.
---
---
url: /scrypted-nvr/troubleshooting.md
---
# Troubleshooting
Choose from the following troublehsooting guides. If your issue is not listed, please join [Discord](https://discord.gg/DcFzmBHYGq) and report the bug in the `#nvr` channel.
Troubleshoot:
* [Object Detection](#object-detection)
* [Recording](#recording)
* [Event Debug Tool](#event-debug-tool)
* [High CPU Usage](#high-cpu-usage)
* [Notification Delivery Failures](#notification-delivery-failures)
## Object Detection
### Detection Flow Chart
```mermaid
stateDiagram
classDef cameraClass fill:blue
classDef runningClass fill:green
direction LR
camera: Wait for Camera Motion
camera2: Wait for Camera Motion
motion: Camera Reports Motion
running: Run Object Detection
running2: Run Object Detection
detected: Objects Detected
decode: Wait For Video Frame
analyze: Analyze Frame
motionstopped: Camera Reports Motion Stopped
detectionstopped: Stop Object Detection
running2 --> decode
camera --> motion
motion --> running
decode --> analyze
analyze --> detected
detected --> running2
detected --> Notifications
detected --> Timeline/Events
running2 --> motionstopped
motionstopped --> detectionstopped
detectionstopped --> camera2
class camera, camera2 cameraClass
class running, running2 runningClass
```
Object Detection failure is typically due to the camera hardware not properly supplying motion events. The camera's hardware motion sensor will trigger the object detection process when motion is detected, allowing the system to remain idle.
View the camera in the NVR and verify there are motion events in the `Timeline`. Detected Motion will be denoted with a thin and solid blue line, as seen below.
If there is no motion visible on the timeline, the camera is misconfigured and not reporting motion properly. Enable the camera's hardware [Motion Sensor](/camera-preparation#motion-sensor-setup) via the manufacturer admin webpage or app. Ensure there are no zones filtering the motion.
In some cases, the camera motion sensor may be unreliable or non functional. Scrypted NVR provides software motion detection options to fill this gap. [Enable a Motion Detection Extension](/detection/motion-detection) on the camera.
If the motion sensor is functional, the Object Detection itself can be tested by dropping an image into it. Save the following image and dropping it into `Scrypted NVR Object Detection`:
## Recording
Recording issues typically stem from the storage directory or device not being properly configured.
1. In the `Scrypted NVR Plugin` Settings, verify the storage directory is configured and is reporting the correct disk size and free space. The drive should ideally be at least 1 terabyte.
2. Refer to the [Recording Storage](/scrypted-nvr/installation.html#recording-storage) docs to properly format the drive with the correct filesystem and, if applicable, mount it into Docker.
## Event Debug Tool
The event debug tool provides insight into what objects and motion was detected during an event. The tool is accessible via a **desktop browser only**. Click the camera label to go to the Event Debug Tool.
## Reducing False Positives
Object detection zones on the camera can be used to reduce false positives or remove uninteresting detections. Create a zone in the Object Detection Settings for the camera. The zone should accomodate the bounding box that may spill into the zone. E.g., the zone may need to be set back further than would seem intuitive since the bounding box for an object may be larger than may seem obvious:
Although the car is fully on the street, if a zone ends at the edge of the lawn, the car's bounding box would **intersect** the lawn.
An `intersect` zone will filter only detections that intersect (even a single pixel) the zone. A `contain` zone will filter detections that are completely encompassed by the zone.
The default zone type is `include`; a zone can be set to `exclude` to remove all detections of the matching type from being detected (such as problematic stationary cars).
## High CPU Usage
Scrypted NVR will use considerable CPU and GPU while performing object detection on [cameras that have reported motion](#object-detection). The following will help diagnose unusual system activity.
### Verify GPU
Improperly configured systems may not be able to access the GPU when performing object detection. The official install scripts will typically set up the system correctly.
* GPU usage for decoding can be verified by installing the `Diagnostics Plugin` and running `System Validation`.
* GPU usage for detection can be verified by checking the `OpenVINO` or `ONNX` plugins.
### Camera Activity
Cameras that are actively performing object detection can be viewed in the `Video Analysis Plugin`. There are two sections:
#### Active Motion Detection
There should generally not be any cameras that are using software motion detection. All cameras that are officially supported by Scrypted NVR have functional hardware motion sensors. If there are cameras listed in this section, please review the [motion sensor setup](/camera-preparation#motion-sensor-setup) to confirm that [enabling software motion detection](/detection/motion-detection) was necessary. The software motion sensor should be disabled.
#### Active Object Detection
There may be multiple cameras listed in this seciton if the high cpu usage is persistent. This may be due to cameras that are constantly reporting motion and never going idle. For example, trees blowing in the wind will trigger object detection. To resolve this issue, use [motion zones on the camera](/camera-preparation#motion-sensor-setup) to reduce unimportant motion that is reported to Scrypted. For example, zoning the camera to only perform motion detection on walkways and driveways, rather than on landscaping features.
## Notification Delivery Failures
When troubleshooting notification delivery failures, first ensure that object detection is working by navigating to the camera timeline in the NVR app and ensuring that people, vehicles, and animals are being detected and recorded. If there are no events there, the use the [Object Detection](#object-detection) troubleshooting.
### No Images in Notifications
If notifications are working, but there are no images in notifications, this is likely due to a `Scrypted Cloud` plugin misconfiguration. Perform the following steps:
1. Ensure the Scrypted Cloud plugin is installed.
2. Log into the Scrypted Cloud plugin again.
This should resolve most notification image failures.
If the server is using a Cloudflare domain, ensure hotlink protection protection is disabled in Cloudflare.
If the server is using self hosted SSL termination or port forwarding, the error may be due to to improper SSL termination or reverse proxy. To diagnose, delete and reinstall the Scrypted Cloud plugin to verify notification image delivery works on the Default settings.
## Notification Testing
1. In the Scrypted NVR app, go to Settings -> Notifications.
2. Click Send Test Notification. If no notification is received, continue on to [Complete Notification Failure](#complete-notification-failure).
When the detection is visible in the camera timeline and test notifications are being delivered to the the phone, the issue is most likely to be a notification filter in the app.
1. In the Scrypted NVR app, view the camera.
2. Click Settings -> AI, Zones, and Schedules
3. Delete all filters.
### Complete Notification Failure
If notifications are not being delivered at all, this is likely due to an issue with the device itself. Perform the following steps:
1. If the device is Android or iOS, **reboot the device**.
2. Search for the notification device in `Scrypted Management Console` and send it a test notification.
3. Observe any errors in the `Console`.
If no notification was received, and the `Console` indicates there were no errors, then the notification was delivered successfully to the Apple/Google backend notification service. If it was not delivered, the issue may be with their service's ability to deliver to your device. On iOS this can sometimes be resolved by **uninstalling and reinstalling the iOS app**.
## Recordings Lost After Restart
If restarting the Proxmox LXC or Docker container results in all recordings being lost, this is because the storage mount was not correctly passed into the container. The recordings are being written into the container rather than the drive, and the container is being reset (including the recordings) on restart. First remove any existing configuration for the recording storage. Then follow the [Storage Setup](/scrypted-nvr/recording-storage) guide to correctly configure the NVR Recordings Directory.
## Management Console Persistently Disconnecting
On November 12th, an update to docker caused Watchtower in Proxmox LXCs to fail. This failure causes Scrypted's Proxmox LXC to continually restart. The symptom is the management console disconnecting and reconnecting every few seconds. Use the [Proxmox LXC Reset](/install/proxmox-ve.md#lxc-reset) to resolve this issue.
---
---
url: /maintenance/uninstallation.md
---
# Uninstallation
Uninstallation instructions vary depending on how Scrypted was installed. Find the installation method for your server below.
After uninstallation is complete, and the Scrypted service has been stopped, [Delete the Scrypted Configuration](#delete-scrypted-configuration).
## Desktop App
* Quit the app from the task bar to ensure it is not running in the background.
* Delete the app by dragging it into the Trash (Mac/Linux) or running the Uninstallation from the Installed Applications list (Windows).
## Background Service
If Scrypted was not installed using the Desktop app, and the background service was installed using the Terminal, it must be uninstalled using the Terminal.
::: code-group
```sh [Docker Compose]
cd ~/.scrypted
docker compose down
```
```sh [Linux]
sudo systemctl stop scrypted.service
sudo rm /etc/systemd/system/scrypted.service
```
```sh [Mac]
launchctl unload ~/Library/LaunchAgents/app.scrypted.server.plist
rm ~/Library/LaunchAgents/app.scrypted.server.plist
```
```powershell [Windows]
sc.exe stop scrypted.exe
sc.exe delete scrypted.exe
```
:::
## Delete Scrypted Configuration
After Scrypted is stopped, the local configuration files can be found and removed:
::: code-group
```sh [Docker Compose]
sudo rm -rf ~/.scrypted
```
```sh [Linux]
sudo rm -rf ~/.scrypted
```
```sh [Mac]
sudo rm -rf ~/.scrypted
```
```sh [Windows]
deltree %HOMEDRIVE%%HOMEPATH%\.scrypted
```
:::
---
---
url: /install/unraid-docker.md
---
# Unraid - Docker
1. Install `Scrypted` from `Unraid Apps`.
2. Configure `Appdata`. This path will contain the Scrypted database.
::: warning
Paths shown in screenshots are examples and should be configured specific to your system preferences and drive setup.
:::
---
---
url: /scrypted-nvr/storage/unraid.md
---
# Unraid Storage
::: warning Filesystem Requirement
Scrypted NVR requires storage on an `ext4` or `xfs` filesystem (see [Docker Volume](/scrypted-nvr/storage/docker.html#manual-docker-setup)). Unraid's default `/mnt/user/` share paths use `shfs`, a FUSE userspace filesystem that pools multiple disks. Although the underlying disks may be formatted as XFS, Scrypted sees the FUSE layer rather than the native filesystem. This can cause recording failures due to how FUSE handles file operations used by the NVR recording system. See [koush/scrypted#2015](https://github.com/koush/scrypted/issues/2015) for details.
:::
1. Configure a Recordings storage path within Unraid. The `Host Path` is the path to the storage on the Unraid host. The provided `Container Path` (a chosen path in the container like `/nvr` or `/recordings`) will be used for the recordings storage directory.
---
---
url: /README.md
---
Visit [docs.scrypted.app](https://docs.scrypted.app).
---
---
url: /desktop-application.md
---
---
---
url: /parts/camera-preparation.md
---
## Camera Configuration
Complete [Camera Configuration](/camera-preparation) and [Add the Camera](/add-camera) to Scrypted continuing with this setup. **Verify the camera streams are working properly within Scrypted**. There will be less moving parts when trying to troubleshoot issues.
---
---
url: /parts/scrypted-nvr-face.md
---
### Scrypted NVR Setup
When using Scrypted NVR, label some faces in the Detections overview tab to start recognizing the people of interest.
### Face Recognition Sensor Setup
1. Set up a smart motion sensor as described in the steps above.
2. In the Detection dropdown, select `face` (Scrypted NVR). The `person` detection type will not work, as that detects the entire person and not specfically the face.
3. Navigate to the `Recognition` tab.
4. Type the name of person to detect as labeled in the prior step. Press enter to add it to the list. Multiple names may be provided, repeat this process for as many people are desired.
5. Set the `Label Distance` to `0` so the name must exactly match.
6. Click `Save`.
---
---
url: /parts/proxmox-tip.md
---
::: tip
[Proxmox VE](/installation.md#proxmox-ve) is the recommended installation host for dedicated Intel/AMD servers, and is [preferred over Docker](/installation#proxmox-ve-vs-docker).
:::
---
---
url: /parts/scrypted-nvr-lpr.md
---
### Scrypted NVR Setup
When using Scrypted NVR, license plate recognition must first be enabled on the camera. Be aware that this will use reduce the camera's overall detection performance to also accomodate license plate recognition:
1. Navigate to the camera in the Scrypted Management Console.
2. Click the Object Detection Settings.
3. Add `plate` to the detection list.
4. Click `Save`.
### LPR Sensor Setup
1. Set up a smart sensor as described in the steps above.
2. In the Detection dropdown, select `plate` (Scrypted NVR) or `licensePlate` (Unifi). The `vehicle` or `car` detection type will not work, as that detects the entire vehicle and not specfically the license plate.
3. Navigate to the `Recognition` tab.
4. Type the license plate to detect. Press enter to add it to the list. Multiple license plates may be provided, repeat this process for as many plates are desired.
5. Click `Save`.
::: tip
License plate character recognition can be inaccurate depending on conditions. Changing the `Label Distance` setting will configure the detector to allow a number of missing or incorrect characters when attempting to match a specific plate. Ie, a distance of 1 will match `ABCDE` to `ABCBE` or `ABCD`.
:::
---
---
url: /scrypted-nvr/parts/nas-tip.md
---
::: tip
Scrypted NVR users recording to NAS storage are encouraged to use [Cluster Mode](/maintenance/cluster.md) instead for optimal reliability and performance. The NAS should run the `server`, and the existing hardware should become a Cluster Mode `client` to handle detections and transcoding.
:::
---
---
url: /scrypted-nvr/parts/nvr-camera-requirements.md
---
Only local RTSP Cameras are officially supported by Scrypted NVR. This is typically any camera that implements the `ONVIF` and `RTSP` protocol and uses the `H.264` video codec.
Unsupported hardware (which may work to varying degrees) includes:
* Cloud cameras like Ring, Google/Nest, and Arlo.
* Non-native RTSP Cameras like Wyze.
* Non manufacturer provided custom firmware like Thingino.
* Battery powered cameras.
---
---
url: /scrypted-nvr/parts/nvr-server-requirements.md
---
The following server configurations are supported by Scrypted NVR:
### Platforms
* Docker or Proxmox (with supported CPU).
* Apple Silicon running the Scrypted NVR Desktop app.
* Windows running the Scrypted NVR Desktop app.
### Hardware
* Apple Silicon
* Intel 9th generation or later CPUs and iGPU.
* Note: the newest generation CPU may NOT have full support due to kernel/driver support not being available out of the box in Proxmox or Ubuntu. One generation AFTER the latest is generally recommended for stability.
* AMD 5000 series or later CPUs. iGPU is not supported, and inference will be CPU only.
* NVIDIA 30 series or later GPUs.
These are the most common configurations, are known to be reliable and performant. However, Scrypted NVR can run on much more than is listed here, but when running into issues support may be limited.
---
---
url: /scrypted-nvr/storage/nvr-plugin-storage-settings.md
---
2. The recordings storage directory can be configured within the `Scrypted NVR Plugin` Settings. [Multiple Storage Devices](/scrypted-nvr/recording-storage.md#multiple-storage-devices) can also be added.
3. Continue on to [Enable Camera Recording](/scrypted-nvr/camera-recording).
---
---
url: /server-port.md
---
Scrypted is now running at: `https://localhost:10443/`
Note that it is `https` and that you'll be asked to approve/ignore the website certificate. Replace `localhost` with your server/container IP.
---
---
url: /maintenance/access.md
---
# Users and Remote Access
## Additional User Accounts
Additional local user accounts can be added in the Scrypted Management Console.
By default, non-admin users can not to view/edit any devices, install plugins, or otherwise have access to anything on the server. Enable the `Scrypted NVR Users` extension to allow the user access to `Scrypted NVR`, then grant the account permissions to specific cameras.
## Remote Access
For turnkey remote access, install the `Scrypted Cloud` plugin and click `Login` to link an email account. The email account linked with `Scrypted Cloud` can only be used to *reach* the server. A local account, as provisioned above, can then be used to log into the server.
::: info
The email account linked with Scrypted Cloud does not provide Single Sign-On (SSO) access to a server. Otherwise a compromise in any service providing authentication (ie, Scrypted Cloud, Gmail, Apple Sign In, lost email password, etc) could provide other parties the ability to view to cameras or modify server settings. Similarly, a connection routing or caching issue could also make cameras accessible to other users of Scrypted Cloud. A separate local login (which is not controlled by a cloud provider) provides a backstop for malicious or accidental server access.
:::
## Share Server
First, create an [additional local user account](#additional-user-accounts) and grant access to the desired cameras in `Scrypted NVR`.
1. Open [home.scrypted.app](https://home.scrypted.app) and log in with the [Remote Access](#remote-access) configured above.
2. Click the `Share` icon.
3. Add the user email to the list that can access the server.
4. Copy the `Invite Code`.
5. Save.
6. Send the user the following information:
* The previously copied `Invite Code`.
* The local user account credentials.
::: tip
The user will not be automatically notified by email they have access to the server.
:::
## Join Server
1. Open [home.scrypted.app](https://home.scrypted.app) and log in with your email.
2. Provide the above email to the admin of the server.
3. Enter the invite code provided by the admin.
4. The browser will continue to the local login for the newly added server.
5. Log in with the local account credentials that was also provided by the admin. **This is not the email you used to sign in from the cloud.**
---
---
url: /platforms.md
---
# What are Plugins?
`Plugins` are how Scrypted imports and exports camera streams. Camera Plugins include `ONVIF`, `Hikvision`, `Amcrest`, `Ring`, and more.
`Platforms` are external home automation services that support cameras but may not support *your* camera. Scrypted's `Platform Plugins` function as a bridge to those services.
`Platforms` include [Homekit](/homekit), [Google Home](/google-home), [Alexa](/alexa), and [Home Assistant](/home-assistant).
## Scripts
Similar to `Plugins`, `Scripts` are a lightweight user editable way to add powerful automations, devices, and features to Scrypted. Visit the [Scripts](https://scripts.scrypted.app) site for popular user contributed tools.
---
---
url: /install/windows-powershell.md
---
# Windows - PowerShell
Scrypted NVR on Windows must install the [Install](/desktop-application) or [Migrate](/maintenance/migration.md#migrating-to-the-desktop-application) to the [Desktop Application](/install/desktop-app.md). The Desktop App has GPU acceleration, is fully self contained with zero dependencies, and requires a license. The free version of Scrypted may be installed using the PowerShell Installation below.
This [script](https://github.com/koush/scrypted/blob/main/install/local/install-scrypted-dependencies-win.ps1) will download all the dependencies, including Node.js, Additional Tools for Node.js, Python, and install Scrypted as a service.
Open a **PowerShell Terminal** by clicking Start, type "Windows PowerShell" and click "Run as Administrator" option
Use the Copy button in the snippet below and paste it into Powershell to [allow execution of unsigned scripts](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3).
```powershell
Set-ExecutionPolicy Unrestricted
```
Press "y" to accept execution policy change
Use the Copy button in the snippet below to copy and paste it into Powershell to install Scrypted.
```powershell
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/koush/scrypted/main/install/local/install-scrypted-dependencies-win.ps1'))
```
After installation, a firewall permission dialog may be shown. This must be set to allow all networks, including public networks.
* If this prompt does not show up, you **must** go to the Windows Firewall settings and allow `Node.js JavaScript Runtime` and `Python` to communicate with `Private` and `Public` networks as shown below.
---
---
url: /scrypted-nvr/storage/windows.md
---
# Windows Storage
1. The storage disk must be formatted as `NTFS`.