blakeblackshear.frigate/contributing/index.html
2021-06-17 12:29:17 +00:00

35 lines
25 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
<link rel="alternate" type="application/rss+xml" href="/frigate/blog/rss.xml" title="Frigate Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/frigate/blog/atom.xml" title="Frigate Blog Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Frigate" href="/frigate/opensearch.xml"><title data-react-helmet="true">Contributing | Frigate</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Contributing | Frigate"><meta data-react-helmet="true" name="description" content="Getting the source"><meta data-react-helmet="true" property="og:description" content="Getting the source"><meta data-react-helmet="true" property="og:url" content="https://blakeblackshear.github.io/frigate/contributing"><link data-react-helmet="true" rel="shortcut icon" href="/frigate/img/favicon.ico"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link data-react-helmet="true" rel="canonical" href="https://blakeblackshear.github.io/frigate/contributing"><link rel="stylesheet" href="/frigate/styles.4dd8d972.css">
<link rel="preload" href="/frigate/styles.0df63e1c.js" as="script">
<link rel="preload" href="/frigate/runtime~main.dc03f8bf.js" as="script">
<link rel="preload" href="/frigate/main.b6b2d1f0.js" as="script">
<link rel="preload" href="/frigate/1.d4a988ac.js" as="script">
<link rel="preload" href="/frigate/2.cbe00df1.js" as="script">
<link rel="preload" href="/frigate/28.fabd8c68.js" as="script">
<link rel="preload" href="/frigate/31.3f82c6fa.js" as="script">
<link rel="preload" href="/frigate/935f2afb.06dae20f.js" as="script">
<link rel="preload" href="/frigate/17896441.da8a454f.js" as="script">
<link rel="preload" href="/frigate/4d54d076.bd641069.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/frigate/"><img src="/frigate/img/logo.svg" alt="Frigate" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/frigate/img/logo-dark.svg" alt="Frigate" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Frigate</strong></a><a class="navbar__item navbar__link" href="/frigate/">Docs</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><div class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></div></button></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/frigate/"><img src="/frigate/img/logo.svg" alt="Frigate" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/frigate/img/logo-dark.svg" alt="Frigate" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Frigate</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/frigate/">Docs</a></li><li class="menu__list-item"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Frigate</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/">Features</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/how-it-works">How it works</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/hardware">Recommended hardware</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/installation">Installation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/troubleshooting">Troubleshooting and FAQ</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Configuration</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/index">Configuration</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/cameras">Cameras</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/optimizing">Optimizing performance</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/detectors">Detectors</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/false_positives">Reducing false positives</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/objects">Available objects</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/advanced">Advanced</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Usage</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/home-assistant">Home Assistant</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/web">Web Interface</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/api">HTTP API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/mqtt">MQTT</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Development</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/frigate/contributing">Contributing</a></li></ul></li></ul></div><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_2WRA"><svg width="20" height="20" role="img" class="collapseSidebarButtonIcon_CoMu"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><header><h1 class="docTitle_Oumm">Contributing</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="getting-the-source"></a>Getting the source<a class="hash-link" href="#getting-the-source" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="core-web-docker-and-documentation"></a>Core, Web, Docker, and Documentation<a class="hash-link" href="#core-web-docker-and-documentation" title="Direct link to heading">#</a></h3><p>This repository holds the main Frigate application and all of its dependencies.</p><p>Fork <a href="https://github.com/blakeblackshear/frigate.git" target="_blank" rel="noopener noreferrer">blakeblackshear/frigate</a> to your own GitHub profile, then clone the forked repo to your local machine.</p><p>From here, follow the guides for:</p><ul><li><a href="#core">Core</a></li><li><a href="#web-interface">Web Interface</a></li><li><a href="#documentation">Documentation</a></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="frigate-home-assistant-addon"></a>Frigate Home Assistant Addon<a class="hash-link" href="#frigate-home-assistant-addon" title="Direct link to heading">#</a></h3><p>This repository holds the Home Assistant Addon, for use with Home Assistant OS and compatible installations. It is the piece that allows you to run Frigate from your Home Assistant Supervisor tab.</p><p>Fork <a href="https://github.com/blakeblackshear/frigate-hass-addons" target="_blank" rel="noopener noreferrer">blakeblackshear/frigate-hass-addons</a> to your own Github profile, then clone the forked repo to your local machine.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="frigate-home-assistant-integration"></a>Frigate Home Assistant Integration<a class="hash-link" href="#frigate-home-assistant-integration" title="Direct link to heading">#</a></h3><p>This repository holds the custom integration that allows your Home Assistant installation to automatically create entities for your Frigate instance, whether you run that with the <a href="#frigate-home-assistant-addon">addon</a> or in a separate Docker instance.</p><p>Fork <a href="https://github.com/blakeblackshear/frigate-hass-integration" target="_blank" rel="noopener noreferrer">blakeblackshear/frigate-hass-integration</a> to your own GitHub profile, then clone the forked repo to your local machine.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="core"></a>Core<a class="hash-link" href="#core" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites"></a>Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading">#</a></h3><ul><li><a href="#frigate-core-web-and-docs">Frigate source code</a></li><li>GNU make</li><li>Docker</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="web-interface"></a>Web Interface<a class="hash-link" href="#web-interface" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites-1"></a>Prerequisites<a class="hash-link" href="#prerequisites-1" title="Direct link to heading">#</a></h3><ul><li><a href="#frigate-core-web-and-docs">Frigate source code</a></li><li>All <a href="#core">core</a> prerequisites <em>or</em> another running Frigate instance locally available</li><li>Node.js 14</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="making-changes"></a>Making changes<a class="hash-link" href="#making-changes" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-set-up-a-frigate-instance"></a>1. Set up a Frigate instance<a class="hash-link" href="#1-set-up-a-frigate-instance" title="Direct link to heading">#</a></h4><p>The Web UI requires an instance of Frigate to interact with for all of its data. You can either run an instance locally (recommended) or attach to a separate instance accessible on your network.</p><p>To run the local instance, follow the <a href="#core">core</a> development instructions.</p><p>If you won&#x27;t be making any changes to the Frigate HTTP API, you can attach the web development server to any Frigate instance on your network. Skip this step and go to <a href="#3a-run-the-development-server-against-a-non-local-instance">3a</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-install-dependencies"></a>2. Install dependencies<a class="hash-link" href="#2-install-dependencies" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd web &amp;&amp; npm install</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="3-run-the-development-server"></a>3. Run the development server<a class="hash-link" href="#3-run-the-development-server" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd web &amp;&amp; npm run start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="3a-run-the-development-server-against-a-non-local-instance"></a>3a. Run the development server against a non-local instance<a class="hash-link" href="#3a-run-the-development-server-against-a-non-local-instance" title="Direct link to heading">#</a></h4><p>To run the development server against a non-local instance, you will need to provide an environment variable, <code>SNOWPACK_PUBLIC_API_HOST</code> that tells the web application how to connect to the Frigate API:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd web &amp;&amp; SNOWPACK_PUBLIC_API_HOST=http://&lt;ip-address-to-your-frigate-instance&gt;:5000 npm run start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="4-making-changes"></a>4. Making changes<a class="hash-link" href="#4-making-changes" title="Direct link to heading">#</a></h4><p>The Web UI is built using <a href="https://www.snowpack.dev/" target="_blank" rel="noopener noreferrer">Snowpack</a>, <a href="https://preactjs.com" target="_blank" rel="noopener noreferrer">Preact</a>, and <a href="https://tailwindcss.com" target="_blank" rel="noopener noreferrer">Tailwind CSS</a>.</p><p>Light guidelines and advice:</p><ul><li>Avoid adding more dependencies. The web UI intends to be lightweight and fast to load.</li><li>Do not make large sweeping changes. <a href="https://github.com/blakeblackshear/frigate/discussions/new" target="_blank" rel="noopener noreferrer">Open a discussion on GitHub</a> for any large or architectural ideas.</li><li>Ensure <code>lint</code> passes. This command will ensure basic conformance to styles, applying as many automatic fixes as possible, including Prettier formatting.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">npm run lint</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Add to unit tests and ensure they pass. As much as possible, you should strive to <em>increase</em> test coverage whenever making changes. This will help ensure features do not accidentally become broken in the future.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">npm run test</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Test in different browsers. Firefox, Chrome, and Safari all have different quirks that make them unique targets to interact with.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="documentation"></a>Documentation<a class="hash-link" href="#documentation" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites-2"></a>Prerequisites<a class="hash-link" href="#prerequisites-2" title="Direct link to heading">#</a></h3><ul><li><a href="#frigate-core-web-and-docs">Frigate source code</a></li><li>Node.js 14</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="making-changes-1"></a>Making changes<a class="hash-link" href="#making-changes-1" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-installation"></a>1. Installation<a class="hash-link" href="#1-installation" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">npm run install</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-local-development"></a>2. Local Development<a class="hash-link" href="#2-local-development" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">npm run start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.</p><p>The docs are built using <a href="https://v2.docusaurus.io" target="_blank" rel="noopener noreferrer">Docusaurus v2</a>. Please refer to the Docusaurus docs for more information on how to modify Frigate&#x27;s documentation.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="3-build-optional"></a>3. Build (optional)<a class="hash-link" href="#3-build-optional" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">npm run build</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>This command generates static content into the <code>build</code> directory and can be served using any static contents hosting service.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/blakeblackshear/frigate/edit/master/docs/docs/contributing.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/frigate/usage/mqtt"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« MQTT</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#getting-the-source" class="table-of-contents__link">Getting the source</a><ul><li><a href="#core-web-docker-and-documentation" class="table-of-contents__link">Core, Web, Docker, and Documentation</a></li><li><a href="#frigate-home-assistant-addon" class="table-of-contents__link">Frigate Home Assistant Addon</a></li><li><a href="#frigate-home-assistant-integration" class="table-of-contents__link">Frigate Home Assistant Integration</a></li></ul></li><li><a href="#core" class="table-of-contents__link">Core</a><ul><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li></ul></li><li><a href="#web-interface" class="table-of-contents__link">Web Interface</a><ul><li><a href="#prerequisites-1" class="table-of-contents__link">Prerequisites</a></li><li><a href="#making-changes" class="table-of-contents__link">Making changes</a></li></ul></li><li><a href="#documentation" class="table-of-contents__link">Documentation</a><ul><li><a href="#prerequisites-2" class="table-of-contents__link">Prerequisites</a></li><li><a href="#making-changes-1" class="table-of-contents__link">Making changes</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li><li class="footer__item"><a href="https://github.com/blakeblackshear/frigate/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discussions</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Blake Blackshear</div></div></div></footer></div>
<script src="/frigate/styles.0df63e1c.js"></script>
<script src="/frigate/runtime~main.dc03f8bf.js"></script>
<script src="/frigate/main.b6b2d1f0.js"></script>
<script src="/frigate/1.d4a988ac.js"></script>
<script src="/frigate/2.cbe00df1.js"></script>
<script src="/frigate/28.fabd8c68.js"></script>
<script src="/frigate/31.3f82c6fa.js"></script>
<script src="/frigate/935f2afb.06dae20f.js"></script>
<script src="/frigate/17896441.da8a454f.js"></script>
<script src="/frigate/4d54d076.bd641069.js"></script>
</body>
</html>