Skip to main content

Getting Started

tip

If you already have an environment with Linux and Docker installed, you can continue to Installing Frigate below.

If you already have Frigate installed through Docker or through a Home Assistant App, you can continue to Configuring Frigate below.

Setting up hardware​

This section guides you through setting up a server with Debian Bookworm and Docker.

Install Debian 12 (Bookworm)​

There are many guides on how to install Debian Server, so this will be an abbreviated guide. Connect a temporary monitor and keyboard to your device so you can install a minimal server without a desktop environment.

Prepare installation media​

  1. Download the small installation image from the Debian website
  2. Flash the ISO to a USB device (popular tool is balena Etcher)
  3. Boot your device from USB

Install and setup Debian for remote access​

  1. Ensure your device is connected to the network so updates and software options can be installed
  2. Choose the non-graphical install option if you don't have a mouse connected, but either install method works fine
  3. You will be prompted to set the root user password and create a user with a password
  4. Install the minimum software. Fewer dependencies result in less maintenance.
    1. Uncheck "Debian desktop environment" and "GNOME"
    2. Check "SSH server"
    3. Keep "standard system utilities" checked
  5. After reboot, login as root at the command prompt to add user to sudoers
    1. Install sudo
      apt update && apt install -y sudo
    2. Add the user you created to the sudo group (change blake to your own user)
      usermod -aG sudo blake
  6. Shutdown by running poweroff

At this point, you can install the device in a permanent location. The remaining steps can be performed via SSH from another device. If you don't have an SSH client, you can install one of the options listed in the Visual Studio Code documentation.

Finish setup via SSH​

  1. Connect via SSH and login with your non-root user created during install

  2. Setup passwordless sudo so you don't have to type your password for each sudo command (change blake in the command below to your user)

    echo 'blake ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/user
  3. Logout and login again to activate passwordless sudo

  4. Setup automatic security updates for the OS (optional)

    1. Ensure everything is up to date by running
      sudo apt update && sudo apt upgrade -y
    2. Install unattended upgrades
      sudo apt install -y unattended-upgrades
      echo unattended-upgrades unattended-upgrades/enable_auto_updates boolean true | sudo debconf-set-selections
      sudo dpkg-reconfigure -f noninteractive unattended-upgrades

Now you have a minimal Debian server that requires very little maintenance.

Install Docker​

  1. Install Docker Engine (not Docker Desktop) using the official docs
    1. Specifically, follow the steps in the Install using the apt repository section
  2. Add your user to the docker group as described in the Linux postinstall steps

Installing Frigate​

This section shows how to create a minimal directory structure for a Docker installation on Debian. If you have installed Frigate as a Home Assistant App or another way, you can continue to Configuring Frigate.

Setup directories​

Frigate will create a config file if one does not exist on the initial startup. The following directory structure is the bare minimum to get started.

.
├── docker-compose.yml
├── config/
└── storage/

This will create the above structure:

mkdir storage config && touch docker-compose.yml

If you are setting up Frigate on a Linux device via SSH, you can use nano to edit the following files. If you prefer to edit remote files with a full editor instead of a terminal, I recommend using Visual Studio Code with the Remote SSH extension.

note

This docker-compose.yml file is just a starter for amd64 devices. You will need to customize it for your setup as detailed in the Installation docs.

docker-compose.yml

services:
frigate:
container_name: frigate
restart: unless-stopped
stop_grace_period: 30s
image: ghcr.io/blakeblackshear/frigate:stable
volumes:
- ./config:/config
- ./storage:/media/frigate
- type: tmpfs # 1GB In-memory filesystem for recording segment storage
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "8971:8971"
- "8554:8554" # RTSP feeds

Now you should be able to start Frigate by running docker compose up -d from within the folder containing docker-compose.yml. On startup, an admin user and password will be created and outputted in the logs. You can see this by running docker logs frigate. Frigate should now be accessible at https://server_ip:8971 where you can login with the admin user. With no cameras configured yet, the setup wizard runs on first login and walks you through the rest.

Configuring Frigate​

This section assumes that you already have an environment setup as described in Installation. You should also configure your cameras according to the camera setup guide. Pay particular attention to the section on choosing a detect resolution.

The first time you open Frigate with no cameras configured, the setup wizard walks you through the basics. Every step can be skipped, everything it sets can be changed later in Settings, and once you finish or dismiss it, it doesn't come back.

note

Frigate only sees hardware that has been passed into the container. If you plan to use a GPU, a Coral, or another accelerator, add the device to your docker-compose.yml and restart before running the wizard, otherwise it won't appear in the detection or hardware acceleration steps. The Manual tab shows the device entries for an Intel or AMD GPU and for a Coral, and the hardware acceleration and object detectors docs cover the rest.

Account

Set a password for the admin account to replace the generated one from the logs, and add accounts for anyone else who needs access. This step is hidden if you have turned authentication off.

Add a camera

Opens the Add Camera Wizard, which connects to the camera, tests each stream, and writes its configuration for you. You can add more than one before moving on.

Object detection

Lists the detection hardware Frigate found on your system, such as a Coral, an Intel GPU or NPU, or a discrete GPU, and configures the one you pick. NVIDIA and AMD GPUs need a model before detection can start, so the wizard offers your Frigate+ models if you have them, or lets you finish setup and add one later under Settings→System→Detection models.

Hardware acceleration

Offers only the decoding methods your hardware supports. Auto picks one based on that hardware and the codec your camera sends, so a mixed h264 and h265 setup gets the right preset per camera.

Recording

Choose whether to record only when something is detected or around the clock, and how long to keep it.

The last screen summarizes what was set up. If a step changed something that needs a restart, the button restarts Frigate and returns you to the Live view once it is back.

The wizard configures the essentials only. Motion masks are not included and should be set up afterward, once you can identify the areas of the frame that trigger unwanted motion. See the masks documentation. Zones, tracked object types, notifications, and MQTT are also configured in Settings.

Complete config​

At this point you have a complete config with basic functionality.

Follow up​

Now that you have a working install, you can use the following documentation for additional features:

  1. Zones
  2. Review
  3. Masks
  4. Home Assistant Integration - Integrate with Home Assistant