commit 12fdc96d208ecf05579df12dabd406e7aa50b3ad
Author: Alexander Mescheryakov
Date: Tue Jun 29 12:37:08 2021 +0300
init
diff --git a/.README.j2 b/.README.j2
new file mode 100644
index 0000000..325ea83
--- /dev/null
+++ b/.README.j2
@@ -0,0 +1,157 @@
+# Home Assistant Community Add-ons
+
+![Project Stage][project-stage-shield]
+![Maintenance][maintenance-shield]
+[![License][license-shield]](LICENSE.md)
+
+[![Discord][discord-shield]][discord]
+[![Community Forum][forum-shield]][forum]
+
+## About
+
+Home Assistant allows anyone to create add-on repositories to share their
+add-ons for Home Assistant easily. This repository is one of those repositories,
+providing extra Home Assistant add-ons for your installation.
+
+The primary goal of this project is to provide you (as a Home Assistant user)
+with additional, high quality, add-ons that allow you to take your automated
+home to the next level.
+
+## Installation
+
+In general, there is no need to install this repository on your
+Home Assistant instance. It is activated and added by Home Assistant
+by default.
+
+However, if the repository is missing on your setup, adding this add-ons
+repository to your Home Assistant instance is pretty easy. In the
+Home Assistant add-on store, a possibility to add a repository is provided.
+
+Use the following URL to add this repository:
+
+```txt
+{{ repo }}
+```
+
+## Add-ons provided by this repository
+
+{% for addon in addons %}
+### ✓ [{{ addon.name }}][addon-{{ addon.target }}]
+
+![Latest Version][{{ addon.target }}-version-shield]
+![Supports armhf Architecture][{{ addon.target }}-armhf-shield]
+![Supports armv7 Architecture][{{ addon.target }}-armv7-shield]
+![Supports aarch64 Architecture][{{ addon.target }}-aarch64-shield]
+![Supports amd64 Architecture][{{ addon.target }}-amd64-shield]
+![Supports i386 Architecture][{{ addon.target }}-i386-shield]
+
+{{ addon.description }}
+
+[:books: {{ addon.name }} add-on documentation][addon-doc-{{ addon.target }}]
+
+{% endfor %}
+## Releases
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
+based on the following:
+
+- ``MAJOR``: Incompatible or major changes.
+- ``MINOR``: Backwards-compatible new features and enhancements.
+- ``PATCH``: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The Home Assistant Community Add-ons [Discord Chat Server][discord]
+- The Home Assistant [Community Forum][forum].
+- The Home Assistant [Discord Chat Server][discord-ha].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also open an issue here on GitHub. Note, we use a separate
+GitHub repository for each add-on. Please ensure you are creating the issue
+on the correct GitHub repository matching the add-on.
+
+{% for addon in addons %}
+- [Open an issue for the add-on: {{ addon.name }}][{{ addon.target }}-issue]
+{% endfor %}
+
+For a general repository issue or add-on ideas [open an issue here][issue]
+
+## Contributing
+
+This is an active open-source project. We are always open to people who want to
+use the code or contribute to it.
+
+We have set up a separate document containing our
+[contribution guidelines](CONTRIBUTING.md).
+
+Thank you for being involved! :heart_eyes:
+
+## Adding a new add-on
+
+We are currently not accepting third party add-ons to this repository.
+
+For questions, please contact [Franck Nijhof][frenck]:
+
+- Drop him an email: frenck@addons.community
+- Chat with him on [Discord Chat][discord]
+- Message him via the forums: [frenck][forum-frenck]
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+{% for addon in addons %}
+[addon-{{ addon.target }}]: {{ addon.repo }}/tree/{{ addon.version }}
+[addon-doc-{{ addon.target}}]: {{ addon.repo }}/blob/{{ addon.version }}/README.md
+[{{ addon.target }}-issue]: {{ addon.repo }}/issues
+[{{ addon.target }}-version-shield]: https://img.shields.io/badge/version-{{ addon.version }}-blue.svg
+{% for arch in ['aarch64', 'amd64', 'armhf', 'armv7', 'i386'] %}
+{% if arch in addon.archs %}
+[{{ addon.target }}-{{ arch }}-shield]: https://img.shields.io/badge/{{ arch }}-yes-green.svg
+{% else %}
+[{{ addon.target }}-{{ arch }}-shield]: https://img.shields.io/badge/{{ arch }}-no-red.svg
+{% endif %}
+{% endfor %}
+{% endfor %}
+[awesome-shield]: https://img.shields.io/badge/awesome%3F-yes-brightgreen.svg
+[awesome]: https://awesome-ha.com
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-frenck]: https://community.home-assistant.io/u/frenck/?u=frenck
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io?u=frenck
+[frenck]: https://github.com/frenck
+[gitlabci-shield]: https://gitlab.com/{{ name }}/badges/master/pipeline.svg
+[gitlabci]: https://gitlab.com/{{ name }}/pipelines
+[issue]: https://github.com/{{ name }}/issues
+[license-shield]: https://img.shields.io/github/license/{{ name }}.svg
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[reddit]: https://reddit.com/r/homeassistant
+[semver]: http://semver.org/spec/v2.0.0.html
diff --git a/.addons.yml b/.addons.yml
new file mode 100644
index 0000000..8e27c64
--- /dev/null
+++ b/.addons.yml
@@ -0,0 +1,163 @@
+---
+channel: stable
+addons:
+ adguard:
+ repository: hassio-addons/addon-adguard-home
+ target: adguard
+ image: ghcr.io/hassio-addons/adguard/{arch}
+ aircast:
+ repository: hassio-addons/addon-aircast
+ target: aircast
+ image: ghcr.io/hassio-addons/aircast/{arch}
+ airsonos:
+ repository: hassio-addons/addon-airsonos
+ target: airsonos
+ image: ghcr.io/hassio-addons/airsonos/{arch}
+ appdaemon:
+ repository: hassio-addons/addon-appdaemon
+ target: appdaemon
+ image: ghcr.io/hassio-addons/appdaemon/{arch}
+ bitwarden:
+ repository: hassio-addons/addon-bitwarden
+ target: bitwarden
+ image: ghcr.io/hassio-addons/bitwarden/{arch}
+ bookstack:
+ repository: hassio-addons/addon-bookstack
+ target: bookstack
+ image: ghcr.io/hassio-addons/bookstack/{arch}
+ chrony:
+ repository: hassio-addons/addon-chrony
+ target: chrony
+ image: ghcr.io/hassio-addons/chrony/{arch}
+ esphome:
+ repository: esphome/hassio
+ target: esphome
+ image: esphome/esphome-hassio-{arch}
+ example:
+ repository: hassio-addons/addon-example
+ target: example
+ image: ghcr.io/hassio-addons/example/{arch}
+ foldingathome:
+ repository: hassio-addons/addon-foldingathome
+ target: foldingathome
+ image: ghcr.io/hassio-addons/foldingathome/{arch}
+ ftp:
+ repository: hassio-addons/addon-ftp
+ target: ftp
+ image: ghcr.io/hassio-addons/ftp/{arch}
+ glances:
+ repository: hassio-addons/addon-glances
+ target: glances
+ image: ghcr.io/hassio-addons/glances/{arch}
+ grafana:
+ repository: hassio-addons/addon-grafana
+ target: grafana
+ image: ghcr.io/hassio-addons/grafana/{arch}
+ grocy:
+ repository: hassio-addons/addon-grocy
+ target: grocy
+ image: ghcr.io/hassio-addons/grocy/{arch}
+ home-panel:
+ repository: hassio-addons/addon-home-panel
+ target: home-panel
+ image: ghcr.io/hassio-addons/home-panel/{arch}
+ influxdb:
+ repository: hassio-addons/addon-influxdb
+ target: influxdb
+ image: ghcr.io/hassio-addons/influxdb/{arch}
+ jupyterlab:
+ repository: hassio-addons/addon-jupyterlab
+ target: jupyterlab
+ image: ghcr.io/hassio-addons/jupyterlab/{arch}
+ log-viewer:
+ repository: hassio-addons/addon-log-viewer
+ target: log-viewer
+ image: ghcr.io/hassio-addons/log-viewer/{arch}
+ matrix:
+ repository: hassio-addons/addon-matrix
+ target: matrix
+ image: ghcr.io/hassio-addons/matrix/{arch}
+ motioneye:
+ repository: hassio-addons/addon-motioneye
+ target: motioneye
+ image: ghcr.io/hassio-addons/motioneye/{arch}
+ mqtt:
+ repository: hassio-addons/addon-mqtt
+ target: mqtt
+ image: hassioaddons/mqtt
+ node-red:
+ repository: hassio-addons/addon-node-red
+ target: node-red
+ image: ghcr.io/hassio-addons/node-red/{arch}
+ nginxproxymanager:
+ repository: hassio-addons/addon-nginx-proxy-manager
+ target: proxy-manager
+ image: ghcr.io/hassio-addons/nginxproxymanager/{arch}
+ nut:
+ repository: hassio-addons/addon-nut
+ target: nut
+ image: ghcr.io/hassio-addons/nut/{arch}
+ phpmyadmin:
+ repository: hassio-addons/addon-phpmyadmin
+ target: phpmyadmin
+ image: ghcr.io/hassio-addons/phpmyadmin/{arch}
+ plex:
+ repository: hassio-addons/addon-plex
+ target: plex
+ image: ghcr.io/hassio-addons/plex/{arch}
+ portainer:
+ repository: hassio-addons/addon-portainer
+ target: portainer
+ image: ghcr.io/hassio-addons/portainer/{arch}
+ spotify:
+ repository: hassio-addons/addon-spotify-connect
+ target: spotify
+ image: ghcr.io/hassio-addons/spotify/{arch}
+ tasmoadmin:
+ repository: hassio-addons/addon-tasmoadmin
+ target: tasmoadmin
+ image: ghcr.io/hassio-addons/tasmoadmin/{arch}
+ tautulli:
+ repository: hassio-addons/addon-tautulli
+ target: tautulli
+ image: ghcr.io/hassio-addons/tautulli/{arch}
+ thelounge:
+ repository: hassio-addons/addon-thelounge
+ target: thelounge
+ image: ghcr.io/hassio-addons/thelounge/{arch}
+ ssh:
+ repository: hassio-addons/addon-ssh
+ target: ssh
+ image: ghcr.io/hassio-addons/ssh/{arch}
+ sqlite-web:
+ repository: hassio-addons/addon-sqlite-web
+ target: sqlite-web
+ image: ghcr.io/hassio-addons/sqlite-web/{arch}
+ tor:
+ repository: hassio-addons/addon-tor
+ target: tor
+ image: ghcr.io/hassio-addons/tor/{arch}
+ traccar:
+ repository: hassio-addons/addon-traccar
+ target: traccar
+ image: ghcr.io/hassio-addons/traccar/{arch}
+ unifi:
+ repository: hassio-addons/addon-unifi
+ target: unifi
+ image: ghcr.io/hassio-addons/unifi/{arch}
+ vscode:
+ repository: hassio-addons/addon-vscode
+ target: vscode
+ image: ghcr.io/hassio-addons/vscode/{arch}
+ wireguard:
+ repository: hassio-addons/addon-wireguard
+ target: wireguard
+ image: ghcr.io/hassio-addons/wireguard/{arch}
+ zerotier:
+ repository: hassio-addons/addon-zerotier
+ target: zerotier
+ image: ghcr.io/hassio-addons/zerotier/{arch}
+ zwavejs2mqtt:
+ repository: hassio-addons/addon-zwavejs2mqtt
+ target: zwavejs2mqtt
+ image: ghcr.io/hassio-addons/zwavejs2mqtt/{arch}
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..771559a
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+.github/* @frenck
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8b146f4
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,133 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+- The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+frenck@frenck.dev.
+
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][mozilla coc].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][faq]. Translations are available
+at [https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
+[mozilla coc]: https://github.com/mozilla/diversity
+[faq]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..7b170ec
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,29 @@
+# Contributing
+
+When contributing to this repository, please first discuss the change you wish
+to make via issue, email, or any other method with the owners of this repository
+before making a change.
+
+Please note we have a code of conduct, please follow it in all your interactions
+with the project.
+
+## Issues and feature requests
+
+You've found a bug in the source code, a mistake in the documentation or maybe
+you'd like a new feature? You can help us by submitting an issue to our
+[GitHub Repository][github]. Before you create an issue, make sure you search
+the archive, maybe your question was already answered.
+
+Even better: You could submit a pull request with a fix / new feature!
+
+## Pull request process
+
+1. Search our repository for open or closed [pull requests][prs] that relates
+ to your submission. You don't want to duplicate effort.
+
+1. You may merge the pull request in once you have the sign-off of two other
+ developers, or if you do not have permission to do that, you may request
+ the second reviewer to merge it for you.
+
+[github]: https://github.com/hassio-addons/repository/issues
+[prs]: https://github.com/hassio-addons/repository/pulls
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..544da8f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,20 @@
+# Problem/Motivation
+
+> (Why the issue was filed)
+
+## Expected behavior
+
+> (What you expected to happen)
+
+## Actual behavior
+
+> (What actually happened)
+
+## Steps to reproduce
+
+> (How can someone else make/see it happen)
+
+## Proposed changes
+
+> (If you have a proposed change, workaround or fix,
+> describe the rationale behind it)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..cbd529a
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,9 @@
+# Proposed Changes
+
+> (Describe the changes and rationale behind them)
+
+## Related Issues
+
+> ([Github link][autolink-references] to related issues or pull requests)
+
+[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/
\ No newline at end of file
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..021b03d
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,1839 @@
+# Security Policy
+
+I take the security of my software and services seriously. This includes
+all open source software I create, maintain or help to maintain.
+
+If you believe you have found a security vulnerability in any repository
+I maintain, including this one, please report it responsible to me as
+described below.
+
+**Please DO NOT report security vulnerabilities publicly!**
+
+So... DO NOT create a GitHub issue for it ;)
+
+## Reporting a vulnerability
+
+Privately and confidently, send me a detailed description of the vulnerability
+you have discovered using an encrypted and authenticated channel. Personally,
+I prefer this to be done using PGP encrypted email. Contact information
+needed for this is listed down below.
+
+In the report, please include as much information as possible, including:
+
+- A extensive description of the vulnerability.
+- How it could be exploited.
+- The potential impact you think it would have (e.g., DOS attackable, privacy
+ concerns, leaking of credentials).
+- Steps for reproducing the vulnerability.
+- Code (if any), that is needed for reproducing the issue.
+- If you have an idea for a fix, patch or any other adjustment for mitigating
+ the vulnerability reported.
+
+Sorry for the long list, but providing as much information as possible allows
+me to act more quickly. Make sure to write your report in the English language.
+
+Please take care not to violate the privacy of other people in your report.
+For example, stack traces or exploit scripts sent to me should never contain
+private or personally identifiable information.
+
+## After you have reported the vulnerability
+
+Give me at least a week to investigate and respond to the reported vulnerability
+you have found; and up to 60 days to fix and distribute it. This includes a
+window for existing users to upgrade, patch or mitigate the issue as well.
+
+If you intent, at any point, to disclose the vulnerability to someone else
+or maybe even publicly, please give me a reasonable advanced notice.
+
+If any dependent projects are involved, I will take care of informing the
+maintainers of those projects as well.
+
+## Bug bounty
+
+Unfortunately, I cannot offer a paid bug bounty program. I will, however, give
+my best efforts to show appreciation towards people that took the time and
+effort to disclose vulnerabilities responsibly.
+
+Me, and the open source community, will be forever grateful.
+
+Oh, and if we ever meet, I'm happy to buy you a beer :)
+
+## Contact information
+
+Please contact me, Franck Nijhof, directly on:
+
+security@frenck.dev (not for support!)
+
+GPG Fingerprint: `731C 60D6 80E6 E850 F31C 2E88 AB33 ADAC E710 1952`
+
+https://keys.openpgp.org/search?q=731C60D680E6E850F31C2E88AB33ADACE7101952
+
+```txt
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+FHJUUkMAAAIMAAAAIGdUUkMAAAIsAAAAIGJUUkMAAAJMAAAAIGNocm0AAAJsAAAA
+JG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAHAAAABwAcwBSAEcAQgAgAGIAdQBpAGwA
+dAAtAGkAbgAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAAyAAAAHABOAG8AIABjAG8A
+cAB5AHIAaQBnAGgAdAAsACAAdQBzAGUAIABmAHIAZQBlAGwAeQAAAABYWVogAAAA
+AAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMSgAABeP///MqAAAHmwAA/Yf///ui///9
+owAAA9gAAMCUWFlaIAAAAAAAAG+UAAA47gAAA5BYWVogAAAAAAAAJJ0AAA+DAAC2
+vlhZWiAAAAAAAABipQAAt5AAABjecGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT
+0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3BhcmEAAAAAAAMA
+AAACZmYAAPKnAAANWQAAE9AAAApbY2hybQAAAAAAAwAAAACj1wAAVHsAAEzNAACZ
+mgAAJmYAAA9c/8AAEQgAgACAAwESAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA
+AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNR
+YQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH
+SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Sl
+pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX2
+9/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQE
+AwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoW
+JDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
+d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ
+ytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMACAYGBwYFCAcHBwkJCAoM
+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
+73QnlXw4/oDrjt/ZPD2SY9spk8ApQzQbKKSRuGxzZU8irDS5tLtYR9z4j1ulJGWm
+j3GvuZjjXSxHy1dwOo8ph2N7b5nmzruXH1wjgppZ48hOcLn/z1dghvh4M8eBvoho
+HElMD+bgudYsKEAwQMjPcIbjM+USR9BGSLQ3RnJhbmNrIE5pamhvZiAoRGVhbGVy
+RGlyZWN0KSA8Zi5uaWpob2ZAZGVhbGVyZGlyZWN0Lm5sPokCVAQTAQoAPgIbAwIe
+AQIXgAULCQgHAwUVCgkICwUWAgMBABYhBHMcYNaA5uhQ8xwuiKszraznEBlSBQJg
+eyeWBQkMLyuoAAoJEKszraznEBlSKNkQAKk9a6khEhDigwZWByPcNuv29uNB0m4C
+TMKP5kmUXCf1rJcMFc7rxC1JrDiSKUJpeNRJLly4ltp3D3hIt0dWU928CAeHzD9k
+veNJZMqA+KLRkjOQt3mQlsWhPN3gCN/oatrVzvchTGInuD5DQj1suPNCCoohgAIR
+z248TyTr34cLN16ehAI4PHq9ZL6+V0CbM5a36Dp5nVHtDQQOqUTQzRUGcbQdYtFg
+txs9mnODJRt91ykkKi2CBkZP4yzzjdXyAT/2JFBNk/wPNUkHSLZsN5xDwRw44KUG
+GqsL4ALMFYv/ITM6lTDDdQyo9g7DOUy36yhpo5nyka+vuvQxeTQouJ4mytaM+5fV
+nYd8PGqm+YI9EYKXpWdd55ycVrkD7qGwRPD6OROyn7sLldC6L5HhbexRNywM1qnp
+DLd1upPn2LwnqUB4P9W56NxAeVlTrYP2JyZ/1KjtmdmsRnlDv6SIWv+GwLKaVgCr
+j0YuAbk4BWQNhEVm38O9vYQPr0ti4A75t6EuHjMc1xrlpTwdMQ30hTu/M3hV6V/P
+sLN/YnVVIYvYsokOvPMd5fikOek+CUcxHIkmW1sp5ryDvUDC3wfIXvl70wWsmeU9
+4tN7TJczPIqOynRuNE3nUMMdtrxdU95Auh5BIdFANQNud1SX+E1UCKfs4VIIxNW6
+wNgrzyErU8g5iQIcBBABAgAGBQJYPYAyAAoJEE5+WcG+PB5Y+JUP/0fnrZbh/2uO
+vflSKUwb8kt4B2OYsZLdtql5L8ou/go2x6tMV+ciUSq8YkmlhCNzp5up/Qt4iRlo
+C/MCAGo3v3Y//65xCz16WoLugXVpQSl3YvGS7dq66b0kPiVEhs67S2dzymG3uvm7
+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
+ebj4joK8GrVwV3oQvb0oWg==
+=dRLN
+-----END PGP PUBLIC KEY BLOCK-----
+```
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
new file mode 100644
index 0000000..2af0a68
--- /dev/null
+++ b/.github/dependabot.yaml
@@ -0,0 +1,13 @@
+---
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: daily
+ time: "06:00"
+ - package-ecosystem: "pip"
+ directory: "/"
+ schedule:
+ interval: daily
+ time: "06:00"
diff --git a/.github/labels.yml b/.github/labels.yml
new file mode 100644
index 0000000..2d0f68a
--- /dev/null
+++ b/.github/labels.yml
@@ -0,0 +1,85 @@
+---
+- name: "breaking-change"
+ color: ee0701
+ description: "A breaking change for existing users."
+- name: "bugfix"
+ color: ee0701
+ description: "Inconsistencies or issues which will cause a problem for users or implementors."
+- name: "documentation"
+ color: 0052cc
+ description: "Solely about the documentation of the project."
+- name: "enhancement"
+ color: 1d76db
+ description: "Enhancement of the code, not introducing new features."
+- name: "refactor"
+ color: 1d76db
+ description: "Improvement of existing code, not introducing new features."
+- name: "performance"
+ color: 1d76db
+ description: "Improving performance, not introducing new features."
+- name: "new-feature"
+ color: 0e8a16
+ description: "New features or options."
+- name: "maintenance"
+ color: 2af79e
+ description: "Generic maintenance tasks."
+- name: "ci"
+ color: 1d76db
+ description: "Work that improves the continue integration."
+- name: "dependencies"
+ color: 1d76db
+ description: "Upgrade or downgrade of project dependencies."
+
+- name: "in-progress"
+ color: fbca04
+ description: "Issue is currently being resolved by a developer."
+- name: "stale"
+ color: fef2c0
+ description: "There has not been activity on this issue or PR for quite some time."
+- name: "no-stale"
+ color: fef2c0
+ description: "This issue or PR is exempted from the stable bot."
+
+- name: "security"
+ color: ee0701
+ description: "Marks a security issue that needs to be resolved asap."
+- name: "incomplete"
+ color: fef2c0
+ description: "Marks a PR or issue that is missing information."
+- name: "invalid"
+ color: fef2c0
+ description: "Marks a PR or issue that is missing information."
+
+- name: "beginner-friendly"
+ color: 0e8a16
+ description: "Good first issue for people wanting to contribute to the project."
+- name: "help-wanted"
+ color: 0e8a16
+ description: "We need some extra helping hands or expertise in order to resolve this."
+
+- name: "hacktoberfest"
+ description: "Issues/PRs are participating in the Hacktoberfest."
+ color: fbca04
+- name: "hacktoberfest-accepted"
+ description: "Issues/PRs are participating in the Hacktoberfest."
+ color: fbca04
+
+- name: "priority-critical"
+ color: ee0701
+ description: "This should be dealt with ASAP. Not fixing this issue would be a serious error."
+- name: "priority-high"
+ color: b60205
+ description: "After critical issues are fixed, these should be dealt with before any further issues."
+- name: "priority-medium"
+ color: 0e8a16
+ description: "This issue may be useful, and needs some attention."
+- name: "priority-low"
+ color: e4ea8a
+ description: "Nice addition, maybe... someday..."
+
+- name: "major"
+ color: b60205
+ description: "This PR causes a major version bump in the version number."
+- name: "minor"
+ color: 0e8a16
+ description: "This PR causes a minor version bump in the version number."
diff --git a/.github/workflows/labels.yaml b/.github/workflows/labels.yaml
new file mode 100644
index 0000000..6be7dc0
--- /dev/null
+++ b/.github/workflows/labels.yaml
@@ -0,0 +1,22 @@
+---
+name: Sync labels
+
+# yamllint disable-line rule:truthy
+on:
+ push:
+ branches:
+ - master
+ paths:
+ - .github/labels.yml
+
+jobs:
+ labels:
+ name: ♻️ Sync labels
+ runs-on: ubuntu-latest
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v2.3.4
+ - name: 🚀 Run Label Syncer
+ uses: micnncim/action-label-syncer@v1.3.0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
new file mode 100644
index 0000000..3db43f6
--- /dev/null
+++ b/.github/workflows/lint.yaml
@@ -0,0 +1,33 @@
+---
+name: Lint
+
+# yamllint disable-line rule:truthy
+on:
+ push:
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ workflow_dispatch:
+
+jobs:
+ json:
+ name: JSON Lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v2.3.4
+ - name: 🚀 Run JQ
+ run: |
+ shopt -s globstar
+ cat **/*.json | jq '.'
+
+ yamllint:
+ name: YAMLLint
+ runs-on: ubuntu-latest
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v2.3.4
+ - name: 🚀 Run YAMLLint
+ uses: frenck/action-yamllint@v1.1
diff --git a/.github/workflows/lock.yaml b/.github/workflows/lock.yaml
new file mode 100644
index 0000000..ff147a2
--- /dev/null
+++ b/.github/workflows/lock.yaml
@@ -0,0 +1,21 @@
+---
+name: Lock
+
+# yamllint disable-line rule:truthy
+on:
+ schedule:
+ - cron: "0 9 * * *"
+ workflow_dispatch:
+
+jobs:
+ lock:
+ name: 🔒 Lock closed issues and PRs
+ runs-on: ubuntu-latest
+ steps:
+ - uses: dessant/lock-threads@v2.0.3
+ with:
+ github-token: ${{ github.token }}
+ issue-lock-inactive-days: "30"
+ issue-lock-reason: ""
+ pr-lock-inactive-days: "1"
+ pr-lock-reason: ""
diff --git a/.github/workflows/repository-updater.yaml b/.github/workflows/repository-updater.yaml
new file mode 100644
index 0000000..69bd780
--- /dev/null
+++ b/.github/workflows/repository-updater.yaml
@@ -0,0 +1,54 @@
+---
+name: Repository Updater
+
+# yamllint disable-line rule:truthy
+on:
+ repository_dispatch:
+ types: ["update"]
+
+jobs:
+ publish:
+ name: Publish add-on update
+ runs-on: ubuntu-latest
+ steps:
+ - name: 🚀 Run Repository Updater
+ uses: hassio-addons/repository-updater@v1.1
+ with:
+ addon: ${{ github.event.client_payload.addon }}
+ repository: ${{ github.repository }}
+ token: ${{ secrets.UPDATER_TOKEN }}
+
+ announce:
+ name: Announce add-on update
+ needs: publish
+ runs-on: ubuntu-latest
+ steps:
+ - name: 📢 Announce on Discord server
+ uses: sarisia/actions-status-discord@v1.8.6
+ with:
+ webhook: ${{ secrets.DISCORD_WEBHOOK }}
+ nodetail: true
+ username: ${{ github.event.client_payload.name }}
+ avatar_url: |
+ https://raw.githubusercontent.com/${{ github.repository }}/master/${{ github.event.client_payload.addon }}/icon.png
+ title: ":arrow_up: ${{ github.event.client_payload.name }} ${{ github.event.client_payload.version }}"
+ image: |
+ https://raw.githubusercontent.com/${{ github.repository }}/master/${{ github.event.client_payload.addon }}/logo.png
+ description: |
+ A new version of the ${{ github.event.client_payload.name }} add-on has been published.
+
+ **Version**: `${{ github.event.client_payload.version }}`
+ **Release notes**:
+
+
+ - name: 📢 Announce on Twitter
+ uses: devigned/go-twitter-action@v1.0.2
+ with:
+ apiKey: ${{ secrets.TWITTER_API_KEY }}
+ apiKeySecret: ${{ secrets.TWITTER_API_SECRET }}
+ accessToken: ${{ secrets.TWITTER_ACCESS_TOKEN }}
+ accessTokenSecret: ${{ secrets.TWITTER_ACCESS_SECRET }}
+ message: |
+ ⬆️ ${{ github.event.client_payload.name }} ${{ github.event.client_payload.version }}
+
+ https://github.com/${{ github.event.client_payload.repository }}/releases/tag/${{ github.event.client_payload.version }}
diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml
new file mode 100644
index 0000000..d9a5240
--- /dev/null
+++ b/.github/workflows/stale.yaml
@@ -0,0 +1,40 @@
+---
+name: Stale
+
+# yamllint disable-line rule:truthy
+on:
+ schedule:
+ - cron: "0 8 * * *"
+ workflow_dispatch:
+
+jobs:
+ stale:
+ name: 🧹 Clean up stale issues and PRs
+ runs-on: ubuntu-latest
+ steps:
+ - name: 🚀 Run stale
+ uses: actions/stale@v3.0.19
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ days-before-stale: 30
+ days-before-close: 7
+ remove-stale-when-updated: true
+ stale-issue-label: "stale"
+ exempt-issue-labels: "no-stale,help-wanted"
+ stale-issue-message: >
+ There hasn't been any activity on this issue recently, so we
+ clean up some of the older and inactive issues.
+
+ Please make sure to update to the latest version and
+ check if that solves the issue. Let us know if that works for you
+ by leaving a comment 👍
+
+ This issue has now been marked as stale and will be closed if no
+ further activity occurs. Thanks!
+ stale-pr-label: "stale"
+ exempt-pr-labels: "no-stale"
+ stale-pr-message: >
+ There hasn't been any activity on this pull request recently. This
+ pull request has been automatically marked as stale because of that
+ and will be closed if no further activity occurs within 7 days.
+ Thank you for your contributions.
diff --git a/.github/workflows/translations-download.yaml b/.github/workflows/translations-download.yaml
new file mode 100644
index 0000000..1e62b73
--- /dev/null
+++ b/.github/workflows/translations-download.yaml
@@ -0,0 +1,75 @@
+---
+name: Translations Download
+
+# yamllint disable-line rule:truthy
+on:
+ schedule:
+ - cron: "0 8 * * *"
+ workflow_dispatch:
+ workflow_run:
+ workflows: ["Translations Upload"]
+ branches: [master]
+ types:
+ - completed
+
+jobs:
+ json:
+ name: Download Translations
+ runs-on: ubuntu-latest
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v2.3.4
+ with:
+ fetch-depth: 0
+ - name: 🏗 Set up yq
+ uses: frenck/action-setup-yq@v1.0.0
+ - name: 🏗 Set up the Lokalise CLI
+ uses: frenck/action-setup-lokalise@v1.0.0
+ - name: ⤵️ Download translations
+ run: |
+ echo "Downloading translations to lokalise"
+ lokalise2 file download \
+ --token "${LOKALISE_TOKEN}" \
+ --project-id "${LOKALISE_PROJECT}" \
+ --format yaml \
+ --original-filenames=false \
+ --export-empty-as base \
+ --bundle-structure ".translations/%LANG_ISO%.yaml"
+ env:
+ LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
+ LOKALISE_PROJECT: ${{ secrets.LOKALISE_PROJECT }}
+ - name: 🚀 Process translations
+ run: |
+ addons=$(yq e '.addons | keys | .[]' .addons.yml)
+ mkdir -p .translations
+ for file in .translations/*.yaml;
+ do
+ filename=$(basename "${file}")
+ language="${filename%.*}"
+ if [[ "${language}" == "en" ]]; then
+ continue
+ fi
+ echo "Processing downloaded translations in ${language}..."
+ while read addon;
+ do
+ if [[ -f "${addon}/translations/en.yaml" ]];
+ then
+ echo "Processing downloaded translations in ${language} for ${addon}..."
+ yq e ".${addon}" "${file}" \
+ > "${addon}/translations/${filename}"
+ fi
+ done <<<"${addons}"
+ done
+ - name: 🚀 Commit changes
+ continue-on-error: true
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "${GITHUB_ACTOR}"
+ git add .
+ git commit -m "🌍 Updating translations" -a
+ - name: 🚀 Push changes
+ uses: ad-m/github-push-action@v0.6.0
+ continue-on-error: true
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ branch: ${{ github.ref }}
diff --git a/.github/workflows/translations-upload.yaml b/.github/workflows/translations-upload.yaml
new file mode 100644
index 0000000..37c2015
--- /dev/null
+++ b/.github/workflows/translations-upload.yaml
@@ -0,0 +1,53 @@
+---
+name: Translations Upload
+
+# yamllint disable-line rule:truthy
+on:
+ workflow_dispatch:
+ workflow_run:
+ workflows: ["Repository Updater"]
+ branches: [master]
+ types:
+ - completed
+
+jobs:
+ upload:
+ name: Upload Translations
+ runs-on: ubuntu-latest
+ steps:
+ - name: ⤵️ Check out code from GitHub
+ uses: actions/checkout@v2.3.4
+ - name: 🏗 Set up yq
+ uses: frenck/action-setup-yq@v1.0.0
+ - name: 🏗 Set up the Lokalise CLI
+ uses: frenck/action-setup-lokalise@v1.0.0
+ - name: 🚀 Combine translations
+ run: |
+ addons=$(yq e '.addons | keys | .[]' .addons.yml)
+ mkdir -p .translations
+ while read addon;
+ do
+ if [[ -f "${addon}/translations/en.yaml" ]];
+ then
+ echo "Prepping translation upload for $addon..."
+ ADDON="${addon}" \
+ yq e '{env(ADDON): .}' "${addon}/translations/en.yaml" \
+ > ".translations/${addon}.yaml"
+ fi
+ done <<<"${addons}"
+
+ echo "Combining translation files..."
+ yq ea '. as $item ireduce ({}; . * $item)' ./.translations/*.yaml > translations.yaml
+ - name: 🚀 Upload translations
+ run: |
+ echo "Uploading translations to lokalise"
+ lokalise2 file upload \
+ --apply-tm \
+ --lang-iso en \
+ --poll \
+ --token "${LOKALISE_TOKEN}" \
+ --project-id "${LOKALISE_PROJECT}" \
+ --file translations.yaml
+ env:
+ LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
+ LOKALISE_PROJECT: ${{ secrets.LOKALISE_PROJECT }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..60e28f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+bin/*
+!bin/create_all.sh
+!bin/create_hassio_addon.sh
+!bin/travis_build.sh
+*.do
+bin/*
+docs/*
+site/*
+pip-selfcheck.json
+pyvenv.cfg
+include/
+lib/
+venv/
+.translations
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/gitlab-quickmr.xml b/.idea/gitlab-quickmr.xml
new file mode 100644
index 0000000..dc77e05
--- /dev/null
+++ b/.idea/gitlab-quickmr.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..48b9eea
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..1b60cc4
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ $USER_HOME$/.subversion
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..96459cb
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/repository-master.iml b/.idea/repository-master.iml
new file mode 100644
index 0000000..74d515a
--- /dev/null
+++ b/.idea/repository-master.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.mdlrc b/.mdlrc
new file mode 100644
index 0000000..2b0128d
--- /dev/null
+++ b/.mdlrc
@@ -0,0 +1 @@
+rules "~MD024"
\ No newline at end of file
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000..fe42475
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,66 @@
+---
+ignore: |
+ */translations/*.yaml
+rules:
+ braces:
+ level: error
+ min-spaces-inside: 0
+ max-spaces-inside: 1
+ min-spaces-inside-empty: -1
+ max-spaces-inside-empty: -1
+ brackets:
+ level: error
+ min-spaces-inside: 0
+ max-spaces-inside: 0
+ min-spaces-inside-empty: -1
+ max-spaces-inside-empty: -1
+ colons:
+ level: error
+ max-spaces-before: 0
+ max-spaces-after: 1
+ commas:
+ level: error
+ max-spaces-before: 0
+ min-spaces-after: 1
+ max-spaces-after: 1
+ comments:
+ level: error
+ require-starting-space: true
+ min-spaces-from-content: 2
+ comments-indentation:
+ level: error
+ document-end:
+ level: error
+ present: false
+ document-start:
+ level: error
+ present: true
+ empty-lines:
+ level: error
+ max: 1
+ max-start: 0
+ max-end: 1
+ hyphens:
+ level: error
+ max-spaces-after: 1
+ indentation:
+ level: error
+ spaces: 2
+ indent-sequences: true
+ check-multi-line-strings: false
+ key-duplicates:
+ level: error
+ line-length:
+ level: warning
+ max: 120
+ allow-non-breakable-words: true
+ allow-non-breakable-inline-mappings: true
+ new-line-at-end-of-file:
+ level: error
+ new-lines:
+ level: error
+ type: unix
+ trailing-spaces:
+ level: error
+ truthy:
+ level: error
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..55eceb7
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+# MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/READM1E.md b/READM1E.md
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7c58cd9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,1046 @@
+# Home Assistant Community Add-ons
+
+![Project Stage][project-stage-shield]
+![Maintenance][maintenance-shield]
+[![License][license-shield]](LICENSE.md)
+
+[![Discord][discord-shield]][discord]
+[![Community Forum][forum-shield]][forum]
+
+## About
+
+Home Assistant allows anyone to create add-on repositories to share their
+add-ons for Home Assistant easily. This repository is one of those repositories,
+providing extra Home Assistant add-ons for your installation.
+
+The primary goal of this project is to provide you (as a Home Assistant user)
+with additional, high quality, add-ons that allow you to take your automated
+home to the next level.
+
+## Installation
+
+In general, there is no need to install this repository on your
+Home Assistant instance. It is activated and added by Home Assistant
+by default.
+
+However, if the repository is missing on your setup, adding this add-ons
+repository to your Home Assistant instance is pretty easy. In the
+Home Assistant add-on store, a possibility to add a repository is provided.
+
+Use the following URL to add this repository:
+
+```txt
+https://github.com/hassio-addons/repository
+```
+
+## Add-ons provided by this repository
+
+### ✓ [AdGuard Home][addon-adguard]
+
+![Latest Version][adguard-version-shield]
+![Supports armhf Architecture][adguard-armhf-shield]
+![Supports armv7 Architecture][adguard-armv7-shield]
+![Supports aarch64 Architecture][adguard-aarch64-shield]
+![Supports amd64 Architecture][adguard-amd64-shield]
+![Supports i386 Architecture][adguard-i386-shield]
+
+Network-wide ads & trackers blocking DNS server
+
+[:books: AdGuard Home add-on documentation][addon-doc-adguard]
+
+### ✓ [AirCast][addon-aircast]
+
+![Latest Version][aircast-version-shield]
+![Supports armhf Architecture][aircast-armhf-shield]
+![Supports armv7 Architecture][aircast-armv7-shield]
+![Supports aarch64 Architecture][aircast-aarch64-shield]
+![Supports amd64 Architecture][aircast-amd64-shield]
+![Supports i386 Architecture][aircast-i386-shield]
+
+AirPlay capabilities for your Chromecast devices.
+
+[:books: AirCast add-on documentation][addon-doc-aircast]
+
+### ✓ [AirSonos][addon-airsonos]
+
+![Latest Version][airsonos-version-shield]
+![Supports armhf Architecture][airsonos-armhf-shield]
+![Supports armv7 Architecture][airsonos-armv7-shield]
+![Supports aarch64 Architecture][airsonos-aarch64-shield]
+![Supports amd64 Architecture][airsonos-amd64-shield]
+![Supports i386 Architecture][airsonos-i386-shield]
+
+AirPlay capabilities for your Sonos (and UPnP) devices.
+
+[:books: AirSonos add-on documentation][addon-doc-airsonos]
+
+### ✓ [AppDaemon 4][addon-appdaemon]
+
+![Latest Version][appdaemon-version-shield]
+![Supports armhf Architecture][appdaemon-armhf-shield]
+![Supports armv7 Architecture][appdaemon-armv7-shield]
+![Supports aarch64 Architecture][appdaemon-aarch64-shield]
+![Supports amd64 Architecture][appdaemon-amd64-shield]
+![Supports i386 Architecture][appdaemon-i386-shield]
+
+Python Apps and Dashboard using AppDaemon 4.x for Home Assistant
+
+[:books: AppDaemon 4 add-on documentation][addon-doc-appdaemon]
+
+### ✓ [Bitwarden (Vaultwarden)][addon-bitwarden]
+
+![Latest Version][bitwarden-version-shield]
+![Supports armhf Architecture][bitwarden-armhf-shield]
+![Supports armv7 Architecture][bitwarden-armv7-shield]
+![Supports aarch64 Architecture][bitwarden-aarch64-shield]
+![Supports amd64 Architecture][bitwarden-amd64-shield]
+![Supports i386 Architecture][bitwarden-i386-shield]
+
+Open source password management solution
+
+[:books: Bitwarden (Vaultwarden) add-on documentation][addon-doc-bitwarden]
+
+### ✓ [Bookstack][addon-bookstack]
+
+![Latest Version][bookstack-version-shield]
+![Supports armhf Architecture][bookstack-armhf-shield]
+![Supports armv7 Architecture][bookstack-armv7-shield]
+![Supports aarch64 Architecture][bookstack-aarch64-shield]
+![Supports amd64 Architecture][bookstack-amd64-shield]
+![Supports i386 Architecture][bookstack-i386-shield]
+
+Simple & Free Wiki Software
+
+[:books: Bookstack add-on documentation][addon-doc-bookstack]
+
+### ✓ [ESPHome][addon-esphome]
+
+![Latest Version][esphome-version-shield]
+![Supports armhf Architecture][esphome-armhf-shield]
+![Supports armv7 Architecture][esphome-armv7-shield]
+![Supports aarch64 Architecture][esphome-aarch64-shield]
+![Supports amd64 Architecture][esphome-amd64-shield]
+![Supports i386 Architecture][esphome-i386-shield]
+
+ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices
+
+[:books: ESPHome add-on documentation][addon-doc-esphome]
+
+### ✓ [Example][addon-example]
+
+![Latest Version][example-version-shield]
+![Supports armhf Architecture][example-armhf-shield]
+![Supports armv7 Architecture][example-armv7-shield]
+![Supports aarch64 Architecture][example-aarch64-shield]
+![Supports amd64 Architecture][example-amd64-shield]
+![Supports i386 Architecture][example-i386-shield]
+
+Example add-on by Community Home Assistant Add-ons
+
+[:books: Example add-on documentation][addon-doc-example]
+
+### ✓ [FTP][addon-ftp]
+
+![Latest Version][ftp-version-shield]
+![Supports armhf Architecture][ftp-armhf-shield]
+![Supports armv7 Architecture][ftp-armv7-shield]
+![Supports aarch64 Architecture][ftp-aarch64-shield]
+![Supports amd64 Architecture][ftp-amd64-shield]
+![Supports i386 Architecture][ftp-i386-shield]
+
+A secure and fast FTP server for Home Assistant
+
+[:books: FTP add-on documentation][addon-doc-ftp]
+
+### ✓ [Folding@home][addon-foldingathome]
+
+![Latest Version][foldingathome-version-shield]
+![Supports armhf Architecture][foldingathome-armhf-shield]
+![Supports armv7 Architecture][foldingathome-armv7-shield]
+![Supports aarch64 Architecture][foldingathome-aarch64-shield]
+![Supports amd64 Architecture][foldingathome-amd64-shield]
+![Supports i386 Architecture][foldingathome-i386-shield]
+
+Fighting disease with a world wide distributed super computer
+
+[:books: Folding@home add-on documentation][addon-doc-foldingathome]
+
+### ✓ [Glances][addon-glances]
+
+![Latest Version][glances-version-shield]
+![Supports armhf Architecture][glances-armhf-shield]
+![Supports armv7 Architecture][glances-armv7-shield]
+![Supports aarch64 Architecture][glances-aarch64-shield]
+![Supports amd64 Architecture][glances-amd64-shield]
+![Supports i386 Architecture][glances-i386-shield]
+
+A cross-platform system monitoring tool
+
+[:books: Glances add-on documentation][addon-doc-glances]
+
+### ✓ [Grafana][addon-grafana]
+
+![Latest Version][grafana-version-shield]
+![Supports armhf Architecture][grafana-armhf-shield]
+![Supports armv7 Architecture][grafana-armv7-shield]
+![Supports aarch64 Architecture][grafana-aarch64-shield]
+![Supports amd64 Architecture][grafana-amd64-shield]
+![Supports i386 Architecture][grafana-i386-shield]
+
+The open platform for beautiful analytics and monitoring
+
+[:books: Grafana add-on documentation][addon-doc-grafana]
+
+### ✓ [Grocy][addon-grocy]
+
+![Latest Version][grocy-version-shield]
+![Supports armhf Architecture][grocy-armhf-shield]
+![Supports armv7 Architecture][grocy-armv7-shield]
+![Supports aarch64 Architecture][grocy-aarch64-shield]
+![Supports amd64 Architecture][grocy-amd64-shield]
+![Supports i386 Architecture][grocy-i386-shield]
+
+ERP beyond your fridge! A groceries & household management solution for your home
+
+[:books: Grocy add-on documentation][addon-doc-grocy]
+
+### ✓ [Home Panel][addon-home-panel]
+
+![Latest Version][home-panel-version-shield]
+![Supports armhf Architecture][home-panel-armhf-shield]
+![Supports armv7 Architecture][home-panel-armv7-shield]
+![Supports aarch64 Architecture][home-panel-aarch64-shield]
+![Supports amd64 Architecture][home-panel-amd64-shield]
+![Supports i386 Architecture][home-panel-i386-shield]
+
+A web frontend for controlling the home
+
+[:books: Home Panel add-on documentation][addon-doc-home-panel]
+
+### ✓ [InfluxDB][addon-influxdb]
+
+![Latest Version][influxdb-version-shield]
+![Supports armhf Architecture][influxdb-armhf-shield]
+![Supports armv7 Architecture][influxdb-armv7-shield]
+![Supports aarch64 Architecture][influxdb-aarch64-shield]
+![Supports amd64 Architecture][influxdb-amd64-shield]
+![Supports i386 Architecture][influxdb-i386-shield]
+
+Scalable datastore for metrics, events, and real-time analytics
+
+[:books: InfluxDB add-on documentation][addon-doc-influxdb]
+
+### ✓ [JupyterLab][addon-jupyterlab]
+
+![Latest Version][jupyterlab-version-shield]
+![Supports armhf Architecture][jupyterlab-armhf-shield]
+![Supports armv7 Architecture][jupyterlab-armv7-shield]
+![Supports aarch64 Architecture][jupyterlab-aarch64-shield]
+![Supports amd64 Architecture][jupyterlab-amd64-shield]
+![Supports i386 Architecture][jupyterlab-i386-shield]
+
+Create documents containing live code, equations, visualizations, and explanatory text
+
+[:books: JupyterLab add-on documentation][addon-doc-jupyterlab]
+
+### ✓ [Log Viewer][addon-log-viewer]
+
+![Latest Version][log-viewer-version-shield]
+![Supports armhf Architecture][log-viewer-armhf-shield]
+![Supports armv7 Architecture][log-viewer-armv7-shield]
+![Supports aarch64 Architecture][log-viewer-aarch64-shield]
+![Supports amd64 Architecture][log-viewer-amd64-shield]
+![Supports i386 Architecture][log-viewer-i386-shield]
+
+Browser-based log utility for Home Assistant
+
+[:books: Log Viewer add-on documentation][addon-doc-log-viewer]
+
+### ✓ [MQTT Server & Web client][addon-mqtt]
+
+![Latest Version][mqtt-version-shield]
+![Supports armhf Architecture][mqtt-armhf-shield]
+![Supports armv7 Architecture][mqtt-armv7-shield]
+![Supports aarch64 Architecture][mqtt-aarch64-shield]
+![Supports amd64 Architecture][mqtt-amd64-shield]
+![Supports i386 Architecture][mqtt-i386-shield]
+
+Mosquitto MQTT Server bundled with Hivemq's web client
+
+[:books: MQTT Server & Web client add-on documentation][addon-doc-mqtt]
+
+### ✓ [Matrix][addon-matrix]
+
+![Latest Version][matrix-version-shield]
+![Supports armhf Architecture][matrix-armhf-shield]
+![Supports armv7 Architecture][matrix-armv7-shield]
+![Supports aarch64 Architecture][matrix-aarch64-shield]
+![Supports amd64 Architecture][matrix-amd64-shield]
+![Supports i386 Architecture][matrix-i386-shield]
+
+A secure and decentralized communication platform.
+
+[:books: Matrix add-on documentation][addon-doc-matrix]
+
+### ✓ [Network UPS Tools][addon-nut]
+
+![Latest Version][nut-version-shield]
+![Supports armhf Architecture][nut-armhf-shield]
+![Supports armv7 Architecture][nut-armv7-shield]
+![Supports aarch64 Architecture][nut-aarch64-shield]
+![Supports amd64 Architecture][nut-amd64-shield]
+![Supports i386 Architecture][nut-i386-shield]
+
+Manage battery backup (UPS) devices
+
+[:books: Network UPS Tools add-on documentation][addon-doc-nut]
+
+### ✓ [Nginx Proxy Manager][addon-nginxproxymanager]
+
+![Latest Version][nginxproxymanager-version-shield]
+![Supports armhf Architecture][nginxproxymanager-armhf-shield]
+![Supports armv7 Architecture][nginxproxymanager-armv7-shield]
+![Supports aarch64 Architecture][nginxproxymanager-aarch64-shield]
+![Supports amd64 Architecture][nginxproxymanager-amd64-shield]
+![Supports i386 Architecture][nginxproxymanager-i386-shield]
+
+Manage Nginx proxy hosts with a simple, powerful interface
+
+[:books: Nginx Proxy Manager add-on documentation][addon-doc-nginxproxymanager]
+
+### ✓ [Node-RED][addon-node-red]
+
+![Latest Version][node-red-version-shield]
+![Supports armhf Architecture][node-red-armhf-shield]
+![Supports armv7 Architecture][node-red-armv7-shield]
+![Supports aarch64 Architecture][node-red-aarch64-shield]
+![Supports amd64 Architecture][node-red-amd64-shield]
+![Supports i386 Architecture][node-red-i386-shield]
+
+Flow-based programming for the Internet of Things
+
+[:books: Node-RED add-on documentation][addon-doc-node-red]
+
+### ✓ [Plex Media Server][addon-plex]
+
+![Latest Version][plex-version-shield]
+![Supports armhf Architecture][plex-armhf-shield]
+![Supports armv7 Architecture][plex-armv7-shield]
+![Supports aarch64 Architecture][plex-aarch64-shield]
+![Supports amd64 Architecture][plex-amd64-shield]
+![Supports i386 Architecture][plex-i386-shield]
+
+Recorded media, live TV, online news, and podcasts ready to stream.
+
+[:books: Plex Media Server add-on documentation][addon-doc-plex]
+
+### ✓ [Portainer][addon-portainer]
+
+![Latest Version][portainer-version-shield]
+![Supports armhf Architecture][portainer-armhf-shield]
+![Supports armv7 Architecture][portainer-armv7-shield]
+![Supports aarch64 Architecture][portainer-aarch64-shield]
+![Supports amd64 Architecture][portainer-amd64-shield]
+![Supports i386 Architecture][portainer-i386-shield]
+
+Manage your Docker environment with ease
+
+[:books: Portainer add-on documentation][addon-doc-portainer]
+
+### ✓ [SQLite Web][addon-sqlite-web]
+
+![Latest Version][sqlite-web-version-shield]
+![Supports armhf Architecture][sqlite-web-armhf-shield]
+![Supports armv7 Architecture][sqlite-web-armv7-shield]
+![Supports aarch64 Architecture][sqlite-web-aarch64-shield]
+![Supports amd64 Architecture][sqlite-web-amd64-shield]
+![Supports i386 Architecture][sqlite-web-i386-shield]
+
+Explore your SQLite database
+
+[:books: SQLite Web add-on documentation][addon-doc-sqlite-web]
+
+### ✓ [SSH & Web Terminal][addon-ssh]
+
+![Latest Version][ssh-version-shield]
+![Supports armhf Architecture][ssh-armhf-shield]
+![Supports armv7 Architecture][ssh-armv7-shield]
+![Supports aarch64 Architecture][ssh-aarch64-shield]
+![Supports amd64 Architecture][ssh-amd64-shield]
+![Supports i386 Architecture][ssh-i386-shield]
+
+SSH & Web Terminal access to your Home Assistant instance
+
+[:books: SSH & Web Terminal add-on documentation][addon-doc-ssh]
+
+### ✓ [Spotify Connect][addon-spotify]
+
+![Latest Version][spotify-version-shield]
+![Supports armhf Architecture][spotify-armhf-shield]
+![Supports armv7 Architecture][spotify-armv7-shield]
+![Supports aarch64 Architecture][spotify-aarch64-shield]
+![Supports amd64 Architecture][spotify-amd64-shield]
+![Supports i386 Architecture][spotify-i386-shield]
+
+Play Spotify music on your Home Assistant device
+
+[:books: Spotify Connect add-on documentation][addon-doc-spotify]
+
+### ✓ [TasmoAdmin][addon-tasmoadmin]
+
+![Latest Version][tasmoadmin-version-shield]
+![Supports armhf Architecture][tasmoadmin-armhf-shield]
+![Supports armv7 Architecture][tasmoadmin-armv7-shield]
+![Supports aarch64 Architecture][tasmoadmin-aarch64-shield]
+![Supports amd64 Architecture][tasmoadmin-amd64-shield]
+![Supports i386 Architecture][tasmoadmin-i386-shield]
+
+Centrally manage all your Sonoff-Tasmota devices
+
+[:books: TasmoAdmin add-on documentation][addon-doc-tasmoadmin]
+
+### ✓ [Tautulli][addon-tautulli]
+
+![Latest Version][tautulli-version-shield]
+![Supports armhf Architecture][tautulli-armhf-shield]
+![Supports armv7 Architecture][tautulli-armv7-shield]
+![Supports aarch64 Architecture][tautulli-aarch64-shield]
+![Supports amd64 Architecture][tautulli-amd64-shield]
+![Supports i386 Architecture][tautulli-i386-shield]
+
+Monitoring and tracking tool for Plex Media Server
+
+[:books: Tautulli add-on documentation][addon-doc-tautulli]
+
+### ✓ [The Lounge][addon-thelounge]
+
+![Latest Version][thelounge-version-shield]
+![Supports armhf Architecture][thelounge-armhf-shield]
+![Supports armv7 Architecture][thelounge-armv7-shield]
+![Supports aarch64 Architecture][thelounge-aarch64-shield]
+![Supports amd64 Architecture][thelounge-amd64-shield]
+![Supports i386 Architecture][thelounge-i386-shield]
+
+A self-hosted web IRC client
+
+[:books: The Lounge add-on documentation][addon-doc-thelounge]
+
+### ✓ [Tor][addon-tor]
+
+![Latest Version][tor-version-shield]
+![Supports armhf Architecture][tor-armhf-shield]
+![Supports armv7 Architecture][tor-armv7-shield]
+![Supports aarch64 Architecture][tor-aarch64-shield]
+![Supports amd64 Architecture][tor-amd64-shield]
+![Supports i386 Architecture][tor-i386-shield]
+
+Protect your privacy and access Home Assistant via Tor.
+
+[:books: Tor add-on documentation][addon-doc-tor]
+
+### ✓ [Traccar][addon-traccar]
+
+![Latest Version][traccar-version-shield]
+![Supports armhf Architecture][traccar-armhf-shield]
+![Supports armv7 Architecture][traccar-armv7-shield]
+![Supports aarch64 Architecture][traccar-aarch64-shield]
+![Supports amd64 Architecture][traccar-amd64-shield]
+![Supports i386 Architecture][traccar-i386-shield]
+
+Modern GPS Tracking Platform
+
+[:books: Traccar add-on documentation][addon-doc-traccar]
+
+### ✓ [UniFi Controller][addon-unifi]
+
+![Latest Version][unifi-version-shield]
+![Supports armhf Architecture][unifi-armhf-shield]
+![Supports armv7 Architecture][unifi-armv7-shield]
+![Supports aarch64 Architecture][unifi-aarch64-shield]
+![Supports amd64 Architecture][unifi-amd64-shield]
+![Supports i386 Architecture][unifi-i386-shield]
+
+Manage your UniFi network using a web browser
+
+[:books: UniFi Controller add-on documentation][addon-doc-unifi]
+
+### ✓ [Visual Studio Code][addon-vscode]
+
+![Latest Version][vscode-version-shield]
+![Supports armhf Architecture][vscode-armhf-shield]
+![Supports armv7 Architecture][vscode-armv7-shield]
+![Supports aarch64 Architecture][vscode-aarch64-shield]
+![Supports amd64 Architecture][vscode-amd64-shield]
+![Supports i386 Architecture][vscode-i386-shield]
+
+Fully featured VSCode experience, to edit your HA config in the browser, including auto-completion!
+
+[:books: Visual Studio Code add-on documentation][addon-doc-vscode]
+
+### ✓ [WireGuard][addon-wireguard]
+
+![Latest Version][wireguard-version-shield]
+![Supports armhf Architecture][wireguard-armhf-shield]
+![Supports armv7 Architecture][wireguard-armv7-shield]
+![Supports aarch64 Architecture][wireguard-aarch64-shield]
+![Supports amd64 Architecture][wireguard-amd64-shield]
+![Supports i386 Architecture][wireguard-i386-shield]
+
+Fast, modern, secure VPN tunnel
+
+[:books: WireGuard add-on documentation][addon-doc-wireguard]
+
+### ✓ [Z-Wave JS to MQTT][addon-zwavejs2mqtt]
+
+![Latest Version][zwavejs2mqtt-version-shield]
+![Supports armhf Architecture][zwavejs2mqtt-armhf-shield]
+![Supports armv7 Architecture][zwavejs2mqtt-armv7-shield]
+![Supports aarch64 Architecture][zwavejs2mqtt-aarch64-shield]
+![Supports amd64 Architecture][zwavejs2mqtt-amd64-shield]
+![Supports i386 Architecture][zwavejs2mqtt-i386-shield]
+
+Fully configurable Z-Wave JS to MQTT gateway and control panel
+
+[:books: Z-Wave JS to MQTT add-on documentation][addon-doc-zwavejs2mqtt]
+
+### ✓ [ZeroTier One][addon-zerotier]
+
+![Latest Version][zerotier-version-shield]
+![Supports armhf Architecture][zerotier-armhf-shield]
+![Supports armv7 Architecture][zerotier-armv7-shield]
+![Supports aarch64 Architecture][zerotier-aarch64-shield]
+![Supports amd64 Architecture][zerotier-amd64-shield]
+![Supports i386 Architecture][zerotier-i386-shield]
+
+Radically simplify your network with a virtual networking layer that works the same everywhere
+
+[:books: ZeroTier One add-on documentation][addon-doc-zerotier]
+
+### ✓ [chrony][addon-chrony]
+
+![Latest Version][chrony-version-shield]
+![Supports armhf Architecture][chrony-armhf-shield]
+![Supports armv7 Architecture][chrony-armv7-shield]
+![Supports aarch64 Architecture][chrony-aarch64-shield]
+![Supports amd64 Architecture][chrony-amd64-shield]
+![Supports i386 Architecture][chrony-i386-shield]
+
+A local NTP (Network Time Protocol) server for cameras etc.
+
+[:books: chrony add-on documentation][addon-doc-chrony]
+
+### ✓ [motionEye][addon-motioneye]
+
+![Latest Version][motioneye-version-shield]
+![Supports armhf Architecture][motioneye-armhf-shield]
+![Supports armv7 Architecture][motioneye-armv7-shield]
+![Supports aarch64 Architecture][motioneye-aarch64-shield]
+![Supports amd64 Architecture][motioneye-amd64-shield]
+![Supports i386 Architecture][motioneye-i386-shield]
+
+Simple, elegant and feature-rich CCTV/NVR for your cameras
+
+[:books: motionEye add-on documentation][addon-doc-motioneye]
+
+### ✓ [phpMyAdmin][addon-phpmyadmin]
+
+![Latest Version][phpmyadmin-version-shield]
+![Supports armhf Architecture][phpmyadmin-armhf-shield]
+![Supports armv7 Architecture][phpmyadmin-armv7-shield]
+![Supports aarch64 Architecture][phpmyadmin-aarch64-shield]
+![Supports amd64 Architecture][phpmyadmin-amd64-shield]
+![Supports i386 Architecture][phpmyadmin-i386-shield]
+
+A web interface for the official MariaDB add-on
+
+[:books: phpMyAdmin add-on documentation][addon-doc-phpmyadmin]
+
+## Releases
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
+based on the following:
+
+- ``MAJOR``: Incompatible or major changes.
+- ``MINOR``: Backwards-compatible new features and enhancements.
+- ``PATCH``: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The Home Assistant Community Add-ons [Discord Chat Server][discord]
+- The Home Assistant [Community Forum][forum].
+- The Home Assistant [Discord Chat Server][discord-ha].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also open an issue here on GitHub. Note, we use a separate
+GitHub repository for each add-on. Please ensure you are creating the issue
+on the correct GitHub repository matching the add-on.
+
+- [Open an issue for the add-on: AdGuard Home][adguard-issue]
+- [Open an issue for the add-on: AirCast][aircast-issue]
+- [Open an issue for the add-on: AirSonos][airsonos-issue]
+- [Open an issue for the add-on: AppDaemon 4][appdaemon-issue]
+- [Open an issue for the add-on: Bitwarden (Vaultwarden)][bitwarden-issue]
+- [Open an issue for the add-on: Bookstack][bookstack-issue]
+- [Open an issue for the add-on: ESPHome][esphome-issue]
+- [Open an issue for the add-on: Example][example-issue]
+- [Open an issue for the add-on: FTP][ftp-issue]
+- [Open an issue for the add-on: Folding@home][foldingathome-issue]
+- [Open an issue for the add-on: Glances][glances-issue]
+- [Open an issue for the add-on: Grafana][grafana-issue]
+- [Open an issue for the add-on: Grocy][grocy-issue]
+- [Open an issue for the add-on: Home Panel][home-panel-issue]
+- [Open an issue for the add-on: InfluxDB][influxdb-issue]
+- [Open an issue for the add-on: JupyterLab][jupyterlab-issue]
+- [Open an issue for the add-on: Log Viewer][log-viewer-issue]
+- [Open an issue for the add-on: MQTT Server & Web client][mqtt-issue]
+- [Open an issue for the add-on: Matrix][matrix-issue]
+- [Open an issue for the add-on: Network UPS Tools][nut-issue]
+- [Open an issue for the add-on: Nginx Proxy Manager][nginxproxymanager-issue]
+- [Open an issue for the add-on: Node-RED][node-red-issue]
+- [Open an issue for the add-on: Plex Media Server][plex-issue]
+- [Open an issue for the add-on: Portainer][portainer-issue]
+- [Open an issue for the add-on: SQLite Web][sqlite-web-issue]
+- [Open an issue for the add-on: SSH & Web Terminal][ssh-issue]
+- [Open an issue for the add-on: Spotify Connect][spotify-issue]
+- [Open an issue for the add-on: TasmoAdmin][tasmoadmin-issue]
+- [Open an issue for the add-on: Tautulli][tautulli-issue]
+- [Open an issue for the add-on: The Lounge][thelounge-issue]
+- [Open an issue for the add-on: Tor][tor-issue]
+- [Open an issue for the add-on: Traccar][traccar-issue]
+- [Open an issue for the add-on: UniFi Controller][unifi-issue]
+- [Open an issue for the add-on: Visual Studio Code][vscode-issue]
+- [Open an issue for the add-on: WireGuard][wireguard-issue]
+- [Open an issue for the add-on: Z-Wave JS to MQTT][zwavejs2mqtt-issue]
+- [Open an issue for the add-on: ZeroTier One][zerotier-issue]
+- [Open an issue for the add-on: chrony][chrony-issue]
+- [Open an issue for the add-on: motionEye][motioneye-issue]
+- [Open an issue for the add-on: phpMyAdmin][phpmyadmin-issue]
+
+For a general repository issue or add-on ideas [open an issue here][issue]
+
+## Contributing
+
+This is an active open-source project. We are always open to people who want to
+use the code or contribute to it.
+
+We have set up a separate document containing our
+[contribution guidelines](CONTRIBUTING.md).
+
+Thank you for being involved! :heart_eyes:
+
+## Adding a new add-on
+
+We are currently not accepting third party add-ons to this repository.
+
+For questions, please contact [Franck Nijhof][frenck]:
+
+- Drop him an email: frenck@addons.community
+- Chat with him on [Discord Chat][discord]
+- Message him via the forums: [frenck][forum-frenck]
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[addon-adguard]: https://github.com/hassio-addons/addon-adguard-home/tree/v4.1.6
+[addon-doc-adguard]: https://github.com/hassio-addons/addon-adguard-home/blob/v4.1.6/README.md
+[adguard-issue]: https://github.com/hassio-addons/addon-adguard-home/issues
+[adguard-version-shield]: https://img.shields.io/badge/version-v4.1.6-blue.svg
+[adguard-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[adguard-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[adguard-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[adguard-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[adguard-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-aircast]: https://github.com/hassio-addons/addon-aircast/tree/v3.1.1
+[addon-doc-aircast]: https://github.com/hassio-addons/addon-aircast/blob/v3.1.1/README.md
+[aircast-issue]: https://github.com/hassio-addons/addon-aircast/issues
+[aircast-version-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg
+[aircast-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[aircast-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[aircast-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[aircast-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[aircast-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-airsonos]: https://github.com/hassio-addons/addon-airsonos/tree/v3.1.1
+[addon-doc-airsonos]: https://github.com/hassio-addons/addon-airsonos/blob/v3.1.1/README.md
+[airsonos-issue]: https://github.com/hassio-addons/addon-airsonos/issues
+[airsonos-version-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg
+[airsonos-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[airsonos-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[airsonos-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[airsonos-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[airsonos-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-appdaemon]: https://github.com/hassio-addons/addon-appdaemon/tree/v0.6.2
+[addon-doc-appdaemon]: https://github.com/hassio-addons/addon-appdaemon/blob/v0.6.2/README.md
+[appdaemon-issue]: https://github.com/hassio-addons/addon-appdaemon/issues
+[appdaemon-version-shield]: https://img.shields.io/badge/version-v0.6.2-blue.svg
+[appdaemon-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[appdaemon-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[appdaemon-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[appdaemon-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[appdaemon-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-bitwarden]: https://github.com/hassio-addons/addon-bitwarden/tree/v0.11.0
+[addon-doc-bitwarden]: https://github.com/hassio-addons/addon-bitwarden/blob/v0.11.0/README.md
+[bitwarden-issue]: https://github.com/hassio-addons/addon-bitwarden/issues
+[bitwarden-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[bitwarden-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[bitwarden-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[bitwarden-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[bitwarden-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[bitwarden-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-bookstack]: https://github.com/hassio-addons/addon-bookstack/tree/v0.12.0
+[addon-doc-bookstack]: https://github.com/hassio-addons/addon-bookstack/blob/v0.12.0/README.md
+[bookstack-issue]: https://github.com/hassio-addons/addon-bookstack/issues
+[bookstack-version-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg
+[bookstack-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[bookstack-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[bookstack-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[bookstack-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[bookstack-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-esphome]: https://github.com/esphome/hassio/tree/v1.19.4
+[addon-doc-esphome]: https://github.com/esphome/hassio/blob/v1.19.4/README.md
+[esphome-issue]: https://github.com/esphome/hassio/issues
+[esphome-version-shield]: https://img.shields.io/badge/version-v1.19.4-blue.svg
+[esphome-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[esphome-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[esphome-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[esphome-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[esphome-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-example]: https://github.com/hassio-addons/addon-example/tree/v4.2.0
+[addon-doc-example]: https://github.com/hassio-addons/addon-example/blob/v4.2.0/README.md
+[example-issue]: https://github.com/hassio-addons/addon-example/issues
+[example-version-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg
+[example-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[example-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[example-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[example-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[example-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-ftp]: https://github.com/hassio-addons/addon-ftp/tree/v4.2.0
+[addon-doc-ftp]: https://github.com/hassio-addons/addon-ftp/blob/v4.2.0/README.md
+[ftp-issue]: https://github.com/hassio-addons/addon-ftp/issues
+[ftp-version-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg
+[ftp-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[ftp-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[ftp-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[ftp-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[ftp-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-foldingathome]: https://github.com/hassio-addons/addon-foldingathome/tree/v0.2.0
+[addon-doc-foldingathome]: https://github.com/hassio-addons/addon-foldingathome/blob/v0.2.0/README.md
+[foldingathome-issue]: https://github.com/hassio-addons/addon-foldingathome/issues
+[foldingathome-version-shield]: https://img.shields.io/badge/version-v0.2.0-blue.svg
+[foldingathome-aarch64-shield]: https://img.shields.io/badge/aarch64-no-red.svg
+[foldingathome-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[foldingathome-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[foldingathome-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg
+[foldingathome-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-glances]: https://github.com/hassio-addons/addon-glances/tree/v0.12.2
+[addon-doc-glances]: https://github.com/hassio-addons/addon-glances/blob/v0.12.2/README.md
+[glances-issue]: https://github.com/hassio-addons/addon-glances/issues
+[glances-version-shield]: https://img.shields.io/badge/version-v0.12.2-blue.svg
+[glances-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[glances-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[glances-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[glances-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[glances-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-grafana]: https://github.com/hassio-addons/addon-grafana/tree/v7.0.1
+[addon-doc-grafana]: https://github.com/hassio-addons/addon-grafana/blob/v7.0.1/README.md
+[grafana-issue]: https://github.com/hassio-addons/addon-grafana/issues
+[grafana-version-shield]: https://img.shields.io/badge/version-v7.0.1-blue.svg
+[grafana-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[grafana-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[grafana-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[grafana-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[grafana-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-grocy]: https://github.com/hassio-addons/addon-grocy/tree/v0.14.0
+[addon-doc-grocy]: https://github.com/hassio-addons/addon-grocy/blob/v0.14.0/README.md
+[grocy-issue]: https://github.com/hassio-addons/addon-grocy/issues
+[grocy-version-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg
+[grocy-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[grocy-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[grocy-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[grocy-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[grocy-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-home-panel]: https://github.com/hassio-addons/addon-home-panel/tree/v2.2.1
+[addon-doc-home-panel]: https://github.com/hassio-addons/addon-home-panel/blob/v2.2.1/README.md
+[home-panel-issue]: https://github.com/hassio-addons/addon-home-panel/issues
+[home-panel-version-shield]: https://img.shields.io/badge/version-v2.2.1-blue.svg
+[home-panel-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[home-panel-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[home-panel-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[home-panel-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[home-panel-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-influxdb]: https://github.com/hassio-addons/addon-influxdb/tree/v4.1.1
+[addon-doc-influxdb]: https://github.com/hassio-addons/addon-influxdb/blob/v4.1.1/README.md
+[influxdb-issue]: https://github.com/hassio-addons/addon-influxdb/issues
+[influxdb-version-shield]: https://img.shields.io/badge/version-v4.1.1-blue.svg
+[influxdb-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[influxdb-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[influxdb-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[influxdb-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[influxdb-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-jupyterlab]: https://github.com/hassio-addons/addon-jupyterlab/tree/v0.5.0
+[addon-doc-jupyterlab]: https://github.com/hassio-addons/addon-jupyterlab/blob/v0.5.0/README.md
+[jupyterlab-issue]: https://github.com/hassio-addons/addon-jupyterlab/issues
+[jupyterlab-version-shield]: https://img.shields.io/badge/version-v0.5.0-blue.svg
+[jupyterlab-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[jupyterlab-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[jupyterlab-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[jupyterlab-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg
+[jupyterlab-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-log-viewer]: https://github.com/hassio-addons/addon-log-viewer/tree/v0.11.0
+[addon-doc-log-viewer]: https://github.com/hassio-addons/addon-log-viewer/blob/v0.11.0/README.md
+[log-viewer-issue]: https://github.com/hassio-addons/addon-log-viewer/issues
+[log-viewer-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[log-viewer-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[log-viewer-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[log-viewer-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[log-viewer-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[log-viewer-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-mqtt]: https://github.com/hassio-addons/addon-mqtt/tree/v1.2.0
+[addon-doc-mqtt]: https://github.com/hassio-addons/addon-mqtt/blob/v1.2.0/README.md
+[mqtt-issue]: https://github.com/hassio-addons/addon-mqtt/issues
+[mqtt-version-shield]: https://img.shields.io/badge/version-v1.2.0-blue.svg
+[mqtt-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[mqtt-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[mqtt-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[mqtt-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[mqtt-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-matrix]: https://github.com/hassio-addons/addon-matrix/tree/v0.10.0
+[addon-doc-matrix]: https://github.com/hassio-addons/addon-matrix/blob/v0.10.0/README.md
+[matrix-issue]: https://github.com/hassio-addons/addon-matrix/issues
+[matrix-version-shield]: https://img.shields.io/badge/version-v0.10.0-blue.svg
+[matrix-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[matrix-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[matrix-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[matrix-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[matrix-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-nut]: https://github.com/hassio-addons/addon-nut/tree/v0.7.0
+[addon-doc-nut]: https://github.com/hassio-addons/addon-nut/blob/v0.7.0/README.md
+[nut-issue]: https://github.com/hassio-addons/addon-nut/issues
+[nut-version-shield]: https://img.shields.io/badge/version-v0.7.0-blue.svg
+[nut-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[nut-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[nut-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[nut-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[nut-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-nginxproxymanager]: https://github.com/hassio-addons/addon-nginx-proxy-manager/tree/v0.11.0
+[addon-doc-nginxproxymanager]: https://github.com/hassio-addons/addon-nginx-proxy-manager/blob/v0.11.0/README.md
+[nginxproxymanager-issue]: https://github.com/hassio-addons/addon-nginx-proxy-manager/issues
+[nginxproxymanager-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[nginxproxymanager-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[nginxproxymanager-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[nginxproxymanager-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[nginxproxymanager-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[nginxproxymanager-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-node-red]: https://github.com/hassio-addons/addon-node-red/tree/v9.1.4
+[addon-doc-node-red]: https://github.com/hassio-addons/addon-node-red/blob/v9.1.4/README.md
+[node-red-issue]: https://github.com/hassio-addons/addon-node-red/issues
+[node-red-version-shield]: https://img.shields.io/badge/version-v9.1.4-blue.svg
+[node-red-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[node-red-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[node-red-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[node-red-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[node-red-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-plex]: https://github.com/hassio-addons/addon-plex/tree/v2.6.1
+[addon-doc-plex]: https://github.com/hassio-addons/addon-plex/blob/v2.6.1/README.md
+[plex-issue]: https://github.com/hassio-addons/addon-plex/issues
+[plex-version-shield]: https://img.shields.io/badge/version-v2.6.1-blue.svg
+[plex-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[plex-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[plex-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[plex-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[plex-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-portainer]: https://github.com/hassio-addons/addon-portainer/tree/v1.5.1
+[addon-doc-portainer]: https://github.com/hassio-addons/addon-portainer/blob/v1.5.1/README.md
+[portainer-issue]: https://github.com/hassio-addons/addon-portainer/issues
+[portainer-version-shield]: https://img.shields.io/badge/version-v1.5.1-blue.svg
+[portainer-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[portainer-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[portainer-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[portainer-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[portainer-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-sqlite-web]: https://github.com/hassio-addons/addon-sqlite-web/tree/v3.1.0
+[addon-doc-sqlite-web]: https://github.com/hassio-addons/addon-sqlite-web/blob/v3.1.0/README.md
+[sqlite-web-issue]: https://github.com/hassio-addons/addon-sqlite-web/issues
+[sqlite-web-version-shield]: https://img.shields.io/badge/version-v3.1.0-blue.svg
+[sqlite-web-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[sqlite-web-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[sqlite-web-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[sqlite-web-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[sqlite-web-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-ssh]: https://github.com/hassio-addons/addon-ssh/tree/v8.2.4
+[addon-doc-ssh]: https://github.com/hassio-addons/addon-ssh/blob/v8.2.4/README.md
+[ssh-issue]: https://github.com/hassio-addons/addon-ssh/issues
+[ssh-version-shield]: https://img.shields.io/badge/version-v8.2.4-blue.svg
+[ssh-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[ssh-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[ssh-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[ssh-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[ssh-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-spotify]: https://github.com/hassio-addons/addon-spotify-connect/tree/v0.8.2
+[addon-doc-spotify]: https://github.com/hassio-addons/addon-spotify-connect/blob/v0.8.2/README.md
+[spotify-issue]: https://github.com/hassio-addons/addon-spotify-connect/issues
+[spotify-version-shield]: https://img.shields.io/badge/version-v0.8.2-blue.svg
+[spotify-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[spotify-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[spotify-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[spotify-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[spotify-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-tasmoadmin]: https://github.com/hassio-addons/addon-tasmoadmin/tree/v0.15.0
+[addon-doc-tasmoadmin]: https://github.com/hassio-addons/addon-tasmoadmin/blob/v0.15.0/README.md
+[tasmoadmin-issue]: https://github.com/hassio-addons/addon-tasmoadmin/issues
+[tasmoadmin-version-shield]: https://img.shields.io/badge/version-v0.15.0-blue.svg
+[tasmoadmin-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[tasmoadmin-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[tasmoadmin-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[tasmoadmin-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[tasmoadmin-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-tautulli]: https://github.com/hassio-addons/addon-tautulli/tree/v2.2.3
+[addon-doc-tautulli]: https://github.com/hassio-addons/addon-tautulli/blob/v2.2.3/README.md
+[tautulli-issue]: https://github.com/hassio-addons/addon-tautulli/issues
+[tautulli-version-shield]: https://img.shields.io/badge/version-v2.2.3-blue.svg
+[tautulli-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[tautulli-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[tautulli-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[tautulli-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[tautulli-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-thelounge]: https://github.com/hassio-addons/addon-thelounge/tree/v0.12.1
+[addon-doc-thelounge]: https://github.com/hassio-addons/addon-thelounge/blob/v0.12.1/README.md
+[thelounge-issue]: https://github.com/hassio-addons/addon-thelounge/issues
+[thelounge-version-shield]: https://img.shields.io/badge/version-v0.12.1-blue.svg
+[thelounge-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[thelounge-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[thelounge-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[thelounge-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[thelounge-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-tor]: https://github.com/hassio-addons/addon-tor/tree/v3.0.5
+[addon-doc-tor]: https://github.com/hassio-addons/addon-tor/blob/v3.0.5/README.md
+[tor-issue]: https://github.com/hassio-addons/addon-tor/issues
+[tor-version-shield]: https://img.shields.io/badge/version-v3.0.5-blue.svg
+[tor-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[tor-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[tor-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[tor-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[tor-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-traccar]: https://github.com/hassio-addons/addon-traccar/tree/v0.12.0
+[addon-doc-traccar]: https://github.com/hassio-addons/addon-traccar/blob/v0.12.0/README.md
+[traccar-issue]: https://github.com/hassio-addons/addon-traccar/issues
+[traccar-version-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg
+[traccar-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[traccar-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[traccar-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[traccar-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[traccar-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-unifi]: https://github.com/hassio-addons/addon-unifi/tree/v0.23.1
+[addon-doc-unifi]: https://github.com/hassio-addons/addon-unifi/blob/v0.23.1/README.md
+[unifi-issue]: https://github.com/hassio-addons/addon-unifi/issues
+[unifi-version-shield]: https://img.shields.io/badge/version-v0.23.1-blue.svg
+[unifi-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[unifi-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[unifi-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[unifi-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[unifi-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-vscode]: https://github.com/hassio-addons/addon-vscode/tree/v3.4.1
+[addon-doc-vscode]: https://github.com/hassio-addons/addon-vscode/blob/v3.4.1/README.md
+[vscode-issue]: https://github.com/hassio-addons/addon-vscode/issues
+[vscode-version-shield]: https://img.shields.io/badge/version-v3.4.1-blue.svg
+[vscode-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[vscode-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[vscode-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
+[vscode-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg
+[vscode-i386-shield]: https://img.shields.io/badge/i386-no-red.svg
+[addon-wireguard]: https://github.com/hassio-addons/addon-wireguard/tree/v0.5.1
+[addon-doc-wireguard]: https://github.com/hassio-addons/addon-wireguard/blob/v0.5.1/README.md
+[wireguard-issue]: https://github.com/hassio-addons/addon-wireguard/issues
+[wireguard-version-shield]: https://img.shields.io/badge/version-v0.5.1-blue.svg
+[wireguard-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[wireguard-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[wireguard-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[wireguard-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[wireguard-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-zwavejs2mqtt]: https://github.com/hassio-addons/addon-zwavejs2mqtt/tree/v0.21.0
+[addon-doc-zwavejs2mqtt]: https://github.com/hassio-addons/addon-zwavejs2mqtt/blob/v0.21.0/README.md
+[zwavejs2mqtt-issue]: https://github.com/hassio-addons/addon-zwavejs2mqtt/issues
+[zwavejs2mqtt-version-shield]: https://img.shields.io/badge/version-v0.21.0-blue.svg
+[zwavejs2mqtt-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[zwavejs2mqtt-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[zwavejs2mqtt-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[zwavejs2mqtt-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[zwavejs2mqtt-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-zerotier]: https://github.com/hassio-addons/addon-zerotier/tree/v0.11.0
+[addon-doc-zerotier]: https://github.com/hassio-addons/addon-zerotier/blob/v0.11.0/README.md
+[zerotier-issue]: https://github.com/hassio-addons/addon-zerotier/issues
+[zerotier-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[zerotier-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[zerotier-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[zerotier-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[zerotier-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[zerotier-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-chrony]: https://github.com/hassio-addons/addon-chrony/tree/v2.2.0
+[addon-doc-chrony]: https://github.com/hassio-addons/addon-chrony/blob/v2.2.0/README.md
+[chrony-issue]: https://github.com/hassio-addons/addon-chrony/issues
+[chrony-version-shield]: https://img.shields.io/badge/version-v2.2.0-blue.svg
+[chrony-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[chrony-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[chrony-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[chrony-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[chrony-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-motioneye]: https://github.com/hassio-addons/addon-motioneye/tree/v0.14.0
+[addon-doc-motioneye]: https://github.com/hassio-addons/addon-motioneye/blob/v0.14.0/README.md
+[motioneye-issue]: https://github.com/hassio-addons/addon-motioneye/issues
+[motioneye-version-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg
+[motioneye-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[motioneye-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[motioneye-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[motioneye-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[motioneye-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[addon-phpmyadmin]: https://github.com/hassio-addons/addon-phpmyadmin/tree/v0.4.2
+[addon-doc-phpmyadmin]: https://github.com/hassio-addons/addon-phpmyadmin/blob/v0.4.2/README.md
+[phpmyadmin-issue]: https://github.com/hassio-addons/addon-phpmyadmin/issues
+[phpmyadmin-version-shield]: https://img.shields.io/badge/version-v0.4.2-blue.svg
+[phpmyadmin-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[phpmyadmin-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[phpmyadmin-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[phpmyadmin-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
+[phpmyadmin-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
+[awesome-shield]: https://img.shields.io/badge/awesome%3F-yes-brightgreen.svg
+[awesome]: https://awesome-ha.com
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-frenck]: https://community.home-assistant.io/u/frenck/?u=frenck
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io?u=frenck
+[frenck]: https://github.com/frenck
+[gitlabci-shield]: https://gitlab.com/hassio-addons/repository/badges/master/pipeline.svg
+[gitlabci]: https://gitlab.com/hassio-addons/repository/pipelines
+[issue]: https://github.com/hassio-addons/repository/issues
+[license-shield]: https://img.shields.io/github/license/hassio-addons/repository.svg
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[reddit]: https://reddit.com/r/homeassistant
+[semver]: http://semver.org/spec/v2.0.0.html
\ No newline at end of file
diff --git a/aircast/CHANGELOG.md b/aircast/CHANGELOG.md
new file mode 100644
index 0000000..5e478fe
--- /dev/null
+++ b/aircast/CHANGELOG.md
@@ -0,0 +1,15 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#74)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#75)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#76)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#77)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#78)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#79)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#80)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#81)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#82)
+- ⬆️ Upgrades add-on base image to v4.2.1 @frenck (#84)
+- ⬆️ Upgrades AirConnect to 0.2.50.5 @frenck (#85)
diff --git a/aircast/DOCS.md b/aircast/DOCS.md
new file mode 100644
index 0000000..f022475
--- /dev/null
+++ b/aircast/DOCS.md
@@ -0,0 +1,231 @@
+# Home Assistant Community Add-on: AirCast
+
+Apple devices use AirPlay to send audio to other devices, but this is not
+compatible with Google's Chromecast. This add-on tries to solve this
+compatibility gap.
+
+It detects Chromecast players in your network and creates virtual AirPlay
+devices for each of them. It acts as a bridge between the AirPlay client
+and the real Chromecast player.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the “AirCast” add-on in the Supervisor add-on store
+ and install it.
+1. Install the "AirCast" add-on.
+1. Start the "AirCast" add-on
+1. Check the logs of the "AirCast" add-on to see if everything went well.
+
+After ~30 seconds you should see some log messages appear in the add-on log.
+Using your iOS/Mac/iTunes/Airfoil/other clients, you should now see new AirPlay
+devices and can try to play audio to them.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+address: 192.168.1.234
+latency_rtp: 5000
+latency_http: 0
+drift: true
+```
+
+**Note**: _This is just an example, don't copy and past it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+These log level also affects the log levels of AirCast server.
+
+### Option: `address`
+
+This option allows you to specify the IP address the AirCast server needs to
+bind to. It will automatically detect the interface to use when this option is
+left empty. Nevertheless, it might get detected wrong (e.g., in case you have
+multiple network interfaces).
+
+### Option: `latency_rtp`
+
+Allows you to tweak the buffering, which is needed when the audio is stuttering
+(e.g., low-quality network). This option specifies the number of ms the addon
+has to buffer the RTP audio (AirPlay). Setting this value below 500ms is not
+recommended! Setting the value to `0` causes the addon the get the value from
+AirPlay.
+
+### Option: `latency_http`
+
+Allows you to tweak the buffering, which is needed when the audio is stuttering
+(e.g., low-quality network). This option specifies the number of ms the addon
+has to buffer the HTTP audio.
+
+**Note**: This option usually is not needed and can be left to `0` in most
+cases.
+
+### Option: `drift`
+
+Set to `true` to let timing reference drift (no click).
+
+## Latency options explained
+
+These bridges receive real-time "synchronous" audio from the AirPlay controller
+in the format of RTP frames and forward it to the Chromecast player in an HTTP
+"asynchronous" continuous audio binary format. In other words,
+the AirPlay clients "push" the audio using RTP and the Chromecast players
+"pull" the audio using an HTTP GET request.
+
+A player using HTTP to get its audio expects to receive an initial large
+portion of audio as the response to its GET and this creates a large enough
+buffer to handle most further network congestion/delays. The rest of the audio
+transmission is regulated by the player using TCP flow control. However, when
+the source is an AirPlay RTP device, there is no such significant portion of
+audio available in advance to be sent to the Player, as the audio comes to the
+bridge in real time. Every 8ms, an RTP frame is received and is immediately
+forwarded as the continuation of the HTTP body. If the Chromecast players
+start to play immediately the first received audio sample, expecting an initial
+burst to follow, then any network congestion delaying RTP audio will starve
+the player and create shuttering.
+
+The `latency_http` option allows a certain amount of silence frames to be sent
+to the Chromecast player, in a burst at the beginning. Then, while this
+"artificial" silence is being played, it is possible for the bridge to build
+a buffer of RTP frames that will then hide network delays that might happen
+in further RTP frames transmission. This delays the start of the playback
+by `latency_http` ms.
+
+However, RTP frames are transmitted using UDP, which means there is no guarantee
+of delivery, so frames might be lost from time to time
+(often happens on WiFi networks). To allow detection of lost frames, they are
+numbered sequentially (1,2 ... n) so every time two received frames are not
+consecutive, the missing ones can be asked again by the AirPlay receiver.
+
+Typically, the bridge forwards immediately every RTP frame using HTTP and again,
+in HTTP, the notion of frame numbers does not exist, it is just the continuous
+binary audio. So it is not possible to send audio non-sequentially when using
+HTTP.
+
+For example, if received RTP frames are numbered 1,2,3,6, this bridge will
+forward (once decoded and transformed into raw audio) 1,2,3 immediately using
+HTTP but when it receives 6, it will re-ask for 4 and 5 to be resent and
+hold 6 while waiting (if 6 was transmitted immediately, the Chromecast
+will play 1,2,3,6 ... not nice).
+
+The `latency_rtp` option sets for how long frame 6 shall be held before adding
+two silence frames for 4 and 5 and send sending 4,5,6. Obviously, if this delay
+is larger than the buffer in the Chromecast player, playback will stop by
+lack of audio. Note that `latency_rtp` does not delay playback start.
+
+> **Note**: `latency_rtp` and `latency_http` could have been merged into a
+> single `latency` parameter which would have set the max RTP frames holding time
+> as well as the duration of the initial additional silence (delay),
+> however, all Chromecast devices do properly their own buffering of HTTP audio
+> (i.e., they wait until they have received a certain amount of audio before
+> starting to play), then adding silence would have introduced an extra
+> unnecessary delay in playback.
+
+## Tweaking Aircast
+
+Aircast creates a configuration file called `aircast.xml` in your Home
+Assistant configuration directory. This file allows you to tweak each device
+separately. Every time it finds a new device, it will be added to that file.
+
+> **NOTE**: It is HIGHLY recommended to stop the addon before making changes
+> to the configuration file manually.
+
+## Known issues and limitations
+
+- This add-on does support ARM-based devices, nevertheless, they must
+ at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported).
+- The configuration file of AirConnect (used by this add-on) is not
+ exposed to the user. We plan on adding that feature in a future release.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-aircast/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[docs]: https://github.com/hassio-addons/addon-aircast/blob/main/aircast/DOCS.md
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-aircast/36742?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-aircast/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-aircast/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/aircast/README.md b/aircast/README.md
new file mode 100644
index 0000000..09af32c
--- /dev/null
+++ b/aircast/README.md
@@ -0,0 +1,34 @@
+# Home Assistant Community Add-on: AirCast
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+AirPlay capabilities for your Chromecast players.
+
+## About
+
+Apple devices use AirPlay to send audio to other devices, but this is not
+compatible with Google's Chromecast. This add-on tries to solve this
+compatibility gap.
+
+It detects Chromecast players in your network and creates virtual AirPlay
+devices for each of them. It acts as a bridge between the AirPlay client
+and the real Chromecast player.
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-aircast/36742?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-aircast/tree/v3.1.1
\ No newline at end of file
diff --git a/aircast/config.json b/aircast/config.json
new file mode 100644
index 0000000..ce03f9a
--- /dev/null
+++ b/aircast/config.json
@@ -0,0 +1,33 @@
+{
+ "name": "AirCast",
+ "version": "3.1.1",
+ "slug": "aircast",
+ "description": "AirPlay capabilities for your Chromecast devices.",
+ "url": "https://github.com/hassio-addons/addon-aircast",
+ "startup": "services",
+ "init": false,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "i386"
+ ],
+ "hassio_api": true,
+ "host_network": true,
+ "map": [
+ "config:rw"
+ ],
+ "options": {
+ "latency_rtp": 0,
+ "latency_http": 0,
+ "drift": false
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "address": "str?",
+ "latency_rtp": "int",
+ "latency_http": "int",
+ "drift": "bool"
+ },
+ "image": "ghcr.io/hassio-addons/aircast/{arch}"
+}
\ No newline at end of file
diff --git a/aircast/icon.png b/aircast/icon.png
new file mode 100644
index 0000000..6934a2c
Binary files /dev/null and b/aircast/icon.png differ
diff --git a/aircast/logo.png b/aircast/logo.png
new file mode 100644
index 0000000..4733d11
Binary files /dev/null and b/aircast/logo.png differ
diff --git a/aircast/translations/en.yaml b/aircast/translations/en.yaml
new file mode 100644
index 0000000..840f072
--- /dev/null
+++ b/aircast/translations/en.yaml
@@ -0,0 +1,29 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ address:
+ name: Address
+ description: >-
+ Allows you to specify the IP address the AirCast server needs to
+ bind to.
+ latency_rtp:
+ name: RTP Latency
+ description: >-
+ Allows you to tweak the buffering, which is needed when the audio is
+ stuttering (e.g., low-quality network). This option specifies the number
+ of ms the add-on has to buffer the RTP audio (AirPlay). Setting this value
+ below 500ms is not recommended! Setting the value to 0 makes the add-on
+ to get the value from AirPlay.
+ latency_http:
+ name: HTTP Latency
+ description: >-
+ Allows you to tweak the buffering, which is needed when the audio is
+ stuttering (e.g., low-quality network). This option specifies the number
+ of ms the add-on has to buffer the HTTP audio.
+ drift:
+ name: Drift
+ description: >-
+ Allow to let timing reference drift (no click).
diff --git a/airsonos/CHANGELOG.md b/airsonos/CHANGELOG.md
new file mode 100644
index 0000000..664a828
--- /dev/null
+++ b/airsonos/CHANGELOG.md
@@ -0,0 +1,15 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#58)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#59)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#60)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#61)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#62)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#63)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#65)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#64)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#66)
+- ⬆️ Upgrades add-on base image to v4.2.1 @frenck (#70)
+- ⬆️ Upgrades AirConnect to 0.2.50.5 @frenck (#71)
diff --git a/airsonos/DOCS.md b/airsonos/DOCS.md
new file mode 100644
index 0000000..6462cc0
--- /dev/null
+++ b/airsonos/DOCS.md
@@ -0,0 +1,245 @@
+# Home Assistant Community Add-on: AirSonos
+
+Apple devices use AirPlay to send audio to other devices, but this is not
+compatible with Sonos players. This add-on tries to solve this
+compatibility gap.
+
+It detects Sonos players in your network and creates virtual AirPlay
+devices for each of them. It acts as a bridge between the AirPlay client
+and the real Sonos device.
+
+Since Sonos uses UPnP, the add-on might also work for other UPnP players
+(e.g., newer Samsung televisions).
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the “AirSonos” add-on in the Supervisor add-on store
+ and install it.
+1. Start the "AirSonos" add-on
+1. Check the logs of the "AirSonos" add-on to see if everything went well.
+
+After ~30 seconds you should see some log messages appear in the add-on log.
+Using your iOS/Mac/iTunes/Airfoil/other clients, you should now see new AirPlay
+devices and can try to play audio to them.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+address: 192.168.1.234
+port: 49152
+latency_rtp: 1000
+latency_http: 2000
+drift: true
+```
+
+**Note**: _This is just an example, don't copy and past it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+These log level also affects the log levels of AirSonos server.
+
+### Option: `address`
+
+This option allows you to specify the IP address the AirSonos server needs to
+bind to. It will automatically detect the interface to use when this option is
+left empty. Nevertheless, it might get detected wrong (e.g., in case you have
+multiple network interfaces).
+
+### Option: `port`
+
+The port the AirSonos server will expose itself on. The default `49152` should
+be fine in most cases. Only change this if you really have to.
+
+### Option: `latency_rtp`
+
+Allows you to tweak the buffering, which is needed when the audio is stuttering
+(e.g., low-quality network). This option specifies the number of ms the addon
+has to buffer the RTP audio (AirPlay). Setting this value below 500ms is not
+recommended!
+
+### Option: `latency_http`
+
+Allows you to tweak the buffering, which is needed when the audio is stuttering
+(e.g., low-quality network). This option specifies the number of ms the addon
+has to buffer the HTTP audio.
+
+### Option: `drift`
+
+Set to `true` to let timing reference drift (no click).
+
+## Sonos hints and limitations
+
+When a Sonos group is created, only the master of that group will appear as
+an AirPlay player and others will be removed if they were already detected.
+If the group is later split, then individual players will re-appear.
+Each detection cycle takes ~30 seconds.
+
+Volume is set for the whole group, but the same level applies to all members.
+If you need to change individual volumes, you need to use a Sonos native
+controller. **Note**: these will be overridden if the group volume is later
+changed again from an AirPlay device.
+
+## Latency options explained
+
+These bridges receive real-time "synchronous" audio from the AirPlay controller
+in the format of RTP frames and forward it to the Sonos player in an HTTP
+"asynchronous" continuous audio binary format. In other words,
+the AirPlay clients "push" the audio using RTP and the Sonos players
+"pull" the audio using an HTTP GET request.
+
+A player using HTTP to get its audio expects to receive an initial large
+portion of audio as the response to its GET and this creates a large enough
+buffer to handle most further network congestion/delays. The rest of the audio
+transmission is regulated by the player using TCP flow control. However, when
+the source is an AirPlay RTP device, there is no such significant portion of
+audio available in advance to be sent to the Player, as the audio comes to the
+bridge in real time. Every 8ms, an RTP frame is received and is immediately
+forwarded as the continuation of the HTTP body. If the Sonos player
+starts to play immediately the first received audio sample, expecting an initial
+burst to follow, then any network congestion delaying RTP audio will starve
+the player and create shuttering.
+
+The `latency_http` option allows a certain amount of silence frames to be sent
+to the Sonos player, in a burst at the beginning. Then, while this
+"artificial" silence is being played, it is possible for the bridge to build
+a buffer of RTP frames that will then hide network delays that might happen
+in further RTP frames transmission. This delays the start of the playback
+by `latency_http` ms.
+
+However, RTP frames are transmitted using UDP, which means there is no guarantee
+of delivery, so frames might be lost from time to time
+(often happens on WiFi networks). To allow detection of lost frames, they are
+numbered sequentially (1,2 ... n) so every time two received frames are not
+consecutive, the missing ones can be asked again by the AirPlay receiver.
+
+Typically, the bridge forwards immediately every RTP frame using HTTP and again,
+in HTTP, the notion of frame numbers does not exist, it is just the continuous
+binary audio. So it is not possible to send audio non-sequentially when using
+HTTP.
+
+For example, if received RTP frames are numbered 1,2,3,6, this bridge will
+forward (once decoded and transformed into raw audio) 1,2,3 immediately using
+HTTP but when it receives 6, it will re-ask for 4 and 5 to be resent and
+hold 6 while waiting (if 6 was transmitted immediately, the Sonos
+will play 1,2,3,6 ... not nice).
+
+The `latency_rtp` option sets for how long frame 6 shall be held before adding
+two silence frames for 4 and 5 and send sending 4,5,6. Obviously, if this delay
+is larger than the buffer in the Sonos player, playback will stop by
+lack of audio. Note that `latency_rtp` does not delay playback start.
+
+> **Note**: `latency_rtp` and `latency_http` could have been merged into a
+> single `latency` parameter which would have set the max RTP frames holding time
+> as well as the duration of the initial additional silence (delay),
+> however, all Sonos devices do properly their own buffering of HTTP audio
+> (i.e., they wait until they have received a certain amount of audio before
+> starting to play), then adding silence would have introduced an extra
+> unnecessary delay in playback.
+
+## Tweaking AirSonos
+
+AirSonos creates a configuration file called `airsonos.xml` in your Home
+Assistant configuration directory. This file allows you to tweak each device
+separately. Every time it finds a new device, it will be added to that file.
+
+> **NOTE**: It is HIGHLY recommended to stop the addon before making changes
+> to the configuration file manually.
+
+## Known issues and limitations
+
+- This add-on does support ARM-based devices, nevertheless, they must
+ at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported).
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[commits]: https://github.com/hassio-addons/addon-airsonos/commits/main
+[contributors]: https://github.com/hassio-addons/addon-airsonos/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-airsonos/36796?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-airsonos/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-airsonos/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/airsonos/README.md b/airsonos/README.md
new file mode 100644
index 0000000..318c498
--- /dev/null
+++ b/airsonos/README.md
@@ -0,0 +1,37 @@
+# Home Assistant Community Add-on: AirSonos
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+AirPlay capabilities for your Sonos (and UPnP) players.
+
+## About
+
+Apple devices use AirPlay to send audio to other devices, but this is not
+compatible with Sonos players. This add-on tries to solve this
+compatibility gap.
+
+It detects Sonos players in your network and creates virtual AirPlay
+devices for each of them. It acts as a bridge between the AirPlay client
+and the real Sonos device.
+
+Since Sonos uses UPnP, the add-on might also work for other UPnP players
+(e.g., newer Samsung televisions).
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-airsonos/36796?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-airsonos/tree/v3.1.1
\ No newline at end of file
diff --git a/airsonos/config.json b/airsonos/config.json
new file mode 100644
index 0000000..a9310fb
--- /dev/null
+++ b/airsonos/config.json
@@ -0,0 +1,35 @@
+{
+ "name": "AirSonos",
+ "version": "3.1.1",
+ "slug": "airsonos",
+ "description": "AirPlay capabilities for your Sonos (and UPnP) devices.",
+ "url": "https://github.com/hassio-addons/addon-airsonos",
+ "startup": "services",
+ "init": false,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "i386"
+ ],
+ "hassio_api": true,
+ "host_network": true,
+ "map": [
+ "config:rw"
+ ],
+ "options": {
+ "port": 49152,
+ "latency_rtp": 1000,
+ "latency_http": 2000,
+ "drift": false
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "address": "str?",
+ "port": "port",
+ "latency_rtp": "int",
+ "latency_http": "int",
+ "drift": "bool"
+ },
+ "image": "ghcr.io/hassio-addons/airsonos/{arch}"
+}
\ No newline at end of file
diff --git a/airsonos/icon.png b/airsonos/icon.png
new file mode 100644
index 0000000..17241be
Binary files /dev/null and b/airsonos/icon.png differ
diff --git a/airsonos/logo.png b/airsonos/logo.png
new file mode 100644
index 0000000..78b48d4
Binary files /dev/null and b/airsonos/logo.png differ
diff --git a/airsonos/translations/en.yaml b/airsonos/translations/en.yaml
new file mode 100644
index 0000000..6eae097
--- /dev/null
+++ b/airsonos/translations/en.yaml
@@ -0,0 +1,33 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ port:
+ name: Port
+ description: >-
+ The port to run on, the default of 49152 should be good for most cases.
+ address:
+ name: Address
+ description: >-
+ Allows you to specify the IP address the AirCast server needs to
+ bind to.
+ latency_rtp:
+ name: RTP Latency
+ description: >-
+ Allows you to tweak the buffering, which is needed when the audio is
+ stuttering (e.g., low-quality network). This option specifies the number
+ of ms the add-on has to buffer the RTP audio (AirPlay). Setting this value
+ below 500ms is not recommended! Setting the value to 0 makes the add-on
+ to get the value from AirPlay.
+ latency_http:
+ name: HTTP Latency
+ description: >-
+ Allows you to tweak the buffering, which is needed when the audio is
+ stuttering (e.g., low-quality network). This option specifies the number
+ of ms the add-on has to buffer the HTTP audio.
+ drift:
+ name: Drift
+ description: >-
+ Allow to let timing reference drift (no click).
diff --git a/appdaemon/CHANGELOG.md b/appdaemon/CHANGELOG.md
new file mode 100644
index 0000000..33b00a2
--- /dev/null
+++ b/appdaemon/CHANGELOG.md
@@ -0,0 +1,11 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#122)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#123)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#125)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#126)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#124)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#128)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#130)
diff --git a/appdaemon/DOCS.md b/appdaemon/DOCS.md
new file mode 100644
index 0000000..818a14a
--- /dev/null
+++ b/appdaemon/DOCS.md
@@ -0,0 +1,221 @@
+# Home Assistant Community Add-on: AppDaemon 4
+
+AppDaemon is a loosely coupled, multithreaded, sandboxed python execution
+environment for writing automation apps for Home Assistant home automation
+software. It also provides a configurable dashboard (HADashboard) suitable
+for wall mounted tablets.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "AppDaemon 4" add-on in the Supervisor add-on store and
+ install it.
+1. Start the "AppDaemon 4" add-on
+1. Check the logs of the "AppDaemon 4" add-on to see if everything went well.
+
+:information_source: Please note, the add-on is pre-configured to connect with
+Home Assistant. There is no need to create access tokens or to set your
+Home Assistant URL in the AppDaemon configuration.
+
+This automatic handling of the URL and token conflicts with the AppDaemon
+official documentation. The official documentation will state `ha_url` and
+`token` options are required. For the add-on, however, this isn't needed.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+system_packages:
+ - ffmpeg
+python_packages:
+ - PyMySQL
+ - Pillow
+```
+
+**Note**: _This is just an example, don't copy and past it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+These log level also affects the log levels of the AppDaemon.
+
+### Option: `system_packages`
+
+Allows you to specify additional [Alpine packages][alpine-packages] to be
+installed to your AppDaemon setup (e.g., `g++`. `make`, `ffmpeg`).
+
+**Note**: _Adding many packages will result in a longer start-up time
+for the add-on._
+
+### Option: `python_packages`
+
+Allows you to specify additional [Python packages][python-packages] to be
+installed to your AppDaemon setup (e.g., `PyMySQL`. `Requests`, `Pillow`).
+
+**Note**: _Adding many packages will result in a longer start-up time
+for the add-on._
+
+#### Option: `init_commands`
+
+Customize your environment even more with the `init_commands` option.
+Add one or more shell commands to the list, and they will be executed every
+single time this add-on starts.
+
+## AppDaemon and HADashboard configuration
+
+This add-on does not configure the AppDaemon or HADashboard for you.
+It does, however, create some sample files to get you started on the first run.
+
+The configuration of the AppDaemon can be found in the `/config/appdaemon`
+directory.
+
+For more information about configuring AppDaemon, please refer to the
+extensive documentation they offer:
+
+
+
+## Home Assistant access tokens and ha_url settings
+
+By default, this add-on ships without a `token` and without the `ha_url`
+in the `appdaemon.yaml` config file. **This is not an error!**
+
+The add-on takes care of these settings for you and you do not need to provide
+or set these in the AppDaemon configuration.
+
+This automatic handling of the URL and token conflicts with the AppDaemon
+official documentation. The official documentation will state `ha_url` and
+`token` options are required. For the add-on, these aren't needed.
+
+However, you are free to set them if you want to override, however, in
+general usage, that should not be needed and is not recommended for this add-on.
+
+## Upgrading from AppDaemon 3.x
+
+If you have previously ran AppDaemon 3.x (e.g., via an add-on), these steps
+will help you getting upgraded to AppDaemon 4.x.
+
+- After installing this add-on, stop the current running AppDaemon 3.x add-on.
+- Open your `/config/appdaemon/appdaemon.yaml` file in an editor.
+ - Remove the `log`.
+ - Remove`threads`, `api_port`, `app_dir`, `ha_url` and `token`.
+ - Add the following to the `appdaemon` section: `latitude`, `longitude`,
+ `elevation` and `time_zone`.
+ - Add a `http` section with `url: http://127.0.0.1:5050` in it.
+ - At the end of the file add `admin:` and `api:`.
+ - Remove everthing under `hadashboard:`, leaving just that.
+
+The result should look something like this:
+
+```yaml
+---
+secrets: /config/secrets.yaml
+appdaemon:
+ latitude: 52.379189
+ longitude: 4.899431
+ elevation: 2
+ time_zone: Europe/Amsterdam
+ plugins:
+ HASS:
+ type: hass
+http:
+ url: http://127.0.0.1:5050
+hadashboard:
+admin:
+api:
+```
+
+Be sure to check the "Upgrading from 3.x" on the AppDaemon website:
+
+
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[alpine-packages]: https://pkgs.alpinelinux.org/packages
+[contributors]: https://github.com/hassio-addons/addon-appdaemon/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-appdaemon-4/163259?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-appdaemon/issues
+[python-packages]: https://pypi.org/
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-appdaemon/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/appdaemon/README.md b/appdaemon/README.md
new file mode 100644
index 0000000..7d642fe
--- /dev/null
+++ b/appdaemon/README.md
@@ -0,0 +1,34 @@
+# Home Assistant Community Add-on: AppDaemon 4
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Python Apps and HADashboard for Home Assistant
+
+## About
+
+AppDaemon is a loosely coupled, multithreaded, sandboxed python execution
+environment for writing automation apps for Home Assistant home automation
+software. It also provides a configurable dashboard (HADashboard) suitable
+for wall mounted tablets.
+
+![HADashboard screenshot][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-appdaemon-4/163259?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.6.2-blue.svg
+[release]: https://github.com/hassio-addons/addon-appdaemon/tree/v0.6.2
+[screenshot]: https://github.com/hassio-addons/addon-appdaemon/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/appdaemon/config.json b/appdaemon/config.json
new file mode 100644
index 0000000..80f4532
--- /dev/null
+++ b/appdaemon/config.json
@@ -0,0 +1,47 @@
+{
+ "name": "AppDaemon 4",
+ "version": "0.6.2",
+ "slug": "appdaemon",
+ "description": "Python Apps and Dashboard using AppDaemon 4.x for Home Assistant",
+ "url": "https://github.com/hassio-addons/addon-appdaemon",
+ "webui": "http://[HOST]:[PORT:5050]",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "homeassistant_api": true,
+ "uart": true,
+ "ports": {
+ "5050/tcp": 5050
+ },
+ "ports_description": {
+ "5050/tcp": "AppDaemon"
+ },
+ "map": [
+ "config:rw",
+ "share:rw",
+ "ssl"
+ ],
+ "options": {
+ "system_packages": [],
+ "python_packages": [],
+ "init_commands": []
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "system_packages": [
+ "str"
+ ],
+ "python_packages": [
+ "str"
+ ],
+ "init_commands": [
+ "str"
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/appdaemon/{arch}"
+}
\ No newline at end of file
diff --git a/appdaemon/icon.png b/appdaemon/icon.png
new file mode 100644
index 0000000..9bce174
Binary files /dev/null and b/appdaemon/icon.png differ
diff --git a/appdaemon/logo.png b/appdaemon/logo.png
new file mode 100644
index 0000000..a1ccf2c
Binary files /dev/null and b/appdaemon/logo.png differ
diff --git a/appdaemon/translations/de.yaml b/appdaemon/translations/de.yaml
new file mode 100644
index 0000000..240b0b9
--- /dev/null
+++ b/appdaemon/translations/de.yaml
@@ -0,0 +1,15 @@
+configuration:
+ init_commands:
+ description: 'Allows you to specificy a list of custom shell commands that are ran before AppDaemon starts.'
+ name: 'Init commands'
+ log_level:
+ description: 'Controls the level of log details the add-on provides.'
+ name: 'Log level'
+ python_packages:
+ description: 'Allows you to specificy a list of additional Python packages to be installed before AppDaemon starts.'
+ name: 'Python packages'
+ system_packages:
+ description: 'Allows you to specificy a list of additional Alpine Linux packages to be installed before AppDaemon starts.'
+ name: 'System packages'
+network:
+ 5050/tcp: 'The AppDaemon webserver'
diff --git a/appdaemon/translations/en.yaml b/appdaemon/translations/en.yaml
new file mode 100644
index 0000000..52de59a
--- /dev/null
+++ b/appdaemon/translations/en.yaml
@@ -0,0 +1,23 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ system_packages:
+ name: System packages
+ description: >-
+ Allows you to specificy a list of additional Alpine Linux packages to be
+ installed before AppDaemon starts.
+ python_packages:
+ name: Python packages
+ description: >-
+ Allows you to specificy a list of additional Python packages to be
+ installed before AppDaemon starts.
+ init_commands:
+ name: Init commands
+ description: >-
+ Allows you to specificy a list of custom shell commands that are ran
+ before AppDaemon starts.
+network:
+ 5050/tcp: The AppDaemon webserver
diff --git a/appdaemon/translations/nl.yaml b/appdaemon/translations/nl.yaml
new file mode 100644
index 0000000..b0aa8ca
--- /dev/null
+++ b/appdaemon/translations/nl.yaml
@@ -0,0 +1,15 @@
+configuration:
+ init_commands:
+ description: 'Allows you to specificy a list of custom shell commands that are ran before AppDaemon starts.'
+ name: 'Init commands'
+ log_level:
+ description: 'Bepaalt het niveau van de logs die de add-on toont.'
+ name: 'Log niveau'
+ python_packages:
+ description: 'Allows you to specificy a list of additional Python packages to be installed before AppDaemon starts.'
+ name: 'Python packages'
+ system_packages:
+ description: 'Allows you to specificy a list of additional Alpine Linux packages to be installed before AppDaemon starts.'
+ name: 'System packages'
+network:
+ 5050/tcp: 'De AppDaemon webserver'
diff --git a/asterisk/CHANGELOG.md b/asterisk/CHANGELOG.md
new file mode 100644
index 0000000..1bbfee3
--- /dev/null
+++ b/asterisk/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0 - 2021-05-09
+
+* ➕ Add Asterisk server `0.20.21`
diff --git a/asterisk/DOCS.md b/asterisk/DOCS.md
new file mode 100644
index 0000000..284bfc0
--- /dev/null
+++ b/asterisk/DOCS.md
@@ -0,0 +1,19 @@
+# Configuration
+
+```yaml
+config_files:
+ - /config/asterisk/sip.conf
+```
+
+### `config_files`
+
+A list of paths to your configuration files of asterisk.
+Every listed file will overwrite the template config file at `/etc/asterisk` on each addon start.
+The config files can be located on `/config` or`/share`.
+
+For the sample files take a look at the [official asterisk repository](https://github.com/asterisk/asterisk/blob/master/configs/samples).
+
+## Testing
+
+As default there is a test sip phone setup. With user `1001` and password `1234` the number `100` can be called.
+A sound should confirm the working state.
diff --git a/asterisk/Dockerfile b/asterisk/Dockerfile
new file mode 100644
index 0000000..f6b1b7a
--- /dev/null
+++ b/asterisk/Dockerfile
@@ -0,0 +1,10 @@
+ARG BUILD_FROM
+FROM $BUILD_FROM
+
+RUN apk add --no-cache \
+ asterisk=18.2.1-r1 \
+ asterisk-sample-config=18.2.1-r1
+
+ENTRYPOINT [ "/init" ]
+CMD []
+COPY root /
diff --git a/asterisk/README.md b/asterisk/README.md
new file mode 100644
index 0000000..d389cd6
--- /dev/null
+++ b/asterisk/README.md
@@ -0,0 +1,26 @@
+# Asterisk
+
+[Asterisk](https://www.asterisk.org/) is an open source framework for building communications applications. Asterisk turns an ordinary computer into a communications server.
+
+![Addon Stage][stage-badge]
+![Supports aarch64 Architecture][aarch64-badge]
+![Supports amd64 Architecture][amd64-badge]
+![Supports armhf Architecture][armhf-badge]
+![Supports armv7 Architecture][armv7-badge]
+![Supports i386 Architecture][i386-badge]
+
+[![Install on my Home Assistant][install-badge]][install-url]
+[![Donate][donation-badge]][donation-url]
+
+
+[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge
+[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
+[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge
+[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge
+[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge
+[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_asterisk
+[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge
+
+[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge
+[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white
+[donation-url]: https://www.buymeacoffee.com/Poeschl
diff --git a/asterisk/build.json b/asterisk/build.json
new file mode 100644
index 0000000..4ceab93
--- /dev/null
+++ b/asterisk/build.json
@@ -0,0 +1,9 @@
+{
+ "build_from": {
+ "armhf": "ghcr.io/home-assistant/armhf-base:3.13",
+ "armv7": "ghcr.io/home-assistant/armv7-base:3.13",
+ "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13",
+ "amd64": "ghcr.io/home-assistant/amd64-base:3.13",
+ "i386": "ghcr.io/home-assistant/i386-base:3.13"
+ }
+}
diff --git a/asterisk/config.json b/asterisk/config.json
new file mode 100644
index 0000000..9020631
--- /dev/null
+++ b/asterisk/config.json
@@ -0,0 +1,36 @@
+{
+ "name": "Asterisk",
+ "version": "1.0.0",
+ "slug": "asterisk",
+ "description": "Asterisk is an open source framework for building communications applications. Asterisk turns an ordinary computer into a communications server",
+ "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/asterisk",
+ "arch": [
+ "armv7",
+ "armhf",
+ "aarch64",
+ "amd64",
+ "i386"
+ ],
+ "startup": "application",
+ "boot": "auto",
+ "image": "ghcr.io/poeschl/ha-asterisk-{arch}",
+ "map": ["share","config"],
+ "ports": {
+ "5060/tcp": 5060,
+ "5060/udp": 5060,
+ "4569/udp": 4569,
+ "2727/udp": 2727
+ },
+ "ports_description": {
+ "5060/tcp": "Port for SIP",
+ "5060/udp": "Port for SIP",
+ "4569/udp": "Port for IAX2",
+ "2727/udp": "Port for MGCP"
+ },
+ "options": {
+ "config_files": []
+ },
+ "schema": {
+ "config_files": ["match(/(share|config)/.+)"]
+ }
+}
diff --git a/asterisk/icon.png b/asterisk/icon.png
new file mode 100755
index 0000000..531747f
Binary files /dev/null and b/asterisk/icon.png differ
diff --git a/asterisk/logo.png b/asterisk/logo.png
new file mode 100755
index 0000000..d942e4c
Binary files /dev/null and b/asterisk/logo.png differ
diff --git a/asterisk/root/etc/asterisk/asterisk.conf b/asterisk/root/etc/asterisk/asterisk.conf
new file mode 100644
index 0000000..02c9678
--- /dev/null
+++ b/asterisk/root/etc/asterisk/asterisk.conf
@@ -0,0 +1,13 @@
+[directories]
+astcachedir => /var/cache/asterisk
+astetcdir => /etc/asterisk
+astmoddir => /usr/lib/asterisk/modules
+astvarlibdir => /var/lib/asterisk
+astdbdir => /var/lib/asterisk
+astkeydir => /var/lib/asterisk
+astdatadir => /var/lib/asterisk
+astagidir => /var/lib/asterisk/agi-bin
+astspooldir => /var/spool/asterisk
+astrundir => /var/run/asterisk
+astlogdir => /var/log/asterisk
+astsbindir => /usr/sbin
\ No newline at end of file
diff --git a/asterisk/root/etc/asterisk/extensions.conf b/asterisk/root/etc/asterisk/extensions.conf
new file mode 100644
index 0000000..9bfdd49
--- /dev/null
+++ b/asterisk/root/etc/asterisk/extensions.conf
@@ -0,0 +1,5 @@
+[internal]
+exten = 100,1,Answer()
+same = n,Wait(1)
+same = n,Playback(test)
+same = n,Hangup()
\ No newline at end of file
diff --git a/asterisk/root/etc/asterisk/modules.conf b/asterisk/root/etc/asterisk/modules.conf
new file mode 100644
index 0000000..f531ba1
--- /dev/null
+++ b/asterisk/root/etc/asterisk/modules.conf
@@ -0,0 +1,56 @@
+;
+; Asterisk configuration file
+;
+; Module Loader configuration file
+;
+
+[modules]
+autoload=yes
+;
+; Any modules that need to be loaded before the Asterisk core has been
+; initialized (just after the logger initialization) can be loaded
+; using 'preload'. 'preload' forces a module and the modules it
+; is known to depend upon to be loaded earlier than they normally get
+; loaded.
+;
+; NOTE: There is no good reason left to use 'preload' anymore. It was
+; historically required to preload realtime driver modules so you could
+; map Asterisk core configuration files to Realtime storage.
+; This is no longer needed.
+;
+;preload = your_special_module.so
+;
+; If you want Asterisk to fail if a module does not load, then use
+; the "require" keyword. Asterisk will exit with a status code of 2
+; if a required module does not load.
+;
+;require = chan_pjsip.so
+;
+; If you want you can combine with preload
+; preload-require = your_special_module.so
+;
+;load = res_musiconhold.so
+;
+; Load one of: chan_oss, alsa, or console (portaudio).
+; By default, load chan_oss only (automatically).
+;
+noload = chan_alsa.so
+noload = chan_console.so
+;noload = chan_oss.so
+;
+; Do not load res_hep and kin unless you are using HEP monitoring
+; in your network.
+;
+noload = res_hep.so
+noload = res_hep_pjsip.so
+noload = res_hep_rtcp.so
+;
+; Do not load chan_sip by default, it may conflict with res_pjsip.
+noload = chan_sip.so
+;
+; Load one of the voicemail modules as they are mutually exclusive.
+; By default, load app_voicemail only (automatically).
+;
+;noload = app_voicemail.so
+noload = app_voicemail_imap.so
+noload = app_voicemail_odbc.so
\ No newline at end of file
diff --git a/asterisk/root/etc/asterisk/pjsip.conf b/asterisk/root/etc/asterisk/pjsip.conf
new file mode 100644
index 0000000..2bec951
--- /dev/null
+++ b/asterisk/root/etc/asterisk/pjsip.conf
@@ -0,0 +1,22 @@
+[general]
+type=transport
+protocol=udp
+bind=0.0.0.0
+
+[1001]
+type = endpoint
+context = internal
+disallow=all
+allow=ulaw
+aors = 1001
+auth = auth1001
+
+[1001]
+type = aor
+max_contacts = 1
+
+[auth1001]
+type=auth
+auth_type=userpass
+password=1234
+username=1001
\ No newline at end of file
diff --git a/asterisk/root/etc/cont-init.d/setup-config-files.sh b/asterisk/root/etc/cont-init.d/setup-config-files.sh
new file mode 100644
index 0000000..4ea909c
--- /dev/null
+++ b/asterisk/root/etc/cont-init.d/setup-config-files.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/with-contenv bashio
+# shellcheck shell=bash
+set -e
+
+CONFIG_FILES=$(bashio::config 'config_files')
+
+for config in $CONFIG_FILES; do
+ bashio::log.info "Apply '$config'"
+ cp "$config" '/etc/asterisk/'
+done
+
+chown -R asterisk:asterisk /etc/asterisk
+chmod 640 -R /etc/asterisk
diff --git a/asterisk/root/etc/fix-attrs.d/sample-sound b/asterisk/root/etc/fix-attrs.d/sample-sound
new file mode 100644
index 0000000..92259ce
--- /dev/null
+++ b/asterisk/root/etc/fix-attrs.d/sample-sound
@@ -0,0 +1 @@
+/var/lib/asterisk/sounds/test.wav false asterisk:asterisk 0640 0640
\ No newline at end of file
diff --git a/asterisk/root/etc/services.d/asterisk/run b/asterisk/root/etc/services.d/asterisk/run
new file mode 100644
index 0000000..0d1a478
--- /dev/null
+++ b/asterisk/root/etc/services.d/asterisk/run
@@ -0,0 +1,8 @@
+#!/usr/bin/with-contenv bashio
+set -e
+
+# Enable Jemalloc for better memory handling
+export LD_PRELOAD="/usr/local/lib/libjemalloc.so.2"
+
+bashio::log.info 'Start Asterisk'
+asterisk -T -W -p -f -dd
diff --git a/build-site.sh b/build-site.sh
new file mode 100755
index 0000000..3440c6b
--- /dev/null
+++ b/build-site.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+# ==============================================================================
+# Community Hass.io Add-ons for Home Assistant
+# This script builds a small little website
+# ==============================================================================
+set -o errexit # Exit script when a command exits with non-zero status
+set -o errtrace # Exit on error inside any functions or sub-shells
+set -o nounset # Exit script on use of an undefined variable
+set -o pipefail # Return exit status of the last command in the pipe that failed
+
+# Switch to the root of the repository.
+cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")"
+
+# Create a documentation folder
+mkdir -p docs
+
+# Install requirements
+pip install -r requirements.txt
+
+# Download Beta page
+curl https://raw.githubusercontent.com/hassio-addons/repository-beta/master/README.md --output docs/beta.md
+
+# Download Edge page
+curl https://raw.githubusercontent.com/hassio-addons/repository-edge/master/README.md --output docs/edge.md
+
+# Get the pages into the docs folder
+ln -sf ../README.md docs/index.md
+ln -sf ../LICENSE.md docs/license.md
+ln -sf ../.github/CONTRIBUTING.md docs/contributing.md
+ln -sf ../.github/CODE_OF_CONDUCT.md docs/code-of-conduct.md
+
+# Build!
+mkdocs build
diff --git a/chrony/CHANGELOG.md b/chrony/CHANGELOG.md
new file mode 100644
index 0000000..f80e5ac
--- /dev/null
+++ b/chrony/CHANGELOG.md
@@ -0,0 +1,15 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#61)
+- Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#62)
+- Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#63)
+- Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#64)
+- Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#65)
+- Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#67)
+- Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#66)
+- Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#68)
+- Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#70)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#72)
+- ⬆ Update base image to v10.0.0 and chrony to v4.1-r0 @sinclairpaul (#73)
diff --git a/chrony/DOCS.md b/chrony/DOCS.md
new file mode 100644
index 0000000..d16182a
--- /dev/null
+++ b/chrony/DOCS.md
@@ -0,0 +1,144 @@
+# Home Assistant Community Add-on: chrony
+
+An NTP server accessible by all hosts on the local network, useful for setting
+time on devices with controlled internet access (such as cameras).
+The addon can also be used to set the system clock.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "chrony" add-on in the add-on store and install it.
+1. Start the "chrony" add-on
+1. Check the logs of the "chrony" add-on to see if everything went well.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+set_system_clock: true
+mode: pool
+ntp_pool: pool.ntp.org
+ntp_server:
+ - 54.39.13.155
+ - briareus.schulte.org
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `set_system_clock`
+
+The `set_system_clock` option configures chrony to set the local system clock.
+For some systems it may be preferable to use a different mechanism for
+setting the system time.
+
+### Option: `mode`
+
+The `mode` option configures chrony to use either `pool` or `server` mode.
+These options are:
+
+- `pool`: References a pool of servers such as pool.ntp.org (Recommended).
+- `server`: References a list of specific names or addresses.
+
+Based on the mode the `ntp_pool` or `ntp_server` option will be used.
+
+### Option: `ntp_pool`
+
+Used by pool mode and configures the pool name to be used, should be a DNS
+record with multiple entries. The application will select which to reference.
+
+### Option: `ntp_server`
+
+Used by server mode, an array of server names or IP Addresses used as the
+time source. The application will select which to reference.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Paul Sinclair][sinclairpaul].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2019-2021 Paul Sinclair
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-chrony/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/community-hass-io-xxxxx/xxxxx
+[sinclairpaul]: https://github.com/sinclairpaul
+[issue]: https://github.com/hassio-addons/addon-chrony/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-chrony/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/chrony/README.md b/chrony/README.md
new file mode 100644
index 0000000..807ba12
--- /dev/null
+++ b/chrony/README.md
@@ -0,0 +1,25 @@
+# Home Assistant Community Add-on: chrony
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
+
+chrony NTP Server.
+
+## About
+
+An NTP server accesible by all hosts on the local network, useful for setting
+time on devices with controlled internet access (such as cameras).
+
+[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
+[buymeacoffee]: https://www.buymeacoffee.com/sinclairpaul
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/?u=frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v2.2.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-chrony/tree/v2.2.0
\ No newline at end of file
diff --git a/chrony/config.json b/chrony/config.json
new file mode 100644
index 0000000..dc16820
--- /dev/null
+++ b/chrony/config.json
@@ -0,0 +1,45 @@
+{
+ "name": "chrony",
+ "version": "2.2.0",
+ "slug": "chrony",
+ "description": "A local NTP (Network Time Protocol) server for cameras etc.",
+ "url": "https://github.com/hassio-addons/addon-chrony",
+ "startup": "system",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "hassio_api": true,
+ "init": false,
+ "privileged": [
+ "SYS_TIME"
+ ],
+ "ports": {
+ "123/udp": 123
+ },
+ "ports_description": {
+ "123/udp": "NTP; Network Time Protocol"
+ },
+ "options": {
+ "set_system_clock": true,
+ "mode": "pool",
+ "ntp_pool": "pool.ntp.org",
+ "ntp_server": [
+ "54.39.13.155",
+ "briareus.schulte.org"
+ ]
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "set_system_clock": "bool",
+ "ntp_pool": "str?",
+ "ntp_server": [
+ "str?"
+ ],
+ "mode": "list(pool|server)"
+ },
+ "image": "ghcr.io/hassio-addons/chrony/{arch}"
+}
\ No newline at end of file
diff --git a/chrony/icon.png b/chrony/icon.png
new file mode 100644
index 0000000..9e9da29
Binary files /dev/null and b/chrony/icon.png differ
diff --git a/chrony/logo.png b/chrony/logo.png
new file mode 100644
index 0000000..2ac3670
Binary files /dev/null and b/chrony/logo.png differ
diff --git a/cloudcommander/CHANGELOG.md b/cloudcommander/CHANGELOG.md
new file mode 100644
index 0000000..6a16041
--- /dev/null
+++ b/cloudcommander/CHANGELOG.md
@@ -0,0 +1,42 @@
+
+## 15.9.7 (28-06-2021)
+- Update to latest version from coderaiser/cloudcmd
+- Allow mounting SMB shares
+- Allow mounting local drives
+
+## 15.9.6 (14-06-2021)
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.5 (09-06-2021)
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.4 (23-05-2021)
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.4
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.3
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.2
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.1
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.9.0
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.8.1
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.8.0
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.7.1
+- Update to latest version from coderaiser/cloudcmd
+
+## 15.7.0
+- Update to latest version from coderaiser/cloudcmd
+
diff --git a/cloudcommander/Dockerfile b/cloudcommander/Dockerfile
new file mode 100644
index 0000000..0a097b2
--- /dev/null
+++ b/cloudcommander/Dockerfile
@@ -0,0 +1,39 @@
+ARG BUILD_VERSION
+ARG BUILD_UPSTREAM="15.9.7"
+FROM coderaiser/cloudcmd:$BUILD_UPSTREAM
+
+COPY run.sh /
+
+ARG BASHIO_VERSION=0.13.0
+
+RUN \
+ ################
+ # Install apps #
+ ################
+ apt-get update \
+ && apt-get install -y --no-install-recommends \
+ jq \
+ cifs-utils \
+ keyutils \
+ \
+ ##################
+ # Install bashio #
+ ##################
+ && mkdir -p /tmp/bashio \
+ && curl -L -f -s "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" \
+ | tar -xzf - --strip 1 -C /tmp/bashio \
+ && mv /tmp/bashio/lib /usr/lib/bashio \
+ && ln -s /usr/lib/bashio/bashio /usr/bin/bashio \
+ && rm -rf /tmp/bashio \
+ \
+ /var/{cache,log}/* \
+ /var/lib/apt/lists/* \
+ \
+ ###############
+ # Permissions #
+ ###############
+ && chmod 777 /run.sh
+
+ENTRYPOINT [ "/run.sh" ]
+
+VOLUME [ "/data" ]
diff --git a/cloudcommander/README.md b/cloudcommander/README.md
new file mode 100644
index 0000000..e2bc34f
--- /dev/null
+++ b/cloudcommander/README.md
@@ -0,0 +1,28 @@
+# Home assistant add-on: Cloudcommander
+![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield]
+
+## About
+
+Cloud Commander a file manager for the web with console and editor.
+This addon is based on the [docker image](https://hub.docker.com/r/coderaiser/cloudcmd).
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Hass.io add-on.
+
+1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance.
+1. Install this add-on.
+1. Click the `Save` button to store your configuration.
+1. Start the add-on.
+1. Check the logs of the add-on to see if everything went well.
+
+## Configuration
+
+Webui can be found at `:8000`.
+
+[repository]: https://github.com/alexbelgium/hassio-addons
+[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
diff --git a/cloudcommander/apparmor.txt b/cloudcommander/apparmor.txt
new file mode 100644
index 0000000..1e9c60b
--- /dev/null
+++ b/cloudcommander/apparmor.txt
@@ -0,0 +1,48 @@
+#include
+
+profile cloudcommander_addon flags=(attach_disconnected,mediate_deleted) {
+ #include
+
+ capability,
+ file,
+ mount,
+ umount,
+ remount,
+
+ capability setgid,
+ capability setuid,
+ capability sys_admin,
+ capability dac_read_search,
+ # capability dac_override,
+ # capability sys_rawio,
+
+# S6-Overlay
+ /bin/** ix,
+ /usr/bin/** ix,
+ /usr/lib/bashio/** ix,
+ /etc/s6/** rix,
+ /run/s6/** rix,
+ /etc/services.d/** rwix,
+ /etc/cont-init.d/** rwix,
+ /etc/cont-finish.d/** rwix,
+ /init rix,
+ /var/run/** mrwkl,
+ /var/run/ mrwkl,
+ /dev/i2c-1 mrwkl,
+ # Files required
+ /dev/sda1 mrwkl,
+ /dev/sdb1 mrwkl,
+ /dev/mmcblk0p1 mrwkl,
+ /dev/* mrwkl,
+ /tmp/** mrkwl,
+
+ # Data access
+ /data/** rw,
+
+ # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
+ ptrace (trace,read) peer=docker-default,
+
+ # docker daemon confinement requires explict allow rule for signal
+ signal (receive) set=(kill,term) peer=/usr/bin/docker,
+
+}
diff --git a/cloudcommander/config.json b/cloudcommander/config.json
new file mode 100644
index 0000000..c0bde73
--- /dev/null
+++ b/cloudcommander/config.json
@@ -0,0 +1,38 @@
+{
+ "name": "Cloudcommander",
+ "version": "15.9.7",
+ "upstream": "15.9.7",
+ "slug": "cloudcommander",
+ "description": "Cloud Commander a file manager for the web with console and editor",
+ "url": "https://github.com/alexbelgium/hassio-addons/tree/master/cloudcommander#readme",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "armhf"
+ ],
+ "ports": {
+ "8000/tcp": 8000
+ },
+ "ports_description": {
+ "8000/tcp": "Web UI port (required)"
+ },
+ "map": [
+ "ssl"
+ ],
+ "webui": "http://[HOST]:[PORT:8000]",
+ "privileged": [
+ "SYS_ADMIN",
+ "DAC_READ_SEARCH"
+ ],
+ "full_access": true,
+ "environment": {},
+ "options": {},
+ "schema": {
+ "localdisks": "str?",
+ "networkdisks": "str?",
+ "cifsusername": "str?",
+ "cifspassword": "str?",
+ "smbv1": "bool?"
+ }
+}
diff --git a/cloudcommander/icon.png b/cloudcommander/icon.png
new file mode 100644
index 0000000..b5da320
Binary files /dev/null and b/cloudcommander/icon.png differ
diff --git a/cloudcommander/logo.png b/cloudcommander/logo.png
new file mode 100644
index 0000000..b5da320
Binary files /dev/null and b/cloudcommander/logo.png differ
diff --git a/cloudcommander/run.sh b/cloudcommander/run.sh
new file mode 100644
index 0000000..f2fc96e
--- /dev/null
+++ b/cloudcommander/run.sh
@@ -0,0 +1,134 @@
+#!/usr/bin/env bashio
+
+##########
+# BANNER #
+##########
+
+if bashio::supervisor.ping; then
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue " Add-on: $(bashio::addon.name)"
+ bashio::log.blue " $(bashio::addon.description)"
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+
+ bashio::log.blue " Add-on version: $(bashio::addon.version)"
+ if bashio::var.true "$(bashio::addon.update_available)"; then
+ bashio::log.magenta ' There is an update available for this add-on!'
+ bashio::log.magenta \
+ " Latest add-on version: $(bashio::addon.version_latest)"
+ bashio::log.magenta ' Please consider upgrading as soon as possible.'
+ else
+ bashio::log.green ' You are running the latest version of this add-on.'
+ fi
+
+ bashio::log.blue " System: $(bashio::info.operating_system)" \
+ " ($(bashio::info.arch) / $(bashio::info.machine))"
+ bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)"
+ bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)"
+
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue \
+ ' Please, share the above information when looking for help'
+ bashio::log.blue \
+ ' or support in, e.g., GitHub, forums or the Discord chat.'
+ bashio::log.green \
+ ' https://github.com/alexbelgium/hassio-addons'
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+fi
+
+######################
+# MOUNT LOCAL SHARES #
+######################
+
+# Mount local Share if configured and if Protection Mode is active
+if bashio::config.has_value 'localdisks'; then
+ bashio::log.info 'Mounting local hdd...'
+ bashio::require.unprotected
+ MOREDISKS=$(bashio::config 'localdisks')
+ bashio::log.info "Local Disks mounting.. ${MOREDISKS}" && \
+ for disk in ${MOREDISKS//,/ } # Separate comma separated values
+ do
+ bashio::log.info "Mount ${disk}"
+ mkdir -p /share/$disk && \
+ if [ ! -d /share/$disk ]; then
+ echo "Creating /share/$disk"
+ mkdir -p /share/$disk
+ chown -R abc:abc /share/$disk
+ fi
+ mount /dev/$disk /mnt && \
+ bashio::log.info "Success! Mounted to /nmt/$disk"
+ done || \
+ bashio::log.warning "Error, /dev/$disk couldn't be mounted. Is priviledged mode on?"
+fi || true
+
+####################
+# MOUNT SMB SHARES #
+####################
+if bashio::config.has_value 'networkdisks'; then
+ # Mount CIFS Share if configured and if Protection Mode is active
+ bashio::log.info 'Mounting smb share(s)...'
+
+ # Define variables
+ MOREDISKS=$(bashio::config 'networkdisks')
+ CIFS_USERNAME=$(bashio::config 'cifsusername')
+ CIFS_PASSWORD=$(bashio::config 'cifspassword')
+ MOUNTED=false
+ SMBVERS=""
+ SECVERS=""
+
+ if bashio::config.has_value 'cifsdomain'; then
+ DOMAIN=",domain=$(bashio::config 'cifsdomain')"
+ else
+ DOMAIN=""
+ fi
+
+ # Mounting disks
+ for disk in ${MOREDISKS//,/ } # Separate comma separated values
+ do
+ # Clean name of network share
+ disk=$(echo $disk | sed "s,/$,,") # Remove / at end of name
+ diskname=${disk//\\//} #replace \ with /
+ diskname=${diskname##*/} # Get only last part of the name
+ # Prepare mount point
+ mkdir -p /mnt/$diskname
+ chown -R root:root /mnt/$diskname
+
+ #Tries to mount with default options
+ mount -t cifs -o rw,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$DOMAIN $disk /mnt/$diskname 2>ERRORCODE && MOUNTED=true || MOUNTED=false
+
+ # if Fail test different smb and sec versions
+ if [ $MOUNTED = false ]; then
+ for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false
+ for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false
+ done
+ done
+ fi
+
+ # Messages
+ if [ $MOUNTED = true ]; then
+ #Test write permissions
+ touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw"
+ else
+ # message if still fail
+ bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share
+ bashio::log.fatal "Error read : $(:8096`.
+
+[smb-shield]: https://img.shields.io/badge/SMB--green?style=plastic.svg
+
+
+[repository]: https://github.com/alexbelgium/hassio-addons
+[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
diff --git a/emby/apparmor.txt b/emby/apparmor.txt
new file mode 100644
index 0000000..7bdec83
--- /dev/null
+++ b/emby/apparmor.txt
@@ -0,0 +1,49 @@
+#include
+
+profile addon_db21ed7f_emby_nas flags=(attach_disconnected,mediate_deleted) {
+ #include
+
+ capability,
+ file,
+ mount,
+ umount,
+ remount,
+
+ capability setgid,
+ capability setuid,
+ capability sys_admin,
+ capability dac_read_search,
+ # capability dac_override,
+ # capability sys_rawio,
+
+# S6-Overlay
+ /bin/** ix,
+ /usr/bin/** ix,
+ /usr/lib/bashio/** ix,
+ /etc/s6/** rix,
+ /run/s6/** rix,
+ /etc/services.d/** rwix,
+ /etc/cont-init.d/** rwix,
+ /etc/cont-finish.d/** rwix,
+ /init rix,
+ /var/run/** mrwkl,
+ /var/run/ mrwkl,
+ /dev/i2c-1 mrwkl,
+ # Files required
+ /dev/sda1 mrwkl,
+ /dev/sdb1 mrwkl,
+ /dev/mmcblk0p1 mrwkl,
+ /dev/ttyUSB0 mrwkl,
+ /dev/* mrwkl,
+ /tmp/** mrkwl,
+
+ # Data access
+ /data/** rw,
+
+ # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
+ ptrace (trace,read) peer=docker-default,
+
+ # docker daemon confinement requires explict allow rule for signal
+ signal (receive) set=(kill,term) peer=/usr/bin/docker,
+
+}
diff --git a/emby/build.json b/emby/build.json
new file mode 100644
index 0000000..059fcaa
--- /dev/null
+++ b/emby/build.json
@@ -0,0 +1,8 @@
+{
+ "build_from": {
+ "armv7": "linuxserver/emby:arm32v7-version-",
+ "armhf": "linuxserver/emby:arm32v7-version-",
+ "aarch64": "linuxserver/emby:arm64v8-version-",
+ "amd64": "linuxserver/emby:amd64-version-"
+ }
+}
diff --git a/emby/config.json b/emby/config.json
new file mode 100644
index 0000000..c346760
--- /dev/null
+++ b/emby/config.json
@@ -0,0 +1,60 @@
+{
+ "name": "Emby NAS",
+ "version": "4.6.3.0",
+ "upstream": "4.6.3.0",
+ "slug": "emby_nas",
+ "description": "A Free Software Media System that puts you in control of managing and streaming your media.",
+ "url": "https://github.com/alexbelgium/hassio-addons",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "armhf"
+ ],
+ "ports": {
+ "8096/tcp": 8096,
+ "8920/tcp": null,
+ "7359/udp": null,
+ "1900/udp": null
+ },
+ "ports_description": {
+ "8096/tcp": "web interface",
+ "8920/tcp": "https web interface (optional)",
+ "7359/udp": "udp server discover (optional)",
+ "1900/udp": "dlna (optional)"
+ },
+ "map": [
+ "config:rw",
+ "share:rw",
+ "media:rw",
+ "ssl"
+ ],
+ "webui": "http://[HOST]:[PORT:8096]",
+ "boot": "auto",
+ "apparmor": "true",
+ "privileged": [
+ "SYS_ADMIN",
+ "DAC_READ_SEARCH"
+ ],
+ "devices": [
+ "/dev/ttyUSB0",
+ "/dev/*",
+ "/dev/sda1"
+ ],
+ "full_access": true,
+ "options": {
+ "PUID": 0,
+ "PGID": 0
+ },
+ "schema": {
+ "PUID": "int",
+ "PGID": "int",
+ "TZ": "str?",
+ "localdisks": "str?",
+ "networkdisks": "str?",
+ "cifsusername": "str?",
+ "cifspassword": "str?",
+ "smbv1": "bool?"
+ }
+}
diff --git a/emby/icon.png b/emby/icon.png
new file mode 100644
index 0000000..19f999c
Binary files /dev/null and b/emby/icon.png differ
diff --git a/emby/logo.png b/emby/logo.png
new file mode 100644
index 0000000..19f999c
Binary files /dev/null and b/emby/logo.png differ
diff --git a/emby/root/etc/cont-init.d/00-banner.sh b/emby/root/etc/cont-init.d/00-banner.sh
new file mode 100644
index 0000000..71b1a4e
--- /dev/null
+++ b/emby/root/etc/cont-init.d/00-banner.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/with-contenv bashio
+# ==============================================================================
+# Home Assistant Community Add-on: Base Images
+# Displays a simple add-on banner on startup
+# ==============================================================================
+if bashio::supervisor.ping; then
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue " Add-on: $(bashio::addon.name)"
+ bashio::log.blue " $(bashio::addon.description)"
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+
+ bashio::log.blue " Add-on version: $(bashio::addon.version)"
+ if bashio::var.true "$(bashio::addon.update_available)"; then
+ bashio::log.magenta ' There is an update available for this add-on!'
+ bashio::log.magenta \
+ " Latest add-on version: $(bashio::addon.version_latest)"
+ bashio::log.magenta ' Please consider upgrading as soon as possible.'
+ else
+ bashio::log.green ' You are running the latest version of this add-on.'
+ fi
+
+ bashio::log.blue " System: $(bashio::info.operating_system)" \
+ " ($(bashio::info.arch) / $(bashio::info.machine))"
+ bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)"
+ bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)"
+
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue \
+ ' Please, share the above information when looking for help'
+ bashio::log.blue \
+ ' or support in, e.g., GitHub, forums or the Discord chat.'
+ bashio::log.green \
+ ' https://github.com/alexbelgium/hassio-addons'
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+fi
diff --git a/emby/root/etc/cont-init.d/00-ha-env b/emby/root/etc/cont-init.d/00-ha-env
new file mode 100644
index 0000000..3b3e692
--- /dev/null
+++ b/emby/root/etc/cont-init.d/00-ha-env
@@ -0,0 +1,5 @@
+#!/usr/bin/with-contenv bashio
+
+for k in $(bashio::jq "${__BASHIO_ADDON_CONFIG}" 'keys | .[]'); do
+ printf "$(bashio::config $k)" > /var/run/s6/container_environment/$k
+done
\ No newline at end of file
diff --git a/emby/root/etc/cont-init.d/20-folders b/emby/root/etc/cont-init.d/20-folders
new file mode 100644
index 0000000..8f46b7c
--- /dev/null
+++ b/emby/root/etc/cont-init.d/20-folders
@@ -0,0 +1,82 @@
+#!/usr/bin/with-contenv bash
+
+if [ ! -d /emby ]; then
+ echo "Creating /emby"
+ mkdir -p /emby
+ chown -R abc:abc /emby
+fi
+
+if [ ! -d /share/storage/tv ]; then
+ echo "Creating /share/storage/tv"
+ mkdir -p /share/storage/tv
+ chown -R abc:abc /share/storage/tv
+fi
+
+if [ ! -d /share/storage/movies ]; then
+ echo "Creating /share/storage/movies"
+ mkdir -p /share/storage/movies
+ chown -R abc:abc /share/storage/movies
+fi
+
+if [ ! -d /share/emby ]; then
+ echo "Creating /share/emby"
+ mkdir -p /share/emby
+ chown -R abc:abc /share/emby
+fi
+
+if [ ! -d /config/emby ]; then
+ echo "Creating /config/emby"
+ mkdir -p /config/emby
+ chown -R abc:abc /config/emby
+fi
+
+# links
+
+if [ ! -d /emby/cache ]; then
+ echo "Creating link for /emby/cache"
+ mkdir -p /share/emby/cache
+ chown -R abc:abc /share/emby/cache
+ ln -s /share/emby/cache /emby/cache
+fi
+
+if [ ! -d /emby/config ]; then
+ echo "Creating link for /emby/config"
+ mkdir -p /config/emby
+ chown -R abc:abc /config/emby
+ ln -s /config/emby /emby/config
+fi
+
+if [ ! -d /emby/data ]; then
+ echo "Creating link for /emby/data"
+ mkdir -p /share/emby/data
+ chown -R abc:abc /share/emby/data
+ ln -s /share/emby/data /emby/data
+fi
+
+if [ ! -d /emby/logs ]; then
+ echo "Creating link for /emby/logs"
+ mkdir -p /share/emby/logs
+ chown -R abc:abc /share/emby/logs
+ ln -s /share/emby/logs /emby/logs
+fi
+
+if [ ! -d /emby/metadata ]; then
+ echo "Creating link for /emby/metadata"
+ mkdir -p /share/emby/metadata
+ chown -R abc:abc /share/emby/metadata
+ ln -s /share/emby/metadata /emby/metadata
+fi
+
+if [ ! -d /emby/plugins ]; then
+ echo "Creating link for /emby/plugins"
+ mkdir -p /share/emby/plugins
+ chown -R abc:abc /share/emby/plugins
+ ln -s /share/emby/plugins /emby/plugins
+fi
+
+if [ ! -d /emby/root ]; then
+ echo "Creating link for /emby/root"
+ mkdir -p /share/emby/root
+ chown -R abc:abc /share/emby/root
+ ln -s /share/emby/root /emby/root
+fi
diff --git a/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh b/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh
new file mode 100644
index 0000000..d9a382b
--- /dev/null
+++ b/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/with-contenv bashio
+
+######################
+# MOUNT LOCAL SHARES #
+######################
+
+bashio::log.info 'Mounting external hdd...'
+
+# Mount local Share if configured and if Protection Mode is active
+if bashio::config.has_value 'localdisks'; then
+ bashio::require.unprotected
+ MOREDISKS=$(bashio::config 'localdisks')
+ bashio::log.info "Local Disks mounting.. ${MOREDISKS}" && \
+ for disk in ${MOREDISKS//,/ } # Separate comma separated values
+ do
+ bashio::log.info "Mount ${disk}"
+ mkdir -p /share/$disk && \
+ if [ ! -d /share/$disk ]; then
+ echo "Creating /share/$disk"
+ mkdir -p /share/$disk
+ chown -R abc:abc /share/$disk
+ fi
+ mount /dev/$disk /share/$disk && \
+ bashio::log.info "Success! Mounted to /nmt/$disk"
+ done || \
+ bashio::log.warning "Protection mode is ON. Unable to mount local drives!"
+fi
diff --git a/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh b/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh
new file mode 100644
index 0000000..2e5d11a
--- /dev/null
+++ b/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/with-contenv bashio
+
+####################
+# MOUNT SMB SHARES #
+####################
+if bashio::config.has_value 'networkdisks'; then
+ # Mount CIFS Share if configured and if Protection Mode is active
+ bashio::log.info 'Mounting smb share(s)...'
+
+ # Define variables
+ MOREDISKS=$(bashio::config 'networkdisks')
+ CIFS_USERNAME=$(bashio::config 'cifsusername')
+ CIFS_PASSWORD=$(bashio::config 'cifspassword')
+ MOUNTED=false
+ SMBVERS=""
+ SECVERS=""
+
+ if bashio::config.has_value 'cifsdomain'; then
+ DOMAIN=",domain=$(bashio::config 'cifsdomain')"
+ else
+ DOMAIN=""
+ fi
+
+ # Mounting disks
+ for disk in ${MOREDISKS//,/ } # Separate comma separated values
+ do
+ # Clean name of network share
+ disk=$(echo $disk | sed "s,/$,,") # Remove / at end of name
+ diskname=${disk//\\//} #replace \ with /
+ diskname=${diskname##*/} # Get only last part of the name
+ # Prepare mount point
+ mkdir -p /mnt/$diskname
+ chown -R root:root /mnt/$diskname
+
+ #Tries to mount with default options
+ mount -t cifs -o rw,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$DOMAIN $disk /mnt/$diskname 2>ERRORCODE && MOUNTED=true || MOUNTED=false
+
+ # if Fail test different smb and sec versions
+ if [ $MOUNTED = false ]; then
+ for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false
+ for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false
+ done
+ done
+ fi
+
+ # Messages
+ if [ $MOUNTED = true ]; then
+ #Test write permissions
+ touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw"
+ else
+ # message if still fail
+ bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share
+ bashio::log.fatal "Error read : $(
+
+
+
+[View the ESPHome documentation](https://esphome.io/)
+
+## Example
+
+With ESPHome, you can go from a few lines of YAML straight to a custom-made
+firmware. For example, to include a [DHT22][dht22].
+temperature and humidity sensor, you just need to include 8 lines of YAML
+in your configuration file:
+
+
+
+Then just click UPLOAD and the sensor will magically appear in Home Assistant:
+
+
+
+[discord-shield]: https://img.shields.io/discord/429907082951524364.svg
+[dht22]: https://esphome.io/components/sensor/dht.html
+[discord]: https://discord.gg/KhAMKrd
+[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg
+[releases]: https://esphome.io/changelog/index.html
+[repository]: https://github.com/esphome/esphome
diff --git a/esphome/config.json b/esphome/config.json
new file mode 100644
index 0000000..459b2ac
--- /dev/null
+++ b/esphome/config.json
@@ -0,0 +1,43 @@
+{
+ "arch": [
+ "amd64",
+ "armv7",
+ "aarch64"
+ ],
+ "auth_api": true,
+ "description": "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices",
+ "hassio_api": true,
+ "host_network": true,
+ "image": "esphome/esphome-hassio-{arch}",
+ "ingress": true,
+ "ingress_port": 0,
+ "map": [
+ "ssl:ro",
+ "config:rw"
+ ],
+ "name": "ESPHome",
+ "panel_icon": "mdi:chip",
+ "ports": {
+ "6052/tcp": null
+ },
+ "ports_description": {
+ "6052/tcp": "Web interface (not required for Home Assistant ingress)"
+ },
+ "schema": {
+ "certfile": "str?",
+ "esphome_version": "str?",
+ "keyfile": "str?",
+ "leave_front_door_open": "bool?",
+ "relative_url": "str?",
+ "ssl": "bool?",
+ "status_use_ping": "bool?",
+ "streamer_mode": "bool?"
+ },
+ "slug": "esphome",
+ "snapshot_exclude": [
+ "*/*/"
+ ],
+ "uart": true,
+ "url": "https://esphome.io/",
+ "version": "1.19.4"
+}
\ No newline at end of file
diff --git a/esphome/icon.png b/esphome/icon.png
new file mode 100644
index 0000000..0c8fb60
Binary files /dev/null and b/esphome/icon.png differ
diff --git a/esphome/logo.png b/esphome/logo.png
new file mode 100644
index 0000000..b1cda93
Binary files /dev/null and b/esphome/logo.png differ
diff --git a/example/CHANGELOG.md b/example/CHANGELOG.md
new file mode 100644
index 0000000..ddc7beb
--- /dev/null
+++ b/example/CHANGELOG.md
@@ -0,0 +1,24 @@
+## What’s changed
+
+## 🐛 Bug fixes
+
+- Fix example script permissions @frenck (#75)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#60)
+- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#59)
+- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#61)
+- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#62)
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#63)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#64)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#65)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#66)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#67)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#69)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#68)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#70)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#71)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#72)
+- ⬆️ Upgrades add-on base image to v10.0.0 @frenck (#74)
+- ⬆️ Bump docker/login-action from 1.9.0 to 1.10.0 @dependabot (#73)
diff --git a/example/DOCS.md b/example/DOCS.md
new file mode 100644
index 0000000..7fb2399
--- /dev/null
+++ b/example/DOCS.md
@@ -0,0 +1,132 @@
+# Home Assistant Community Add-on: Example
+
+This is an example add-on for Home Assistant. When started, it displays a
+random quote every 5 seconds.
+
+It shows off several features and structures like:
+
+- Full blown GitHub repository.
+- General Dockerfile structure and setup.
+- The use of the `config.json` and `build.json` files.
+- General shell scripting structure (`run.sh`).
+- Quality assurance using CodeClimate.
+- Continuous integration and deployment using GitLab.
+- Usage of the Community Home Assistant Add-ons build environment.
+- Small use of the Bash function library in our base images.
+- The use of Docker label schema.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Example" add-on in the Supervisor add-on store and install it.
+1. Start the "Example" add-on.
+1. Check the logs of the "Example" add-on to see it in action.
+
+## Configuration
+
+Eventought this add-on is just an example add-on, it does come with some
+configuration options to play around with.
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+seconds_between_quotes: 5
+```
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the add-on and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `seconds_between_quotes`
+
+Sets the number of seconds between the output of each quote. The value
+must be between `1` and `120` seconds. This value is set to `5` seconds by
+default.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-example/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/repository-community-hass-io-add-ons/24705?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-example/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-example/releases
+[semver]: http://semver.org/spec/v2.0.0.html
diff --git a/example/README.md b/example/README.md
new file mode 100644
index 0000000..d913bd5
--- /dev/null
+++ b/example/README.md
@@ -0,0 +1,41 @@
+# Home Assistant Community Add-on: Example
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Example add-on by Community Home Assistant add-ons.
+
+## About
+
+This is an example add-on for Home Assistant. When started, it displays a
+random quote every 5 seconds.
+
+It shows off several features and structures like:
+
+- Full blown GitHub repository.
+- General Dockerfile structure and setup.
+- The use of the `config.json` and `build.json` files.
+- General shell scripting structure (`run.sh`).
+- Quality assurance using CodeClimate.
+- Continuous integration and deployment using GitLab.
+- Usage of the Community Home Assistant Add-ons build environment.
+- Small use of the Bash function library in our base images.
+- The use of Docker label schema.
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-example/tree/v4.2.0
\ No newline at end of file
diff --git a/example/config.json b/example/config.json
new file mode 100644
index 0000000..1da2318
--- /dev/null
+++ b/example/config.json
@@ -0,0 +1,24 @@
+{
+ "name": "Example",
+ "version": "4.2.0",
+ "slug": "example",
+ "description": "Example add-on by Community Home Assistant Add-ons",
+ "url": "https://github.com/hassio-addons/addon-example",
+ "init": false,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "options": {
+ "log_level": "info",
+ "seconds_between_quotes": 5
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)",
+ "seconds_between_quotes": "int(1,120)"
+ },
+ "image": "ghcr.io/hassio-addons/example/{arch}"
+}
\ No newline at end of file
diff --git a/example/icon.png b/example/icon.png
new file mode 100644
index 0000000..2b10fa1
Binary files /dev/null and b/example/icon.png differ
diff --git a/example/logo.png b/example/logo.png
new file mode 100644
index 0000000..106e5c2
Binary files /dev/null and b/example/logo.png differ
diff --git a/example/translations/de.yaml b/example/translations/de.yaml
new file mode 100644
index 0000000..204292c
--- /dev/null
+++ b/example/translations/de.yaml
@@ -0,0 +1,7 @@
+configuration:
+ log_level:
+ description: 'The amount of logging the add-on should do.'
+ name: 'Log level'
+ seconds_between_quotes:
+ description: 'The number of seconds the add-on waits until showing a new quote in the add-on log.'
+ name: 'Sekunden zwischen Zitaten'
diff --git a/example/translations/en.yaml b/example/translations/en.yaml
new file mode 100644
index 0000000..9737cc5
--- /dev/null
+++ b/example/translations/en.yaml
@@ -0,0 +1,10 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: The amount of logging the add-on should do.
+ seconds_between_quotes:
+ name: Seconds between quotes
+ description: >-
+ The number of seconds the add-on waits until showing a new quote in the
+ add-on log.
diff --git a/example/translations/nl.yaml b/example/translations/nl.yaml
new file mode 100644
index 0000000..f5f7d2e
--- /dev/null
+++ b/example/translations/nl.yaml
@@ -0,0 +1,7 @@
+configuration:
+ log_level:
+ description: 'Bepaalt het niveau van de logs die de add-on toont.'
+ name: 'Log niveau'
+ seconds_between_quotes:
+ description: 'The number of seconds the add-on waits until showing a new quote in the add-on log.'
+ name: 'Aantal seconden tussen de citaten'
diff --git a/git-exporter/CHANGELOG.md b/git-exporter/CHANGELOG.md
new file mode 100644
index 0000000..c8159db
--- /dev/null
+++ b/git-exporter/CHANGELOG.md
@@ -0,0 +1,134 @@
+## 1.10.1 - 2021-06-03
+
+* 📝 Add secrets corner case docs for secrets containing special regex chars. (thanks @fliphess)
+
+
+## 1.10.0 - 2021-05-08
+
+* 🐛 Don't encode GitHub Tokens
+* 🔼 Updated python3 to `3.8.10-r0`
+
+
+## 1.9.0 - 2021-04-02
+
+* 🔨 Use ghcr.io/home-assistant for base images
+
+
+## 1.8.0 - 2021-03-30
+
+* 🔨 URL encode git password to support special chars (see #219)
+* 🔼 Updated git to `2.30.2-r0`
+* 🔼 Updated python3 to `3.8.8-r0`
+
+
+## 1.7.1 - 2021-03-04
+
+* 🔼 Updated git to `2.30.1-r0`
+* 🔼 Updated python3 to `3.8.7-r1`
+
+
+## 1.7.0 - 2021-01-30
+
+* 🔼 Updated to alpine `3.13`
+* 🔼 Updated git to `2.30.0-r0`
+* 🔼 Updated rsync to `3.2.3-r1`
+* 🔼 Updated grep to `3.6-r0`
+* 🔼 Updated python3 to `3.8.7-r0`
+* 🔼 Updated py3-pip to `20.3.4-r0`
+* 🔼 Updated findutils to `4.8.0-r0`
+* 🔨 Use Jemalloc for better memory handling
+
+
+## 1.6.0 - 2021-01-06
+
+* 🔨 Add dummy mac and ip adresses as allowed
+* 🐛 Exclude also all Node-Red backup files
+
+
+## 1.5.0 - 2020-12-29
+
+* 🐛 Fixed addon config export (#135), thanks @LiJu09
+
+## 1.4.4 - 2020-10-22
+
+* 🔨 Disable S6-Overlay Init
+
+
+## 1.4.3 - 2020-10-06
+
+* 🔼 Updated python3 to `3.8.5-r0`
+
+
+## 1.4.2 - 2020-06-25
+
+* 🔼 Updated to alpine `3.12`
+* 🔼 Updated git to `2.26.2-r0`
+* 🔼 Updated make to `4.3-r0`
+* 🔼 Updated rsync to `3.1.3-r3`
+* 🔼 Updated grep to `3.4-r0`
+* 🔼 Updated sed to `4.8-r0`
+* 🔼 Updated python3 to `3.8.3-r0`
+* 🔼 Updated py3-pip to `20.1.1-re0`
+* 🔨 Added more default ignore patterns
+
+
+## 1.4.1 - 2020-05-22
+
+* 🔨 Updated Changelog to new format
+
+
+## 1.4.0 - 2020-05-20
+
+* ➕ Export addon repositories
+* 🔨 Changed config documentation
+* ➕ Add Node-Red check
+* ➕ Add commiter email option
+
+
+## 1.3.2 - 2020-04-29
+
+* 🔼 Updated git to `2.24.3-r0`
+
+
+## 1.3.1 - 2020-04-16
+
+* 🔼 Updated git to `2.24.2-r0`
+
+
+## 1.3.0 - 2020-04-06
+
+* ➕ Add export support for node-red
+
+
+## 1.2.1 - 2020-03-30
+
+* ➕ Add findutils at version `4.7.0-r0`
+* 🐛 Fixed lovelace export
+* 🔨 Get the addon information from bashio instead of self-requesting
+* ➖ Removed `curl`
+
+
+## 1.2.0 - 2020-03-29
+
+* 🔨 Changed json2yaml conversion to own little script
+* 🔼 Updated py3-yaml ot `5.3.1-r0`
+* 🐛 Fixed permanent dry_run bug
+
+
+## 1.1.0 - 2020-03-18
+
+* ➕ Dry run toogle to just display the changes.
+* ➕ Adjusted to the multiple lovelace interfaces
+* 🔼 Updated to python `3.8.2-r0`
+
+
+## 1.0 - 2020-02-21
+
+* ➕ Started git exporter addon with basic git push functionality
+* ➕ Added excludes in config
+* ➕ Lovelace exports
+* ➕ Addons config exports
+* ➕ ESPHome exports
+* ➕ Configurable Commit message
+* ➕ Configurable exports
+
diff --git a/git-exporter/DOCS.md b/git-exporter/DOCS.md
new file mode 100644
index 0000000..2f20381
--- /dev/null
+++ b/git-exporter/DOCS.md
@@ -0,0 +1,106 @@
+# Configuration
+
+```yaml
+repository:
+ url:
+ username: user
+ password: pass
+ pull_before_push: true
+ commit_message: 'Home Assistant Git Exporter'
+export:
+ lovelace: true
+ addons: true
+ esphome: true
+ node_red: true
+checks:
+ enabled: true
+ check_for_secrets: true
+ check_for_ips: true
+exclude:
+ - '*.db'
+ - '*.log'
+ - __pycache__
+ - deps/
+ - known_devices.yaml
+ - tts/
+dry_run: false
+```
+
+### `repository.url`
+
+Any https url to your git repository. (For now _no_ SSH)
+
+### `repository.email` (Optional)
+
+The email address the commits author is using.
+
+### `repository.username`
+
+Your username for https authentication.
+
+### `repository.password`
+
+Your password or __access token__ for your repository.
+
+### `repository.pull_before_push`
+
+Should the repository be pulled first and commit the new state on top?
+
+### `repository.commit_message`
+
+The commit message for the next commit.
+
+
+### `export.lovelace`
+
+Enable / Disable the export for the lovelace config.
+
+### `export.addons`
+
+Enable / Disable the export for the supervisor addons config.
+
+### `export.esphome`
+
+Enable / Disable the export for the esphome config.
+
+### `export.node_red`
+
+Enable / Disable the export for the Node-RED flows.
+Secure your credentials with [node-red-contrib-credentials](https://flows.nodered.org/node/node-red-contrib-credentials).
+
+
+### `checks.enabled`
+
+Enable / Disable the checks in the exported files.
+
+### `checks.check_for_secrets`
+
+Add your secret values to the check.
+
+### `checks.check_for_ips`
+
+Add pattern for ip and mac addresses to the search.
+
+
+### `exclude`
+
+The files / folders which should be excluded from the config export.
+
+Following folders and files are excluded from the sync per default:
+
+* `secrets.yaml` (secrets are cleared)
+* `.cloud`
+* `.storage`
+
+### `dry_run`
+
+Only show the changes and don't commit or push.
+
+
+## Known limitations
+
+`check_for_secrets` Uses a git plugin that does pattern matching using regexes.
+A limitation of this plugin is that using brackets (like `[`, `]`, `{`, `}` `(` and `)`) in secrets can result in unexpected behaviour and crashes.
+
+If the addon fails during secrets checking with errors originating from grep (I.E. `grep: Unmatched [, [^, [:, [., or [=`),
+change the passwords that contain brackets or set `check_for_secrets` to `false`.
diff --git a/git-exporter/Dockerfile b/git-exporter/Dockerfile
new file mode 100644
index 0000000..75d648d
--- /dev/null
+++ b/git-exporter/Dockerfile
@@ -0,0 +1,31 @@
+ARG BUILD_FROM
+FROM $BUILD_FROM AS BUILD
+
+RUN apk add --no-cache \
+ 'git=2.30.2-r0' \
+ 'make=4.3-r0'
+
+ENV GIT_SECRET_VERSION 1.3.0
+# hadolint ignore=DL3003
+RUN git config --global advice.detachedHead false && \
+ git clone https://github.com/awslabs/git-secrets.git -b ${GIT_SECRET_VERSION} /git-secrets && \
+ cd /git-secrets && make install
+
+FROM $BUILD_FROM AS RUNNING
+
+RUN apk add --no-cache \
+ 'git=2.30.2-r0' \
+ 'rsync=3.2.3-r1' \
+ 'grep=3.6-r0' \
+ 'sed=4.8-r0' \
+ 'python3=3.8.10-r0' \
+ 'py3-pip=20.3.4-r0' \
+ 'findutils=4.8.0-r0'
+
+RUN pip3 install --no-cache-dir PyYAML==5.3.1 dotty-dict==1.2.1
+
+COPY --from=BUILD /usr/local/bin/git-secrets /usr/local/bin/git-secrets
+
+COPY root /
+RUN chmod a+x /run.sh /utils/*
+ENTRYPOINT [ "/run.sh" ]
\ No newline at end of file
diff --git a/git-exporter/README.md b/git-exporter/README.md
new file mode 100644
index 0000000..1f3a903
--- /dev/null
+++ b/git-exporter/README.md
@@ -0,0 +1,53 @@
+# Home Assistant Git Exporter
+
+Export all of your Home Assistant configuration to a git repository of your choice.
+Can be used to show your Home Assistant setup in public repositories.
+
+![Addon Stage][stage-badge]
+![Supports aarch64 Architecture][aarch64-badge]
+![Supports amd64 Architecture][amd64-badge]
+![Supports armhf Architecture][armhf-badge]
+![Supports armv7 Architecture][armv7-badge]
+![Supports i386 Architecture][i386-badge]
+
+[![Install on my Home Assistant][install-badge]][install-url]
+[![Donate][donation-badge]][donation-url]
+
+# Functionality
+
+* Export Home Assistant configuration
+* Export Supervisor Addon configuration
+* Export Lovelace configuration
+* Export ESPHome configurations
+* Export Node-RED flows
+* Check for plaintext secrets based on your `secrets.yaml` file and common patterns.
+* Check for plaintext ip and addresses in your config.
+
+# Example
+
+For an example take a look at my own [Home Assistant configuration](https://github.com/Poeschl/home-assistant-config).
+The folders there are gettings synced with this addon.
+
+
+# Badge
+
+If you export your config with this addon and want to help me to spread it further. Here is a badge you can embedd in your readme.
+
+[](https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter)
+
+```markdown
+[](https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter)
+```
+
+
+[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge
+[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
+[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge
+[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge
+[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge
+[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_git-exporter
+[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge
+
+[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge
+[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white
+[donation-url]: https://www.buymeacoffee.com/Poeschl
diff --git a/git-exporter/build.json b/git-exporter/build.json
new file mode 100644
index 0000000..4ceab93
--- /dev/null
+++ b/git-exporter/build.json
@@ -0,0 +1,9 @@
+{
+ "build_from": {
+ "armhf": "ghcr.io/home-assistant/armhf-base:3.13",
+ "armv7": "ghcr.io/home-assistant/armv7-base:3.13",
+ "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13",
+ "amd64": "ghcr.io/home-assistant/amd64-base:3.13",
+ "i386": "ghcr.io/home-assistant/i386-base:3.13"
+ }
+}
diff --git a/git-exporter/config.json b/git-exporter/config.json
new file mode 100644
index 0000000..4864743
--- /dev/null
+++ b/git-exporter/config.json
@@ -0,0 +1,75 @@
+
+{
+ "name": "Home Assistant Git Exporter",
+ "version": "1.10.1",
+ "slug": "git-exporter",
+ "description": "Export all of your Home Assistant configuration to a git repository of your choice.",
+ "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter",
+ "arch": [
+ "armhf",
+ "armv7",
+ "aarch64",
+ "amd64",
+ "i386"
+ ],
+ "startup": "once",
+ "boot": "manual",
+ "image": "ghcr.io/poeschl/ha-git-exporter-{arch}",
+ "hassio_api": true,
+ "hassio_role": "manager",
+ "map": ["config"],
+ "options": {
+ "repository": {
+ "url": "",
+ "username": "",
+ "password": "",
+ "pull_before_push": true,
+ "commit_message": "Home Assistant Git Exporter"
+ },
+ "export": {
+ "lovelace": true,
+ "addons": true,
+ "esphome": true,
+ "node_red": true
+ },
+ "check": {
+ "enabled": true,
+ "check_for_secrets": true,
+ "check_for_ips": true
+ },
+ "exclude": [
+ "*.db",
+ "*.log",
+ "__pycache__",
+ "._*",
+ ".DS_Store",
+ "deps/",
+ "known_devices.yaml",
+ "tts/"
+ ],
+ "dry_run": false
+ },
+ "schema": {
+ "repository": {
+ "url": "match(https://.*)",
+ "email": "match(.+@.+)?",
+ "username": "str",
+ "password": "password",
+ "pull_before_push": "bool",
+ "commit_message": "str"
+ },
+ "export": {
+ "lovelace": "bool",
+ "addons": "bool",
+ "esphome": "bool",
+ "node_red": "bool"
+ },
+ "check": {
+ "enabled": "bool",
+ "check_for_secrets": "bool",
+ "check_for_ips": "bool"
+ },
+ "exclude": ["str"],
+ "dry_run": "bool"
+ }
+}
diff --git a/git-exporter/icon.png b/git-exporter/icon.png
new file mode 100644
index 0000000..a97dd54
Binary files /dev/null and b/git-exporter/icon.png differ
diff --git a/git-exporter/logo.png b/git-exporter/logo.png
new file mode 100644
index 0000000..d9efb8e
Binary files /dev/null and b/git-exporter/logo.png differ
diff --git a/git-exporter/root/run.sh b/git-exporter/root/run.sh
new file mode 100644
index 0000000..7618fec
--- /dev/null
+++ b/git-exporter/root/run.sh
@@ -0,0 +1,196 @@
+#!/usr/bin/env bashio
+set -e
+
+# Enable Jemalloc for better memory handling
+export LD_PRELOAD="/usr/local/lib/libjemalloc.so.2"
+
+local_repository='/data/repository'
+pull_before_push="$(bashio::config 'repository.pull_before_push')"
+
+function setup_git {
+ repository=$(bashio::config 'repository.url')
+ username=$(bashio::config 'repository.username')
+ password=$(bashio::config 'repository.password')
+ commiter_mail=$(bashio::config 'repository.email')
+
+ if [[ "$password" != "ghp_*" ]]; then
+ password=$(python3 -c "import urllib.parse; print(urllib.parse.quote('${password}'))")
+ fi
+
+ if [ ! -d $local_repository ]; then
+ bashio::log.info 'Create local repository'
+ mkdir -p $local_repository
+ fi
+ cd $local_repository
+
+ if [ ! -d .git ]; then
+ fullurl="https://${username}:${password}@${repository##*https://}"
+ if [ "$pull_before_push" == 'true' ]; then
+ bashio::log.info 'Clone existing repository'
+ git clone "$fullurl" $local_repository
+ else
+ bashio::log.info 'Initialize new repository'
+ git init $local_repository
+ git remote add origin "$fullurl"
+ fi
+ git config user.name "${username}"
+ git config user.email "${commiter_mail:-git.exporter@home-assistant}"
+ fi
+
+ #Reset secrets if existing
+ git config --unset-all 'secrets.allowed' || true
+ git config --unset-all 'secrets.patterns' || true
+ git config --unset-all 'secrets.providers' || true
+
+ if [ "$pull_before_push" == 'true' ]; then
+ bashio::log.info 'Pull latest'
+ git fetch
+ git reset --hard origin/master
+ fi
+}
+
+function check_secrets {
+ bashio::log.info 'Add secrets pattern'
+
+ # Allow !secret lines
+ git secrets --add -a '!secret'
+
+ # Set prohibited patterns
+ git secrets --add "password:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "token:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "client_id:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "api_key:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "chat_id:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "allowed_chat_ids:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "latitude:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "longitude:\s?[\'\"]?\w+[\'\"]?\n?"
+ git secrets --add "credential_secret:\s?[\'\"]?\w+[\'\"]?\n?"
+
+ if [ "$(bashio::config 'check.check_for_secrets')" == 'true' ]; then
+ git secrets --add-provider -- sed '/^$/d;/^#.*/d;/^&/d;s/^.*://g;s/\s//g' /config/secrets.yaml
+ fi
+
+ if [ "$(bashio::config 'check.check_for_ips')" == 'true' ]; then
+ git secrets --add '([0-9]{1,3}\.){3}[0-9]{1,3}'
+ git secrets --add '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})'
+
+ # Allow dummy / general ips and mac
+ git secrets --add -a 'AA:BB:CC:DD:EE:FF'
+ git secrets --add -a '123.456.789.123'
+ git secrets --add -a '0.0.0.0'
+ fi
+
+ bashio::log.info 'Add secrets from secrets.yaml'
+ prohibited_patterns=$(git config --get-all secrets.patterns)
+ bashio::log.info "Prohibited patterns:\n${prohibited_patterns//\\n/\\\\n}"
+
+ bashio::log.info 'Checking for secrets'
+ # shellcheck disable=SC2046
+ git secrets --scan $(find $local_repository -name '*.yaml' -o -name '*.yml' -o -name '*.json' -o -name '*.disabled') \
+ || (bashio::log.error 'Found secrets in files!!! Fix them to be able to commit!' && exit 1)
+}
+
+function export_ha_config {
+ bashio::log.info 'Get Home Assistant config'
+ excludes=$(bashio::config 'exclude')
+ excludes=("secrets.yaml" ".storage" ".cloud" "esphome/" ".uuid" "node-red/" "${excludes[@]}")
+
+ # Cleanup existing esphome folder from config
+ [ -d "${local_repository}/config/esphome" ] && rm -r "${local_repository}/config/esphome"
+ # shellcheck disable=SC2068
+ exclude_args=$(printf -- '--exclude=%s ' ${excludes[@]})
+ # shellcheck disable=SC2086
+ rsync -archive --compress --delete --checksum --prune-empty-dirs -q --include='.gitignore' $exclude_args /config ${local_repository}
+ sed 's/:.*$/: ""/g' /config/secrets.yaml > ${local_repository}/config/secrets.yaml
+ chmod 644 -R ${local_repository}/config
+}
+
+function export_lovelace {
+ bashio::log.info 'Get Lovelace config yaml'
+ [ ! -d "${local_repository}/lovelace" ] && mkdir "${local_repository}/lovelace"
+ mkdir -p '/tmp/lovelace'
+ find /config/.storage -name "lovelace*" -printf '%f\n' | xargs -I % cp /config/.storage/% /tmp/lovelace/%.json
+ /utils/jsonToYaml.py '/tmp/lovelace/' 'data'
+ rsync -archive --compress --delete --checksum --prune-empty-dirs -q --include='*.yaml' --exclude='*' /tmp/lovelace/ "${local_repository}/lovelace"
+ chmod 644 -R "${local_repository}/lovelace"
+}
+
+function export_esphome {
+ bashio::log.info 'Get ESPHome configs'
+ rsync -archive --compress --delete --checksum --prune-empty-dirs -q \
+ --exclude='.esphome*' --include='*/' --include='.gitignore' --include='*.yaml' --include='*.disabled' --exclude='secrets.yaml' --exclude='*' \
+ /config/esphome ${local_repository}
+ [ -f /config/esphome/secrets.yaml ] && sed 's/:.*$/: ""/g' /config/esphome/secrets.yaml > ${local_repository}/esphome/secrets.yaml
+ chmod 644 -R ${local_repository}/esphome
+}
+
+function export_addons {
+ [ -d ${local_repository}/addons ] || mkdir -p ${local_repository}/addons
+ installed_addons=$(bashio::addons.installed)
+ mkdir '/tmp/addons/'
+ for addon in $installed_addons; do
+ if [ "$(bashio::addons.installed "${addon}")" == 'true' ]; then
+ bashio::log.info "Get ${addon} configs"
+ bashio::addon.options "$addon" > /tmp/tmp.json
+ /utils/jsonToYaml.py /tmp/tmp.json
+ mv /tmp/tmp.yaml "/tmp/addons/${addon}.yaml"
+ fi
+ done
+ bashio::log.info "Get addon repositories"
+ bashio::addons false 'addons.repositorys' '.repositories | map(select(.source != null)) | map({(.name): {source,maintainer,slug}}) | add' > /tmp/tmp.json
+ /utils/jsonToYaml.py /tmp/tmp.json
+ mv /tmp/tmp.yaml "/tmp/addons/repositories.yaml"
+ rsync -archive --compress --delete --checksum --prune-empty-dirs -q /tmp/addons/ ${local_repository}/addons
+ chmod 644 -R ${local_repository}/addons
+}
+
+function export_node-red {
+ bashio::log.info 'Get Node-RED flows'
+ rsync -archive --compress --delete --checksum --prune-empty-dirs -q \
+ --exclude='flows_cred.json' --exclude='*.backup' --include='flows.json' --include='settings.js' --exclude='*' \
+ /config/node-red/ ${local_repository}/node-red
+ chmod 644 -R ${local_repository}/node-red
+}
+
+bashio::log.info 'Start git export'
+
+setup_git
+
+export_ha_config
+
+if [ "$(bashio::config 'export.lovelace')" == 'true' ]; then
+ export_lovelace
+fi
+
+if [ "$(bashio::config 'export.esphome')" == 'true' ] && [ -d '/config/esphome' ]; then
+ export_esphome
+fi
+
+if [ "$(bashio::config 'export.addons')" == 'true' ]; then
+ export_addons
+fi
+
+if [ "$(bashio::config 'export.node_red')" == 'true' ] && [ -d '/config/node-red' ]; then
+ export_node-red
+fi
+
+if [ "$(bashio::config 'check.enabled')" == 'true' ]; then
+ check_secrets
+fi
+
+
+if [ "$(bashio::config 'dry_run')" == 'true' ]; then
+ git status
+else
+ bashio::log.info 'Commit changes and push to remote'
+ git add .
+ git commit -m "$(bashio::config 'repository.commit_message')"
+
+ if [ ! "$pull_before_push" == 'true' ]; then
+ git push --set-upstream origin master -f
+ else
+ git push origin
+ fi
+fi
+
+bashio::log.info 'Exporter finished'
diff --git a/git-exporter/root/utils/jsonToYaml.py b/git-exporter/root/utils/jsonToYaml.py
new file mode 100644
index 0000000..a297fcc
--- /dev/null
+++ b/git-exporter/root/utils/jsonToYaml.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+import json
+import sys
+import os
+import yaml
+from dotty_dict import dotty
+
+def convert_file(file, path):
+ yaml_file_name = os.path.splitext(file)[0] + ".yaml"
+ #print (file + ' -> ' + yaml_file_name)
+ with open(file, 'r') as infile:
+ with open(yaml_file_name, 'w+') as outfile:
+ if path is not None:
+ data = dotty(json.load(infile)).get(path)
+ else:
+ data = json.load(infile)
+
+ yaml.dump(data, outfile, default_flow_style=False)
+
+input_file = sys.argv[1]
+if len(sys.argv) > 2:
+ path = sys.argv[2]
+else:
+ path = None
+
+if os.path.isfile(input_file):
+ convert_file(input_file, path)
+else:
+ #print ('Convert folder ' + input_file)
+ for json_file in os.listdir(input_file):
+ convert_file(os.path.dirname(input_file) + '/' + json_file, path)
diff --git a/glances/CHANGELOG.md b/glances/CHANGELOG.md
new file mode 100644
index 0000000..9654fa4
--- /dev/null
+++ b/glances/CHANGELOG.md
@@ -0,0 +1,19 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Upgrades python3 to 3.8.10-r0 @frenck (#149)
+- ⬆️ Bump zeroconf from 0.29.0 to 0.30.0 in /glances @dependabot (#148)
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#150)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#151)
+- ⬆️ Bump zeroconf from 0.30.0 to 0.31.0 in /glances @dependabot (#153)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#152)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#154)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#155)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#156)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#157)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#158)
+- ⬆️ Upgrades add-on base image to v9.2.1 @frenck (#159)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#160)
+- ⬆️ Bump netifaces from 0.10.9 to 0.11.0 in /glances @dependabot (#161)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#163)
diff --git a/glances/DOCS.md b/glances/DOCS.md
new file mode 100644
index 0000000..99756c0
--- /dev/null
+++ b/glances/DOCS.md
@@ -0,0 +1,236 @@
+# Home Assistant Community Add-on: Glances
+
+Glances is a cross-platform monitoring tool which aims to present a maximum of
+information in a minimum of space through a Web-based interface.
+
+Glances can export all system statistics to InfluxDB, allowing you to look
+at all your system information and its behavior over time.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Glances" add-on in the Supervisor add-on store
+ and install it.
+1. Disable "Protection mode" in the add-on panel.
+1. Start the "Glances" add-on.
+1. Check the logs of the "Glances" to see if everything went well.
+1. Click the "OPEN WEB UI" button take a glance at Glances.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+process_info: false
+refresh_time: 10
+ssl: false
+certfile: fullchain.pem
+keyfile: privkey.pem
+influxdb:
+ enabled: false
+ host: a0d7b954-influxdb
+ port: 8086
+ username: glances
+ password: "!secret glances_influxdb_password"
+ database: glances
+ prefix: localhost
+ interval: 60
+ ssl: false
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `process_info`
+
+If set to `true`, it will enable the process module of Glances and gives
+detailed insight into each individual process running on the system.
+
+**Note**: _Enabling this feature will increase CPU usage significantly._
+
+### Options: `refresh_time`
+
+Sets refresh time (in seconds).
+
+**Note**: _Refreshing more quickly will result in a higher CPU usage._
+
+### Option: `ssl`
+
+Enables/Disables SSL (HTTPS) on the Glances Web UI. Set it `true` to enable it,
+`false` otherwise.
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option group `influxdb`
+
+---
+
+The following options are for the option group: `influxdb`. These settings
+only apply to the Glances InfluxDB data export.
+
+#### Option `influxdb`: `enabled`
+
+Enables/Disables the Glances data export to InfluxDB.
+
+#### Option `influxdb`: `host`
+
+The hostname where InfluxDB is running.
+
+**Note**: _If you are using the Community InfluxDB add-on,
+use `a0d7b954-influxdb` as the hostname._
+
+#### Option `influxdb`: `port`
+
+The port on which InfluxDB is listening.
+
+#### Option `influxdb`: `username`
+
+The username that you have created for Glances to authenticate against
+InfluxDB.
+
+#### Option `influxdb`: `password`
+
+The password for the above username option.
+
+#### Option `influxdb`: `database`
+
+The name of the database to store all Glances information into.
+
+**Note**: _It is strongly recommended to create a separate database for glances
+and not store this in the same database name as Home Assistant._
+
+#### Option `prefix`: `localhost`
+
+The hostname to append for exported data.
+
+**Note**: _For the Grafana Glances dashboard set this to `localhost`._
+
+#### Option `influxdb`: `interval`
+
+Defines the interval (in seconds) on how often Glances exports data to InfluxDB.
+
+#### Option `influxdb`: `ssl`
+
+Adding this option will allow SSL to be used on the InfluxDB connection. If not
+set will default to `false` which is the required setting for the Community
+InfluxDB add-on.
+
+## Adding Glances as a sensor into Home Assistant
+
+The Home Assistant Glances sensor platform is consuming the system information
+provided by the Glances API.
+
+This enables one to track and display their stats in Home Assistant,
+and even build automations based on that data.
+
+Set up the integration through **Configuration -> Integrations -> Glances**.
+
+**Note**: _Once the add-on is running, add the integration with all
+defaults, except for port, which should be 61209_
+
+More information about the Glances sensor platform can be found in the
+Home Assistant documentation:
+
+
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2019-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-glances/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-glances/97102?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-glances/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-glances/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/glances/README.md b/glances/README.md
new file mode 100644
index 0000000..d9230b5
--- /dev/null
+++ b/glances/README.md
@@ -0,0 +1,35 @@
+# Home Assistant Community Add-on: Glances
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Glances is a cross-platform system monitoring tool written in Python.
+
+## About
+
+Glances is a cross-platform monitoring tool which aims to present a maximum of
+information in a minimum of space through a Web-based interface.
+
+Glances can export all system statistics to InfluxDB, allowing you to look
+at all your system information and its behavior over time.
+
+![Glances screenshot][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-glances/97102?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.12.2-blue.svg
+[release]: https://github.com/hassio-addons/addon-glances/tree/v0.12.2
+[screenshot]: https://github.com/hassio-addons/addon-glances/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/glances/config.json b/glances/config.json
new file mode 100644
index 0000000..8159798
--- /dev/null
+++ b/glances/config.json
@@ -0,0 +1,81 @@
+{
+ "name": "Glances",
+ "version": "0.12.2",
+ "slug": "glances",
+ "description": "A cross-platform system monitoring tool",
+ "url": "https://github.com/hassio-addons/addon-glances",
+ "ingress": true,
+ "ingress_port": 0,
+ "panel_icon": "mdi:speedometer",
+ "startup": "services",
+ "homeassistant": "0.92.0b2",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "ports": {
+ "80/tcp": null
+ },
+ "ports_description": {
+ "80/tcp": "Web interface (Not required for Ingress)"
+ },
+ "map": [
+ "addons",
+ "backup",
+ "config:rw",
+ "share",
+ "ssl",
+ "media"
+ ],
+ "hassio_api": true,
+ "auth_api": true,
+ "docker_api": true,
+ "host_network": true,
+ "host_pid": true,
+ "apparmor": false,
+ "options": {
+ "log_level": "info",
+ "process_info": false,
+ "refresh_time": 10,
+ "ssl": false,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "influxdb": {
+ "enabled": false,
+ "host": "a0d7b954-influxdb",
+ "port": 8086,
+ "username": "glances",
+ "password": "",
+ "database": "glances",
+ "prefix": "localhost",
+ "interval": 60
+ }
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)",
+ "process_info": "bool",
+ "refresh_time": "int",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "influxdb": {
+ "enabled": "bool",
+ "host": "str",
+ "port": "port",
+ "username": "str",
+ "password": "password",
+ "database": "str",
+ "prefix": "str",
+ "interval": "int",
+ "ssl": "bool?"
+ },
+ "leave_front_door_open": "bool?"
+ },
+ "environment": {
+ "LOG_FORMAT": "{LEVEL}: {MESSAGE}"
+ },
+ "image": "ghcr.io/hassio-addons/glances/{arch}"
+}
\ No newline at end of file
diff --git a/glances/icon.png b/glances/icon.png
new file mode 100644
index 0000000..a4fe9cd
Binary files /dev/null and b/glances/icon.png differ
diff --git a/glances/logo.png b/glances/logo.png
new file mode 100644
index 0000000..3288f59
Binary files /dev/null and b/glances/logo.png differ
diff --git a/grafana/CHANGELOG.md b/grafana/CHANGELOG.md
new file mode 100644
index 0000000..3f62a5a
--- /dev/null
+++ b/grafana/CHANGELOG.md
@@ -0,0 +1,5 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Upgrades Grafana to v8.0.2 @frenck (#172)
diff --git a/grafana/DOCS.md b/grafana/DOCS.md
new file mode 100644
index 0000000..3b7639b
--- /dev/null
+++ b/grafana/DOCS.md
@@ -0,0 +1,215 @@
+# Home Assistant Community Add-on: Grafana
+
+The analytics platform for all your metrics.
+
+Grafana allows you to query, visualize, alert on and understand your metrics
+no matter where they are stored. Create, explore, and share dashboards. Learn
+about your Home Automation system using sexy and compelling graphs, and other
+data visualizations.
+
+Combine this add-on with the InfluxDB add-on to get insanely powerful
+insights to your home.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Grafana" add-on in the Supervisor add-on store.
+1. Install the "Grafana" add-on.
+1. Start the "Grafana" add-on.
+1. Check the logs of the "Grafana" to see if everything went well.
+1. Open the Web UI.
+
+**Note**: As the addon now supports both Ingress and direct access, the default
+`admin` user has a password of `hassio`. **Due to the implementation the
+password cannot be changed, however you can delete and create a new user, if so
+please ensure to update the `grafana_ingress_user` option.**
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+grafana_ingress_user: frenck
+plugins:
+ - ayoungprogrammer-finance-datasource
+ - grafana-clock-panel
+env_vars:
+ - name: GF_DEFAULT_INSTANCE_NAME
+ value: Hassio
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `grafana_ingress_user`
+
+When using Ingress grafana will automatically log in by default with a username
+of `admin`. If a different user is required this option can be set.
+
+### Option: `plugins`
+
+Allows you to specify additional Grafana plugins to be installed to your
+Grafana setup. For a list of available plugins, see:
+
+
+
+**Note**: _Adding plugins will result in a longer start-up for the add-on._
+
+### Option: `env_vars`
+
+This option allows you to tweak every aspect of Grafana by setting
+configuration options using environment variables. See the example at the
+start of this chapter to get an idea of how the configuration looks.
+
+For more information about using these variables, see the official Grafana
+documentation:
+
+
+
+**Note**: _Only environment variables starting with `GF_` are accepted.\_
+
+## Using it with the InfluxDB Community add-on
+
+Grafana does not come out of the box pre-configured, but letting it interact
+with the community [InfluxDB add-on][influxdb-addon] is pretty easy. Please,
+follow the instructions from the on how to [create a database][create-db]
+for Home Assistant.
+
+1. Create a new user for Grafana on InfluxDB
+ (InfluxDB Admin -> Users and "+ Create User")
+1. Login into Grafana
+1. Create a new datasource:
+
+- Name: Anything you want, e.g., Home Assistant
+- Type: InfluxDB
+- HTTP > URL: `http://a0d7b954-influxdb:8086`
+- HTTP > Access: Server (Default)
+- Auth: (leave them all disabled)
+- InfluxDB Details > Database: _Your Home Assistant InfluxDB database_,
+ e.g., `homeassistant`
+- InfluxDB Details > User: _Grafana InfluxDB username defined in step 1_
+- InfluxDB Details > Password: _Grafana InfluxDB user password defined_
+ _in step 1_
+
+1. Hit Save & Test
+
+## Anonymous Access
+
+Anonymous access on a local network is possible by exposing the port in the
+add-on configuration, along with setting the following environment variables:
+
+```yaml
+env_vars:
+ - name: GF_AUTH_ANONYMOUS_ENABLED
+ value: "true"
+ - name: GF_AUTH_ANONYMOUS_ORG_NAME
+ value: "Main Org."
+ - name: GF_AUTH_ANONYMOUS_ORG_ROLE
+ value: "Viewer"
+```
+
+It is not possible to enable anonymous or non-administrator access with Home
+Assistant Cloud. This includes embedding Grafana resources with an iframe or
+rendered image inside of a dashboard. For more details see
+[Anonymous login not working, Grafana add-on 3.0.0 #55](https://github.com/hassio-addons/addon-grafana/issues/55).
+
+## Known issues and limitations
+
+- This add-on does support ARM-based devices, nevertheless, they must
+ at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported).
+- `To render a panel image, you must install the Grafana Image Renderer plugin.`
+ This message is shown on ARM devices, like a Raspberry Pi. The Grafana Image
+ Renderer plugin is not available for these devices.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-grafana/graphs/contributors
+[create-db]: https://github.com/hassio-addons/addon-influxdb/blob/main/influxdb/DOCS.md#integrating-into-home-assistant
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-grafana/54674?u=frenck
+[frenck]: https://github.com/frenck
+[influxdb-addon]: https://github.com/hassio-addons/addon-influxdb
+[issue]: https://github.com/hassio-addons/addon-grafana/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-grafana/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/grafana/README.md b/grafana/README.md
new file mode 100644
index 0000000..6497504
--- /dev/null
+++ b/grafana/README.md
@@ -0,0 +1,39 @@
+# Home Assistant Community Add-on: Grafana
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+The open platform for beautiful analytics and monitoring.
+
+## About
+
+The analytics platform for all your metrics.
+
+Grafana allows you to query, visualize, alert on and understand your metrics
+no matter where they are stored. Create, explore, and share dashboards. Learn
+about your Home Automation system using sexy and compelling graphs, and other
+data visualizations.
+
+Combine this add-on with the InfluxDB add-on to get insanely powerful
+insights to your home.
+
+![Grafana in the Home Assistant Frontend][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-grafana/54674?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v7.0.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-grafana/tree/v7.0.1
+[screenshot]: https://github.com/hassio-addons/addon-grafana/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/grafana/config.json b/grafana/config.json
new file mode 100644
index 0000000..dce42ed
--- /dev/null
+++ b/grafana/config.json
@@ -0,0 +1,52 @@
+{
+ "name": "Grafana",
+ "version": "7.0.1",
+ "slug": "grafana",
+ "description": "The open platform for beautiful analytics and monitoring",
+ "url": "https://github.com/hassio-addons/addon-grafana",
+ "startup": "services",
+ "ingress": true,
+ "ingress_port": 1337,
+ "panel_icon": "mdi:chart-timeline",
+ "panel_title": "Grafana",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7"
+ ],
+ "map": [
+ "config",
+ "ssl"
+ ],
+ "watchdog": "http://[HOST]:1337/api/health",
+ "options": {
+ "plugins": [],
+ "env_vars": [],
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem"
+ },
+ "ports": {
+ "80/tcp": null
+ },
+ "ports_description": {
+ "80/tcp": "Not required for Ingress"
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "plugins": [
+ "str"
+ ],
+ "certfile": "str",
+ "keyfile": "str",
+ "ssl": "bool",
+ "grafana_ingress_user": "str?",
+ "env_vars": [
+ {
+ "name": "match(^GF_([A-Z0-9_])+$)",
+ "value": "str"
+ }
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/grafana/{arch}"
+}
\ No newline at end of file
diff --git a/grafana/icon.png b/grafana/icon.png
new file mode 100644
index 0000000..e9dff3b
Binary files /dev/null and b/grafana/icon.png differ
diff --git a/grafana/logo.png b/grafana/logo.png
new file mode 100644
index 0000000..081dfb3
Binary files /dev/null and b/grafana/logo.png differ
diff --git a/influxdb/CHANGELOG.md b/influxdb/CHANGELOG.md
new file mode 100644
index 0000000..e238a6f
--- /dev/null
+++ b/influxdb/CHANGELOG.md
@@ -0,0 +1,8 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#167)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#168)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#169)
+- ⬆️ Upgrades InfluxDB to 1.8.6 @frenck (#170)
diff --git a/influxdb/DOCS.md b/influxdb/DOCS.md
new file mode 100644
index 0000000..7ca434e
--- /dev/null
+++ b/influxdb/DOCS.md
@@ -0,0 +1,234 @@
+# Home Assistant Community Add-on: InfluxDB
+
+InfluxDB is an open source time series database optimized for high-write-volume.
+It's useful for recording metrics, sensor data, events,
+and performing analytics. It exposes an HTTP API for client interaction and is
+often used in combination with Grafana to visualize the data.
+
+This add-on comes with Chronograf & Kapacitor pre-installed as well. Which
+gives you a nice InfluxDB admin interface for managing your users, databases,
+data retention settings, and lets you peek inside the database using the
+Data Explorer.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "InfluxDB" add-on in the Supervisor add-on store and install it.
+1. Start the "InfluxDB" add-on.
+1. Check the logs of the "InfluxDB" to see if everything went well.
+1. Click the "OPEN WEB UI" button!
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+auth: true
+reporting: true
+ssl: true
+certfile: fullchain.pem
+keyfile: privkey.pem
+envvars:
+ - name: INFLUXDB_HTTP_LOG_ENABLED
+ value: "true"
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `auth`
+
+Enable or disable InfluxDB user authentication.
+
+**Note**: _Turning this off is NOT recommended!_
+
+### Option: `reporting`
+
+This option allows you to disable the reporting of usage data to InfluxData.
+
+**Note**: _No data from user databases is ever transmitted!_
+
+### Option: `ssl`
+
+Enables/Disables SSL (HTTPS) on the web interface.
+Set it `true` to enable it, `false` otherwise.
+
+**Note**: _This does NOT activate SSL for InfluxDB, just the web interface_
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `envvars`
+
+This allows the setting of Environment Variables to control InfluxDB
+configuration as documented at:
+
+
+
+**Note**: _Changing these options can possibly cause issues with you instance.
+USE AT YOUR OWN RISK!_
+
+These are case sensitive.
+
+#### Sub-option: `name`
+
+The name of the environment variable to set which must start with `INFLUXDB_`
+
+#### Sub-option: `value`
+
+The value of the environment variable to set, set the Influx documentation for
+full details. Values should always be entered as a string (even true/false values).
+
+### Option: `leave_front_door_open`
+
+Adding this option to the add-on configuration allows you to disable
+authentication on the Web Terminal by setting it to `true` and leaving the
+username and password empty.
+
+**Note**: _We STRONGLY suggest, not to use this, even if this add-on is
+only exposed to your internal network. USE AT YOUR OWN RISK!_
+
+## Integrating into Home Assistant
+
+The `influxdb` integration of Home Assistant makes it possible to transfer all
+state changes to an InfluxDB database.
+
+You need to do the following steps in order to get this working:
+
+- Click on "OPEN WEB UI" to open the admin web-interface provided by this add-on.
+- On the left menu click on the "InfluxDB Admin".
+- Create a database for storing Home Assistant's data in, e.g., `homeassistant`.
+- Go to the users tab and create a user for Home Assistant,
+ e.g., `homeassistant`.
+- Add "ALL" to "Permissions" of the created user, to allow writing to your
+ database.
+
+Now we've got this in place, add the following snippet to your Home Assistant
+`configuration.yaml` file.
+
+```yaml
+influxdb:
+ host: a0d7b954-influxdb
+ port: 8086
+ database: homeassistant
+ username: homeassistant
+ password:
+ max_retries: 3
+ default_measurement: state
+```
+
+Restart Home Assistant.
+
+You should now see the data flowing into InfluxDB by visiting the web-interface
+and using the Data Explorer.
+
+Full details of the Home Assistant integration can be found here:
+
+
+
+## Known issues and limitations
+
+- While the Chronograph interface supports SSL, currently, the add-on does
+ not support having SSL on InfluxDB. This limitation is caused by
+ Chronograf and we are still looking into a proper solution for this.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-influxdb/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-influxdb/54491?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-influxdb/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-influxdb/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/influxdb/README.md b/influxdb/README.md
new file mode 100644
index 0000000..481b548
--- /dev/null
+++ b/influxdb/README.md
@@ -0,0 +1,39 @@
+# Home Assistant Community Add-on: InfluxDB
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Scalable datastore for metrics, events, and real-time analytics.
+
+## About
+
+InfluxDB is an open source time series database optimized for high-write-volume.
+It's useful for recording metrics, sensor data, events,
+and performing analytics. It exposes an HTTP API for client interaction and if
+often used in combination with Grafana to visualize the data.
+
+This add-on comes with Chronograf & Kapacitor pre-installed as well. Which
+gives you a nice InfluxDB admin interface for managing your users, databases,
+data retention settings, and lets you peek inside the database using the
+Data Explorer.
+
+![Chronograf in the Home Assistant Frontend][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-influxdb/54491?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v4.1.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-influxdb/tree/v4.1.1
+[screenshot]: https://github.com/hassio-addons/addon-influxdb/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/influxdb/config.json b/influxdb/config.json
new file mode 100644
index 0000000..5a345be
--- /dev/null
+++ b/influxdb/config.json
@@ -0,0 +1,57 @@
+{
+ "name": "InfluxDB",
+ "version": "4.1.1",
+ "slug": "influxdb",
+ "description": "Scalable datastore for metrics, events, and real-time analytics",
+ "url": "https://github.com/hassio-addons/addon-influxdb",
+ "ingress": true,
+ "ingress_port": 1337,
+ "panel_icon": "mdi:chart-areaspline",
+ "startup": "services",
+ "homeassistant": "0.92.0b2",
+ "hassio_api": true,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "map": [
+ "share:rw",
+ "ssl"
+ ],
+ "ports": {
+ "80/tcp": null,
+ "8086/tcp": 8086
+ },
+ "ports_description": {
+ "80/tcp": "Web interface (Not required for Ingress)",
+ "8086/tcp": "InfluxDB server"
+ },
+ "auth_api": true,
+ "options": {
+ "auth": true,
+ "reporting": true,
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "envvars": []
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "auth": "bool",
+ "reporting": "bool",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "envvars": [
+ {
+ "name": "match(^INFLUXDB_([A-Z0-9_])+$)",
+ "value": "str"
+ }
+ ],
+ "leave_front_door_open": "bool?"
+ },
+ "image": "ghcr.io/hassio-addons/influxdb/{arch}"
+}
\ No newline at end of file
diff --git a/influxdb/icon.png b/influxdb/icon.png
new file mode 100644
index 0000000..e97bdce
Binary files /dev/null and b/influxdb/icon.png differ
diff --git a/influxdb/logo.png b/influxdb/logo.png
new file mode 100644
index 0000000..1683a09
Binary files /dev/null and b/influxdb/logo.png differ
diff --git a/jupyterlab/CHANGELOG.md b/jupyterlab/CHANGELOG.md
new file mode 100644
index 0000000..3b8c09e
--- /dev/null
+++ b/jupyterlab/CHANGELOG.md
@@ -0,0 +1,16 @@
+## What’s changed
+
+## ✨ New features
+
+- Add Seaborn by default @frenck (#245)
+
+## ⬆️ Dependency updates
+
+- ⬆ Upgrades libpq5 to 11.10-0+deb10u1 @frenck (#238)
+- ⬆️ Bump actions/stale from v3.0.15 to v3.0.16 @dependabot (#236)
+- ⬆️ Bump frenck/action-addon-linter from v1.4 to v2 @dependabot (#237)
+- ⬆️ Bump release-drafter/release-drafter from v5.13.0 to v5.14.0 @dependabot (#240)
+- ⬆️ Bump docker/build-push-action from v2.2.2 to v2.3.0 @dependabot (#242)
+- ⬆️ Bump actions/stale from v3.0.16 to v3.0.17 @dependabot (#243)
+- ⬆ Upgrades nodejs to 12.20.2-1nodesource1 @frenck (#244)
+- ⬆ Upgrades nodejs to 12.21.0-1nodesource1 @frenck (#246)
diff --git a/jupyterlab/DOCS.md b/jupyterlab/DOCS.md
new file mode 100644
index 0000000..9af340d
--- /dev/null
+++ b/jupyterlab/DOCS.md
@@ -0,0 +1,171 @@
+# Home Assistant Community Add-on: JupyterLab
+
+JupyterLab is an open-source web application that allows you to create and share
+documents that contain live code, equations, visualizations and narrative text.
+Uses include: data cleaning and transformation, numerical simulation,
+statistical modeling, data visualization, machine learning, and much more.
+
+This add-on runs JupyterLab, which is the next-generation user interface for
+Project Jupyter. It is an extensible environment for interactive and
+reproducible computing, based on the Jupyter Notebook and Architecture.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "JupyterLab" add-on in the Supervisor add-on store
+ and install it.
+1. Start the "JupyterLab" add-on
+1. Check the logs of the "JupyterLab" add-on to see if everything went well.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+github_access_token: abcdef1234567890abcdef0123456789abcdef01
+system_packages:
+ - ffmpeg
+init_commands:
+ - pip install virtualenv
+ - pip install yamllint
+```
+
+**Note**: _This is just an example, don't copy and past it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `github_access_token`
+
+Sets an GitHub access token. When making unauthenticated requests to GitHub
+(as we must do to get repository data), GitHub imposes fairly strict rate-limits
+on how many requests we can make. As such, you are likely to hit that limit
+within a few minutes of work.
+
+There is a chapter in this document with instruction on obtaining such a token.
+
+**Note**: _This option support secrets, e.g., `!secret github_token`._
+
+### Option: `system_packages`
+
+Allows you to specify additional [Alpine packages][alpine-packages] to be
+installed to your JupyterLab setup (e.g., `g++`. `make`, `ffmpeg`).
+
+**Note**: _Adding many packages will result in a longer start-up time
+for the add-on._
+
+#### Option: `init_commands`
+
+Customize your environment even more with the `init_commands` option.
+Add one or more shell commands to the list, and they will be executed every
+single time this add-on starts.
+
+## Getting a GitHub access token
+
+You can get an access token by following these steps:
+
+1. [Verify][github-verify] your email address with GitHub.
+1. Go to your account settings on GitHub and select "Developer Settings"
+ from the left panel.
+1. On the left, select "Personal access tokens"
+1. Click the "Generate new token" button, and enter your password.
+1. Give the token a description, and check the "**repo**" scope box.
+1. Click "Generate token"
+1. You should be given a string which will be your access token.
+
+Remember that this token is effectively a password for your GitHub account.
+_Do not_ share it online or check the token into version control,
+as people can use it to access all of your data on GitHub.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[alpine-packages]: https://pkgs.alpinelinux.org/packages
+[contributors]: https://github.com/hassio-addons/addon-jupyterlab/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-jupyterlab/87337?u=frenck
+[frenck]: https://github.com/frenck
+[github-verify]: https://help.github.com/articles/verifying-your-email-address
+[issue]: https://github.com/hassio-addons/addon-jupyterlab/issues
+[python-packages]: https://pypi.org/
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-jupyterlab/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/jupyterlab/README.md b/jupyterlab/README.md
new file mode 100644
index 0000000..c7466cb
--- /dev/null
+++ b/jupyterlab/README.md
@@ -0,0 +1,40 @@
+# Home Assistant Community Add-on: JupyterLab
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Create documents containing live code, equations, visualizations,
+and explanatory text.
+
+![The JupyterLab add-on][screenshot]
+
+## About
+
+JupyterLab is an open-source web application that allows you to create and share
+documents that contain live code, equations, visualizations and narrative text.
+Uses include: data cleaning and transformation, numerical simulation,
+statistical modeling, data visualization, machine learning, and much more.
+
+This add-on runs JupyterLab, which is the next-generation user interface for
+Project Jupyter. It is an extensible environment for interactive and
+reproducible computing, based on the Jupyter Notebook and Architecture.
+
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-jupyterlab-lite/87337?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.5.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-jupyterlab/tree/v0.5.0
+[screenshot]: https://github.com/hassio-addons/addon-jupyterlab/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/jupyterlab/config.json b/jupyterlab/config.json
new file mode 100644
index 0000000..206bde2
--- /dev/null
+++ b/jupyterlab/config.json
@@ -0,0 +1,34 @@
+{
+ "name": "JupyterLab",
+ "version": "0.5.0",
+ "slug": "jupyterlablite",
+ "description": "Create documents containing live code, equations, visualizations, and explanatory text",
+ "url": "https://github.com/hassio-addons/addon-jupyterlab",
+ "ingress": true,
+ "panel_icon": "mdi:flask-outline",
+ "arch": [
+ "aarch64",
+ "amd64"
+ ],
+ "homeassistant_api": true,
+ "map": [
+ "config:rw",
+ "share:rw"
+ ],
+ "options": {
+ "github_access_token": "",
+ "system_packages": [],
+ "init_commands": []
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "github_access_token": "password",
+ "system_packages": [
+ "str"
+ ],
+ "init_commands": [
+ "str"
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/jupyterlab/{arch}"
+}
\ No newline at end of file
diff --git a/jupyterlab/icon.png b/jupyterlab/icon.png
new file mode 100644
index 0000000..20e4bae
Binary files /dev/null and b/jupyterlab/icon.png differ
diff --git a/jupyterlab/logo.png b/jupyterlab/logo.png
new file mode 100644
index 0000000..2301809
Binary files /dev/null and b/jupyterlab/logo.png differ
diff --git a/log-viewer/CHANGELOG.md b/log-viewer/CHANGELOG.md
new file mode 100644
index 0000000..c522f47
--- /dev/null
+++ b/log-viewer/CHANGELOG.md
@@ -0,0 +1,24 @@
+## What’s changed
+
+## ✨ New features
+
+- Add translation support @frenck (#86)
+
+## 🚀 Enhancements
+
+- Remove NGINX access log from Supervisor log output @frenck (#85)
+
+## 🧰 Maintenance
+
+- Apply updated repository structure & CI workflow @frenck (#84)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#75)
+- ⬆️ Upgrades nodejs to 14.16.1-r1 @frenck (#76)
+- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#77)
+- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#78)
+- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#79)
+- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#80)
+- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#81)
+- ⬆️ Upgrades add-on base image to v9.2.0 @frenck (#83)
diff --git a/log-viewer/DOCS.md b/log-viewer/DOCS.md
new file mode 100644
index 0000000..5678156
--- /dev/null
+++ b/log-viewer/DOCS.md
@@ -0,0 +1,155 @@
+# Home Assistant Community Add-on: Log Viewer
+
+Easily monitor your Home Assistant logs in your web browser. Custom filtering
+is available to make it simple to differentiate different types of logs.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Log Viewer" add-on in the Supervisor add-on store and
+ install it.
+1. Start the "Log Viewer" add-on
+1. Check the logs of the "Log Viewer" add-on to see if everything went well.
+1. Open the web UI for the "Log Viewer" add-on to start watching logs.
+
+**Tip:** To see more logs, be sure to enable the [`logger`][logger] integration
+in your Home Assistant `configuration.yaml`:
+
+```yaml
+logger:
+ default: info
+```
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+ssl: false
+certfile: fullchain.pem
+keyfile: privkey.pem
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `ssl`
+
+Enables/Disables SSL on the Log Viewer. Set it `true` to enable it,
+`false` otherwise.
+
+**Note**: _The SSL settings only apply to direct access and has no effect
+on the Ingress service._
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `leave_front_door_open`
+
+Adding this option to the add-on configuration allows you to disable
+authentication on the add-on by setting it to `true` and leaving the
+username and password empty.
+
+**Note**: _We STRONGLY suggest, not to use this, even if this add-on is
+only exposed to your internal network. USE AT YOUR OWN RISK!_
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Dale Higgs][dale3h].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Dale Higgs <@dale3h>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-log-viewer/graphs/contributors
+[dale3h]: https://github.com/dale3h
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-log-viewer/64377?u=dale3h
+[issue]: https://github.com/hassio-addons/addon-log-viewer/issues
+[logger]: https://www.home-assistant.io/integrations/logger/
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-log-viewer/releases
+[semver]: https://semver.org/spec/v2.0.0
diff --git a/log-viewer/README.md b/log-viewer/README.md
new file mode 100644
index 0000000..8ea04b5
--- /dev/null
+++ b/log-viewer/README.md
@@ -0,0 +1,25 @@
+# Home Assistant Community Add-on: Log Viewer
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
+
+Browser-based log utility for Home Assistant.
+
+## About
+
+Easily monitor your Home Assistant logs in your web browser. Custom filtering
+is available to make it simple to differentiate different types of logs.
+
+[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
+[buymeacoffee]: https://www.buymeacoffee.com/dale3h
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-log-viewer/64377?u=dale3h
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-log-viewer/tree/v0.11.0
\ No newline at end of file
diff --git a/log-viewer/config.json b/log-viewer/config.json
new file mode 100644
index 0000000..a4afef5
--- /dev/null
+++ b/log-viewer/config.json
@@ -0,0 +1,44 @@
+{
+ "name": "Log Viewer",
+ "version": "0.11.0",
+ "slug": "logviewer",
+ "description": "Browser-based log utility for Home Assistant",
+ "url": "https://github.com/hassio-addons/addon-log-viewer",
+ "init": false,
+ "ingress": true,
+ "panel_icon": "mdi:text-box-outline",
+ "homeassistant": "0.92.0b2",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "homeassistant_api": true,
+ "auth_api": true,
+ "ports": {
+ "80/tcp": null
+ },
+ "ports_description": {
+ "80/tcp": "Web interface (Not required for Ingress)"
+ },
+ "map": [
+ "config",
+ "share",
+ "ssl"
+ ],
+ "options": {
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem"
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "leave_front_door_open": "bool?"
+ },
+ "image": "ghcr.io/hassio-addons/log-viewer/{arch}"
+}
\ No newline at end of file
diff --git a/log-viewer/icon.png b/log-viewer/icon.png
new file mode 100644
index 0000000..145b71b
Binary files /dev/null and b/log-viewer/icon.png differ
diff --git a/log-viewer/logo.png b/log-viewer/logo.png
new file mode 100644
index 0000000..145b71b
Binary files /dev/null and b/log-viewer/logo.png differ
diff --git a/log-viewer/translations/en.yaml b/log-viewer/translations/en.yaml
new file mode 100644
index 0000000..e1b01f1
--- /dev/null
+++ b/log-viewer/translations/en.yaml
@@ -0,0 +1,22 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ ssl:
+ name: SSL
+ description: >-
+ Enables/Disables SSL (HTTPS) on the web interface.
+ certfile:
+ name: Certificate file
+ description: >-
+ The certificate file to use for SSL. Note that this file must
+ exist in the /ssl/ folder.
+ keyfile:
+ name: Private key file
+ description: >-
+ The private key file to use for SSL. Note that this file must
+ exist in the /ssl/ folder.
+network:
+ 80/tcp: Web interface (Not required for Ingress)
diff --git a/matrix/CHANGELOG.md b/matrix/CHANGELOG.md
new file mode 100644
index 0000000..ea2a143
--- /dev/null
+++ b/matrix/CHANGELOG.md
@@ -0,0 +1,17 @@
+[![GitLab CI][gitlabci-shield]][gitlabci]
+
+## Changes
+
+- ⬆ Upgrades musl-dev to 1.1.24-r2
+- 🔨 Disable Docker init
+- 🔨 Implement OCI image specification on labels
+- ⬆ Updates matrix-synapse to v1.14.0 (#52)
+- ⬆ Upgrades add-on base image to v5.2.1
+- ✏ Split add-on documentation
+- ⬆ Upgrades riot-web to v1.6.2
+
+[Full Changelog][changelog]
+
+[changelog]: https://github.com/hassio-addons/addon-matrix/compare/v0.9.0...v0.10.0
+[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-matrix/badges/v0.10.0/pipeline.svg
+[gitlabci]: https://gitlab.com/hassio-addons/addon-matrix/pipelines
diff --git a/matrix/DOCS.md b/matrix/DOCS.md
new file mode 100644
index 0000000..a28ba30
--- /dev/null
+++ b/matrix/DOCS.md
@@ -0,0 +1,167 @@
+# Home Assistant Community Add-on: Matrix
+
+Matrix is a secure and decentralized communication platform served as an
+in-house and open-source alternative for platfoms like Discord or Slack. You
+can connect via your own [clients][clients], or via the Riot web client
+provided from this add-on.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Matrix" add-on in the Supervisor add-on store and install it.
+1. Set your `server_name` as the hostname of the instance you will be using.
+ This is an important step for integrating other services later.
+1. Start the "Matrix" add-on.
+1. Check the logs of the "Matrix" add-on to see if everything went well.
+1. Click "Open Web UI".
+1. You can then register via the message that appears at the top of the app.
+1. Change the server address to your own via "Custom server" and set the
+ "Home server URL" to yours. By default this will be
+ `https://yourservername:8448`. You can check this by navigating to this URL
+ and you will be presented with a welcome message.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+ssl: true
+certfile: fullchain.pem
+keyfile: privkey.pem
+server_name: yourddns_url.com
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+These log level also affects the log levels of the Matrix.
+
+### Option: `ssl`
+
+Enables/Disables SSL (HTTPS) on the IDE. Set it `true` to enable it,
+`false` otherwise.
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `server_name`
+
+This is the hostname of your server. Set this to the host that you will be
+connecting to with your clients without the port and without the
+`http://` or`https://`. For example: if your domain name is
+`home-assistant.io` set your `server_name` to this.
+
+**Note**: _You should only set this once. You will likely have to reinstall the
+ addon to change this after the fact, losing all your rooms and users._
+
+### Option: `leave_front_door_open`
+
+Adding this option to the add-on configuration allows you to disable HA
+authentication on the Riot interface by setting it to `true` and leaving the
+username and password empty.
+
+**Note**: _We STRONGLY suggest, not to use this, even if this add-on is
+only exposed to your internal network. USE AT YOUR OWN RISK!_
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality. The format of the log is based on
+[Keep a Changelog][keepchangelog].
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
+based on the following:
+
+- ``MAJOR``: Incompatible or major changes.
+- ``MINOR``: Backwards-compatible new features and enhancements.
+- ``PATCH``: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Timmo][timmo].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2019-2020 Timmo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[clients]: https://matrix.org/docs/projects/try-matrix-now.html
+[contributors]: https://github.com/hassio-addons/addon-matrix/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io
+[issue]: https://github.com/hassio-addons/addon-matrix/issues
+[keepchangelog]: http://keepachangelog.com/en/1.0.0/
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-matrix/releases
+[semver]: http://semver.org/spec/v2.0.0.html
+[timmo]: https://github.com/timmo001
diff --git a/matrix/README.md b/matrix/README.md
new file mode 100644
index 0000000..2dc7da2
--- /dev/null
+++ b/matrix/README.md
@@ -0,0 +1,31 @@
+# Home Assistant Community Add-on: Matrix
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
+
+A secure, decentralized communication platform.
+
+## About
+
+Matrix is a secure and decentralized communication platform served as an
+ in-house and open-source alternative for platfoms like Discord or Slack. You
+ can connect via your own [clients][clients], or via the Riot web client
+ provided from this add-on.
+
+![Screenshot][screenshot]
+
+[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
+[buymeacoffee]: https://www.buymeacoffee.com/timmo
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.10.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-matrix/tree/v0.10.0
+[screenshot]: https://github.com/hassio-addons/addon-matrix/raw/master/images/screenshot.png
+[clients]: https://matrix.org/docs/projects/try-matrix-now.html
\ No newline at end of file
diff --git a/matrix/config.json b/matrix/config.json
new file mode 100644
index 0000000..34e38e8
--- /dev/null
+++ b/matrix/config.json
@@ -0,0 +1,53 @@
+{
+ "name": "Matrix",
+ "version": "0.10.0",
+ "slug": "matrix",
+ "description": "A secure and decentralized communication platform.",
+ "url": "https://github.com/hassio-addons/addon-matrix",
+ "webui": "http://[HOST]:[PORT:80]",
+ "startup": "application",
+ "ingress": true,
+ "ingress_port": 1337,
+ "panel_icon": "mdi:chat",
+ "homeassistant": "0.92.0b2",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "boot": "auto",
+ "hassio_api": true,
+ "hassio_role": "default",
+ "auth_api": true,
+ "ports": {
+ "8448/tcp": 8448,
+ "80/tcp": null
+ },
+ "ports_description": {
+ "8448/tcp": "Matrix Synapse Home Server",
+ "80/tcp": "Riot Matrix web client (Not required for Ingress)"
+ },
+ "map": [
+ "config:rw",
+ "share:rw",
+ "ssl"
+ ],
+ "options": {
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "server_name": "hassio.local"
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "server_name": "str",
+ "leave_front_door_open": "bool?"
+ },
+ "image": "hassioaddons/matrix-{arch}"
+}
\ No newline at end of file
diff --git a/matrix/icon.png b/matrix/icon.png
new file mode 100644
index 0000000..30b80ec
Binary files /dev/null and b/matrix/icon.png differ
diff --git a/matrix/logo.png b/matrix/logo.png
new file mode 100644
index 0000000..2beb651
Binary files /dev/null and b/matrix/logo.png differ
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..12d5c5d
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,74 @@
+---
+# Project information
+site_name: "Home Assistant Community Add-ons"
+site_url: "https://addons.community"
+site_description: "The primary goal of this project is to provide you (as a Home Assistant user) with additional, high quality, add-ons that allow you to take your automated home to the next level."
+site_author: "Franck Nijhof"
+copyright: "Copyright 2017-2020 - Franck Nijhof."
+
+# Repository
+repo_name: "hassio-addons"
+repo_url: "https://github.com/hassio-addons/repository"
+edit_uri: ""
+
+# Theme configuration
+theme:
+ name: "material"
+ logo: "https://avatars3.githubusercontent.com/u/30772201?s=200&v=4"
+ language: "en"
+ palette:
+ primary: "light-blue"
+ accent: "blue"
+ font:
+ text: "Exo2"
+ code: "Roboto Mono"
+ feature:
+ - tabs
+extra_css:
+ - css/extra.css
+
+# Customization
+extra:
+ manifest: "manifest.webmanifest"
+ social:
+ - icon: fontawesome/brands/github-alt
+ link: "https://github.com/hassio-addons"
+ - icon: fontawesome/brands/twitter
+ link: "https://twitter.com/hassio-addons"
+ - icon: fontawesome/brands/instagram
+ link: "https://instagram.com/frenck"
+ - icon: fontawesome/brands/twitch
+ link: "https://twitch.tv/frenck"
+ - icon: fontawesome/brands/youtube
+ link: "https://youtube.com/frenck"
+ - icon: fontawesome/brands/linkedin
+ link: "https://www.linkedin.com/in/frenck"
+
+# Extensions
+markdown_extensions:
+ - toc:
+ permalink: true
+ - pymdownx.betterem:
+ smart_enable: all
+ - pymdownx.caret
+ - pymdownx.critic
+ - pymdownx.details
+ - pymdownx.emoji:
+ emoji_generator: !!python/name:pymdownx.emoji.to_svg
+ - pymdownx.inlinehilite
+ - pymdownx.magiclink
+ - pymdownx.mark
+ - pymdownx.smartsymbols
+ - pymdownx.superfences
+ - pymdownx.tasklist:
+ custom_checkbox: true
+ - pymdownx.tilde
+
+# The pages to serve
+nav:
+ - "Our Add-ons": "index.md"
+ - "Beta Add-ons": "beta.md"
+ - "Edge Add-ons": "edge.md"
+ - "Contributing": "contributing.md"
+ - "Code of Conduct": "code-of-conduct.md"
+ - "License": "license.md"
diff --git a/motioneye/CHANGELOG.md b/motioneye/CHANGELOG.md
new file mode 100644
index 0000000..1b81eec
--- /dev/null
+++ b/motioneye/CHANGELOG.md
@@ -0,0 +1,24 @@
+## What’s changed
+
+## ✨ New features
+
+- Add Home Assistant integration discovery @frenck (#243)
+
+## 🚀 Enhancements
+
+- Enable motionEye discovery in add-on configuration @frenck (#244)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#238)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#241)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#245)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#248)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#249)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#251)
+- ⬆️ Upgrades add-on base image to v9.2.1 @frenck (#253)
+- ⬆️ Bump singledispatch from 3.6.1 to 3.6.2 in /motioneye @dependabot (#247)
+- ⬆️ Upgrades ffmpeg to 4.3.1-r4 @frenck (#257)
+- ⬆️ Upgrades cifs-utils to 6.13-r0 @frenck (#258)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#256)
+- ⬆️ Upgrades nginx to 1.18.0-r15 @frenck (#259)
diff --git a/motioneye/DOCS.md b/motioneye/DOCS.md
new file mode 100644
index 0000000..c55ba02
--- /dev/null
+++ b/motioneye/DOCS.md
@@ -0,0 +1,196 @@
+# Home Assistant Community Add-on: motionEye
+
+motionEye is a popular frontend to the camera software called motion. This
+add-on provides both, allowing you to add your camera's to your Hass.io setup.
+
+motionEye is Open Source CCTV and NVR, that is elegant and really easy to use.
+It can be used as a Baby Monitor, Construction Site Montage Viewer,
+Store Camera DVR, Garden Security, and much more.
+
+Some cool features of motionEye:
+
+- Support for a ridiculous amount of cameras, including IP cams.
+- Add multiple cameras by hooking up multiple motionEye instances together.
+ For example, by using MotionEyeOS on a Pi Zero + Pi camera in your network.
+- Supports uploading recording into Google Drive and Dropbox.
+- motion detection, including email notification and scheduling.
+- Can record continuously, motion, or timelapse, with retention settings.
+- Supports "[action buttons][motioneye-wiki-action-buttons]" within the configuration.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "motionEye" add-on in the Supervisor add-on store and
+ install it.
+1. Start the "motionEye" add-on
+1. Check the logs of the "motionEye" add-on to see if everything went well.
+1. Click the "OPEN WEB UI" button to open the web interface
+1. Login with username "admin", without a password.
+1. Edit your admin account with a secure password!
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+ssl: true
+certfile: mycertfile.pem
+keyfile: mykeyfile.pem
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `motion_webcontrol`
+
+Enables the motion webcontrol endpoint running on port `7999`.
+
+:warning: MotionEye HTTP webcontrol **DOES NOT** support authentication
+and **DOES NOT** support SSL! Enable this **ONLY** when you know what
+you are doing! **NEVER, EVER** expose this port to the outside world!
+
+### Option: `ssl`
+
+Enables/Disables SSL (HTTPS) on the web interface of motionEye. Set it `true`
+to enable it, `false` otherwise.
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `action_buttons`
+
+If configured, a script will be created to implement an [action button][motioneye-wiki-action-buttons].
+
+Example action buttons configuration:
+
+```yaml
+action_buttons:
+ - type: light_on
+ camera: 1
+ command: "curl -s 192.168.1.1/index.html?light=ON > /dev/null"
+ - type: light_off
+ camera: 1
+ command: "curl -s 192.168.1.1/index.html?light=OFF > /dev/null"
+```
+
+#### Sub-option: `action_buttons.type`
+
+Type of action button. Acceptable types are:
+
+- `lock` and `unlock`.
+- `light_on` and `light_off`.
+- `alarm_on` and `alarm_off`.
+- `up`, `right`, `down`, and `left`.
+- `zoom_in` and `zoom_out`.
+- `preset1` to `preset9`.
+
+#### Sub-option: `action_buttons.camera`
+
+The camera identification number. Corresponds to the camera number as set up
+within the motionEye UI.
+
+#### Sub-option: `action_buttons.command`
+
+The bash shell command to be executed when the button is pressed.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-motioneye/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[dockerhub]: https://hub.docker.com/r/hassioaddons/motioneye
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-motioneye/71826?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-motioneye/issues
+[motioneye-wiki-action-buttons]: https://github.com/ccrisan/motioneye/wiki/Action-Buttons
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-motioneye/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/motioneye/README.md b/motioneye/README.md
new file mode 100644
index 0000000..367f4f4
--- /dev/null
+++ b/motioneye/README.md
@@ -0,0 +1,42 @@
+# Home Assistant Community Add-on: motionEye
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Simple, elegant and feature-rich CCTV/NVR for your cameras.
+
+## About
+
+motionEye is a popular frontend to the camera software called motion. This add-on provides both, allowing you to add your camera's to your Hass.io setup.
+
+motionEye is Open Source CCTV and NVR, that is elegant and really easy to use. It can be used as a Baby Monitor, Construction Site Montage Viewer, Store Camera DVR, Garden Security, and much more.
+
+Some cool features of motionEye:
+
+- Support for a ridiculous amount of cameras, including IP cams.
+- Add multiple cameras by hooking up multiple motionEye instances together.
+ For example, by using MotionEyeOS on a Pi Zero + Pi camera in your network.
+- Supports uploading recording into Google Drive and Dropbox.
+- motion detection, including email notification and scheduling.
+- Can record continuously, motion, or timelapse, with retention settings.
+
+![motionEye screenshot][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-motioneye/71826?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-motioneye/tree/v0.14.0
+[screenshot]: https://github.com/hassio-addons/addon-motioneye/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/motioneye/config.json b/motioneye/config.json
new file mode 100644
index 0000000..f5a08f9
--- /dev/null
+++ b/motioneye/config.json
@@ -0,0 +1,62 @@
+{
+ "name": "motionEye",
+ "version": "0.14.0",
+ "slug": "motioneye",
+ "description": "Simple, elegant and feature-rich CCTV/NVR for your cameras",
+ "url": "https://github.com/hassio-addons/addon-motioneye",
+ "ingress": true,
+ "ingress_port": 0,
+ "panel_icon": "mdi:cctv",
+ "homeassistant": "0.92.0b2",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "ports": {
+ "80/tcp": null
+ },
+ "ports_description": {
+ "80/tcp": "Web interface (Not required for Ingress)"
+ },
+ "discovery": [
+ "motioneye"
+ ],
+ "host_network": true,
+ "apparmor": false,
+ "video": true,
+ "privileged": [
+ "DAC_READ_SEARCH",
+ "SYS_ADMIN"
+ ],
+ "map": [
+ "media:rw",
+ "share:rw",
+ "ssl"
+ ],
+ "options": {
+ "motion_webcontrol": false,
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "action_buttons": []
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "motion_webcontrol": "bool",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "action_buttons": [
+ {
+ "type": "list(lock|unlock|light_on|light_off|alarm_on|alarm_off|up|right|down|left|zoom_in|zoom_out|preset1|preset2|preset3|preset4|preset5|preset6|preset7|preset8|preset9)?",
+ "camera": "int?",
+ "command": "str?"
+ }
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/motioneye/{arch}"
+}
\ No newline at end of file
diff --git a/motioneye/icon.png b/motioneye/icon.png
new file mode 100644
index 0000000..2507ebe
Binary files /dev/null and b/motioneye/icon.png differ
diff --git a/motioneye/logo.png b/motioneye/logo.png
new file mode 100644
index 0000000..8fd0da2
Binary files /dev/null and b/motioneye/logo.png differ
diff --git a/motioneye/translations/de.yaml b/motioneye/translations/de.yaml
new file mode 100644
index 0000000..db22046
--- /dev/null
+++ b/motioneye/translations/de.yaml
@@ -0,0 +1,21 @@
+configuration:
+ action_buttons:
+ description: 'If configured, a script will be created to implement an motionEye action button. See add-on documentation for usage details.'
+ name: 'Action buttons'
+ certfile:
+ description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Certificate file'
+ keyfile:
+ description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Private key file'
+ log_level:
+ description: 'Controls the level of log details the add-on provides.'
+ name: 'Log level'
+ motion_webcontrol:
+ description: 'Enables the motion webcontrol endpoint running on port 7999.'
+ name: 'Motion webcontrol'
+ ssl:
+ description: 'Enables/Disables SSL (HTTPS) on the web interface of motionEye.'
+ name: SSL
+network:
+ 80/tcp: 'Web interface (Not required for Ingress)'
diff --git a/motioneye/translations/en.yaml b/motioneye/translations/en.yaml
new file mode 100644
index 0000000..9d5931a
--- /dev/null
+++ b/motioneye/translations/en.yaml
@@ -0,0 +1,31 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ motion_webcontrol:
+ name: Motion webcontrol
+ description: >-
+ Enables the motion webcontrol endpoint running on port 7999.
+ ssl:
+ name: SSL
+ description: >-
+ Enables/Disables SSL (HTTPS) on the web interface of motionEye.
+ certfile:
+ name: Certificate file
+ description: >-
+ The certificate file to use for SSL. Note that this file must
+ exists in the /ssl/ folder.
+ keyfile:
+ name: Private key file
+ description: >-
+ The private key file to use for SSL. Note that this file must
+ exists in the /ssl/ folder.
+ action_buttons:
+ name: Action buttons
+ description: >-
+ If configured, a script will be created to implement an motionEye
+ action button. See add-on documentation for usage details.
+network:
+ 80/tcp: Web interface (Not required for Ingress)
diff --git a/motioneye/translations/nl.yaml b/motioneye/translations/nl.yaml
new file mode 100644
index 0000000..c2ee4a7
--- /dev/null
+++ b/motioneye/translations/nl.yaml
@@ -0,0 +1,21 @@
+configuration:
+ action_buttons:
+ description: 'If configured, a script will be created to implement an motionEye action button. See add-on documentation for usage details.'
+ name: 'Action buttons'
+ certfile:
+ description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Certificate file'
+ keyfile:
+ description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Private key file'
+ log_level:
+ description: 'Bepaalt het niveau van de logs die de add-on toont.'
+ name: 'Log niveau'
+ motion_webcontrol:
+ description: 'Enables the motion webcontrol endpoint running on port 7999.'
+ name: 'Motion webcontrol'
+ ssl:
+ description: 'Enables/Disables SSL (HTTPS) on the web interface of motionEye.'
+ name: SSL
+network:
+ 80/tcp: 'Web interface (Not required for Ingress)'
diff --git a/mqtt/CHANGELOG.md b/mqtt/CHANGELOG.md
new file mode 100644
index 0000000..468788a
--- /dev/null
+++ b/mqtt/CHANGELOG.md
@@ -0,0 +1,26 @@
+## ⚠️ Deprecation notice!
+
+This is the final and last release of this add-on, which is now deprecated.
+
+We strongly advise you to upgrade/migrate to using the Mosquitto add-on, as provided by the Home Assistant project.
+
+This add-on will be removed from the add-on store soon.
+
+
+## Changes
+
+- :pencil2: Maintaince -> Maintenance
+- :ambulance: Fixes path handling for SSL certificates
+- :hammer: Updates HA Auth URL in NGinx LUA script
+- :hammer: Use Hass.io DNS as NGinx resolver
+- :fireworks: Updates maintenance/license year to 2020
+- :books: Update add-on documentation to use new YAML configuration format
+- :hammer: Re-branding
+- :pencil2: Fixes some typos
+- :hammer: Update add-on config with new password & list features
+- :arrow_up: Upgrades add-on base image to v7.0.2
+- :warning: Adds deprecation notices
+
+[Full Changelog][changelog]
+
+[changelog]: https://github.com/hassio-addons/addon-mqtt/compare/v1.1.0...v1.2.0
\ No newline at end of file
diff --git a/mqtt/README.md b/mqtt/README.md
new file mode 100644
index 0000000..08fbf91
--- /dev/null
+++ b/mqtt/README.md
@@ -0,0 +1,44 @@
+# Home Assistant Community Add-on: MQTT Server & Web client
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
+
+Mosquitto MQTT Server bundled with Hivemq's web client.
+
+## Deprecation warning
+
+**This add-on is in a deprecated state!**
+
+This add-on is now deprecated. We highly recommend on switching to the
+official Home Assistant Mosquitto add-on as an alternative.
+
+This add-on will soon be removed from the add-on store.
+
+## About
+
+This add-on combines the power of [Hivemq][hivemq]'s
+web-based MQTT client, and the powerful [Mosquitto][mosquitto]
+broker (MQTT Server). With this, you can host your own MQTT server,
+and inspect/publish messages using the built-in web client!
+
+[Click here for the full documentation][docs]
+
+![Screenshot][screenshot]
+
+[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
+[buymeacoffee]: https://www.buymeacoffee.com/ludeeus
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[docs]: https://github.com/hassio-addons/addon-mqtt/blob/v1.2.0/README.md
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/community-hass-io-add-ons-mqtt-server-web-client/70376
+[hivemq]: https://www.hivemq.com/
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
+[mosquitto]: https://mosquitto.org/
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-%20!%20DEPRECATED%20%20%20!-ff0000.svg
+[release-shield]: https://img.shields.io/badge/version-v1.2.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-mqtt/tree/v1.2.0
+[screenshot]: https://github.com/hassio-addons/addon-mqtt/raw/master/images/image.png
\ No newline at end of file
diff --git a/mqtt/config.json b/mqtt/config.json
new file mode 100644
index 0000000..0a2b763
--- /dev/null
+++ b/mqtt/config.json
@@ -0,0 +1,82 @@
+{
+ "name": "MQTT Server & Web client",
+ "version": "1.2.0",
+ "slug": "mqtt",
+ "description": "Mosquitto MQTT Server bundled with Hivemq's web client",
+ "url": "https://github.com/hassio-addons/addon-mqtt/tree/master/README.md",
+ "webui": "https://[HOST]:[PORT:80]",
+ "ingress": true,
+ "ingress_port": 1337,
+ "homeassistant": "0.92.0",
+ "panel_icon": "mdi:code-brackets",
+ "panel_title": "MQTT",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "boot": "auto",
+ "auth_api": true,
+ "hassio_api": true,
+ "hassio_role": "default",
+ "ports": {
+ "80/tcp": null,
+ "1883/tcp": 1883,
+ "1884/tcp": 1884,
+ "4883/tcp": 4883,
+ "4884/tcp": 4884
+ },
+ "ports_description": {
+ "80/tcp": "HiveMQ web interface (Not required for Ingress)",
+ "1883/tcp": "Standard MQTT port (without SSL)",
+ "1884/tcp": "Standard WebSocket port (without SSL)",
+ "4883/tcp": "Secure MQTT port (with SSL)",
+ "4884/tcp": "Secure WebSocket port (with SSL)"
+ },
+ "map": [
+ "share",
+ "ssl",
+ "config"
+ ],
+ "options": {
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "broker": true,
+ "allow_anonymous": false,
+ "mqttusers": [
+ {
+ "username": "",
+ "password": "",
+ "readonly": true,
+ "topics": [
+ "#"
+ ]
+ }
+ ]
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "broker": "bool",
+ "allow_anonymous": "bool",
+ "mqttusers": [
+ {
+ "username": "str",
+ "password": "password",
+ "readonly": "bool",
+ "topics": [
+ "str"
+ ]
+ }
+ ],
+ "i_like_to_be_pwned": "bool?",
+ "leave_front_door_open": "bool?"
+ },
+ "image": "hassioaddons/mqtt"
+}
\ No newline at end of file
diff --git a/mqtt/icon.png b/mqtt/icon.png
new file mode 100644
index 0000000..539d37b
Binary files /dev/null and b/mqtt/icon.png differ
diff --git a/mqtt/logo.png b/mqtt/logo.png
new file mode 100644
index 0000000..539d37b
Binary files /dev/null and b/mqtt/logo.png differ
diff --git a/netlify.toml b/netlify.toml
new file mode 100644
index 0000000..93cad00
--- /dev/null
+++ b/netlify.toml
@@ -0,0 +1,3 @@
+[build]
+ publish = "site"
+ command = "./build-site.sh"
diff --git a/nginxproxymanager/CHANGELOG.md b/nginxproxymanager/CHANGELOG.md
new file mode 100644
index 0000000..0e3ebd9
--- /dev/null
+++ b/nginxproxymanager/CHANGELOG.md
@@ -0,0 +1,29 @@
+## What’s changed
+
+## ✨ New features
+
+- Add add-on translation support @frenck (#199)
+
+## 🧰 Maintenance
+
+- Apply updated repository structure & CI workflow @frenck (#198)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Upgrade add-on base image to 9.1.6 @frenck (#184)
+- ⬆️ Bump ludeeus/action-shellcheck from 1.0.0 to 1.1.0 @dependabot (#182)
+- ⬆️ Bump certbot-dns-cloudflare from 1.13.0 to 1.14.0 in /proxy-manager @dependabot (#185)
+- ⬆️ Bump docker/build-push-action from v2.3.0 to v2.4.0 @dependabot (#186)
+- ⬆️ Upgrades nodejs to 14.16.1-r0 @frenck (#189)
+- ⬆️ Bump docker/setup-qemu-action from v1.0.1 to v1.0.2 @dependabot (#188)
+- ⬆️ Bump docker/setup-buildx-action from v1.1.1 to v1.1.2 @dependabot (#187)
+- ⬆️ Upgrades add-on base image to v9.1.7 @frenck (#190)
+- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#192)
+- ⬆️ Upgrades nodejs to 14.16.1-r1 @frenck (#194)
+- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#196)
+- Upgrades add-on base image to v9.2.0 @frenck (#197)
+- ⬆️ Upgrades mariadb to 10.5.9-r0 @frenck (#200)
+- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#202)
+- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#203)
+- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#205)
+- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#206)
diff --git a/nginxproxymanager/DOCS.md b/nginxproxymanager/DOCS.md
new file mode 100644
index 0000000..76504c5
--- /dev/null
+++ b/nginxproxymanager/DOCS.md
@@ -0,0 +1,149 @@
+# Home Assistant Community Add-on: Nginx Proxy Manager
+
+This add-on enables you to easily forward incoming connections to anywhere,
+including free SSL, without having to know too much about Nginx
+or Let’s Encrypt.
+
+Forward your domain to your Home Assistant, add-ons, or websites running
+at home or anywhere else, straight from a simple, powerful interface.
+
+Want to protect the website with a username/password? Well, it can do that too!
+Enable authentication and create a list of usernames/password that can access
+that specific application.
+
+For the power users, you can customize the behavior of each host in the
+Nginx proxy manager by providing additional Nginx directives.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Ensure you are running the MariaDB add-on. This add-on is required to use
+ the Nginx Proxy Manager add-on as it uses the database services provided.
+1. Search for the "Nginx Proxy Manager" add-on in the Supervisor add-on store
+ and install it.
+1. Start the "Nginx Proxy Manager" add-on
+1. Check the logs of the "Nginx Proxy Manager" add-on to see if everything went well.
+1. Click the "OPEN WEB UI" button and login using:
+ `admin@example.com` / `changeme`
+1. Forward port `80` and `443` from your router to your Home Assistant machine.
+1. Enjoy the add-on!
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `reset_database`
+
+By setting to `true` provides the option to delete and recreate the database. As
+the data is held within the MariaDB addon, it is not removed on an uninstall.
+
+**Note**: _Once the database is reset the configuration for the addon will be
+cleared automatically_
+
+## Known issues and limitations
+
+- The original NGinx Proxy Manager has support for forwarding TCP/UDP streams,
+ which is removed from this add-on. It makes no sense from a
+ Home Assistant / Home perspective and, by removing it, it also
+ removed the need for this add-on to run on the Docker host network.
+- This add-on stores its database on the MariaDB add-on. This also means that
+ by taking a snapshot of just the Nginx Proxy Manager add-on, will not
+ contain the data from this add-on. Please make sure you backup both
+ the Nginx Proxy Manager and the MariaDB add-ons.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2019-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-nginx-proxy-manager/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-nginx-proxy-manager/111830?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-nginx-proxy-manager/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-nginx-proxy-manager/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/nginxproxymanager/README.md b/nginxproxymanager/README.md
new file mode 100644
index 0000000..c3eb8d9
--- /dev/null
+++ b/nginxproxymanager/README.md
@@ -0,0 +1,43 @@
+# Home Assistant Community Add-on: Nginx Proxy Manager
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Manage Nginx proxy hosts with a simple, powerful interface.
+
+## About
+
+This add-on enables you to easily forward incoming connections to anywhere,
+including free SSL, without having to know too much about Nginx
+or Let’s Encrypt.
+
+Forward your domain to your Home Assistant, add-ons, or websites running
+at home or anywhere else, straight from a simple, powerful interface.
+
+Want to protect the website with a username/password? Well, it can do that too!
+Enable authentication and create a list of usernames/password that can access
+that specific application.
+
+For the power users, you can customize the behavior of each host in the
+Nginx proxy manager by providing additional Nginx directives.
+
+![Nginx Proxy Manager screenshot][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-nginx-proxy-manager/111830?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-nginx-proxy-manager/tree/v0.11.0
+[screenshot]: https://github.com/hassio-addons/addon-nginx-proxy-manager/raw/main/images/screenshot.gif
\ No newline at end of file
diff --git a/nginxproxymanager/config.json b/nginxproxymanager/config.json
new file mode 100644
index 0000000..e06942a
--- /dev/null
+++ b/nginxproxymanager/config.json
@@ -0,0 +1,39 @@
+{
+ "name": "Nginx Proxy Manager",
+ "version": "0.11.0",
+ "slug": "nginxproxymanager",
+ "description": "Manage Nginx proxy hosts with a simple, powerful interface",
+ "url": "https://github.com/hassio-addons/addon-nginx-proxy-manager",
+ "webui": "http://[HOST]:[PORT:81]",
+ "init": false,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "services": [
+ "mysql:need"
+ ],
+ "hassio_api": true,
+ "ports": {
+ "80/tcp": 80,
+ "81/tcp": 81,
+ "443/tcp": 443
+ },
+ "ports_description": {
+ "80/tcp": "HTTP Entrance port",
+ "81/tcp": "Proxy management web interface",
+ "443/tcp": "HTTPS/SSL Entrance port"
+ },
+ "map": [
+ "ssl:rw",
+ "backup:rw"
+ ],
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "reset_database": "bool?"
+ },
+ "image": "ghcr.io/hassio-addons/nginxproxymanager/{arch}"
+}
\ No newline at end of file
diff --git a/nginxproxymanager/icon.png b/nginxproxymanager/icon.png
new file mode 100644
index 0000000..c3c19c3
Binary files /dev/null and b/nginxproxymanager/icon.png differ
diff --git a/nginxproxymanager/logo.png b/nginxproxymanager/logo.png
new file mode 100644
index 0000000..a6691f6
Binary files /dev/null and b/nginxproxymanager/logo.png differ
diff --git a/nginxproxymanager/translations/en.yaml b/nginxproxymanager/translations/en.yaml
new file mode 100644
index 0000000..342aa2b
--- /dev/null
+++ b/nginxproxymanager/translations/en.yaml
@@ -0,0 +1,14 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ reset_database:
+ name: Reset database
+ description: >-
+ Enabling this option to delete and recreate the database.
+network:
+ 80/tcp: HTTP Entrance port
+ 81/tcp: NGinx Proxy Manager Admin web interface
+ 443/tcp: HTTPS/SSL Entrance port
diff --git a/portainer/CHANGELOG.md b/portainer/CHANGELOG.md
new file mode 100644
index 0000000..6f0f850
--- /dev/null
+++ b/portainer/CHANGELOG.md
@@ -0,0 +1,15 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#95)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#96)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#97)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#98)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#99)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#102)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#100)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#101)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#103)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#107)
+- ⬆️ Upgrades Portainer to v1.24.2 @frenck (#108)
diff --git a/portainer/DOCS.md b/portainer/DOCS.md
new file mode 100644
index 0000000..1c97e2a
--- /dev/null
+++ b/portainer/DOCS.md
@@ -0,0 +1,145 @@
+# Home Assistant Community Add-on: Portainer
+
+Portainer is an open-source lightweight management UI which allows you to
+easily manage a Docker host(s) or Docker swarm clusters.
+
+It has never been so easy to manage Docker. Portainer provides a detailed
+overview of Docker and allows you to manage containers, images, networks and
+volumes.
+
+## WARNING
+
+The Portainer add-on is really powerful and gives you access to virtually
+your whole system. While this add-on is created and maintained with care and
+with security in mind, in the wrong or inexperienced hands,
+it could damage your system.
+
+## Installation
+
+To install this add-on, you'll first need to go to your profile and turn on
+"Advanced Mode", once that is done go back to Home Assistant add-ons and search
+for "Portainer" and install it as you would any other add-on.
+
+To be able to use this add-on, you'll need to disable protection mode on this
+add-on. Without it, the add-on is unable to access Docker.
+
+1. Search for the "Portainer" add-on in the Supervisor add-on store and
+ install it.
+1. Set the "Protection mode" switch to off.
+1. Start the "Portainer" add-on.
+1. Check the logs of the "Portainer" add-on to see if everything went well.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+agent_secret: password
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `agent_secret`
+
+An option to set a shared agent secret. Must also be set in the remote agent
+as an Environment variable.
+
+## Known issues and limitations
+
+By default all Home Assistant managed containers are hidden from Portainer.
+This is recommended since fooling around with Home Assistant managed containers
+can easily lead to a broken system.
+
+Access to these containers can be gained by going into Portainer ->
+Settings -> Hidden containers. Then delete the listed hidden labels
+(io.hass.type labels). **Only do this if you know what you're doing!**
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-portainer/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-portainer/68836?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-portainer/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-portainer/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/portainer/README.md b/portainer/README.md
new file mode 100644
index 0000000..43b61c6
--- /dev/null
+++ b/portainer/README.md
@@ -0,0 +1,43 @@
+# Home Assistant Community Add-on: Portainer
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Manage your Docker environment with ease.
+
+## About
+
+Portainer is an open-source lightweight management UI which allows you to
+easily manage your a Docker host(s) or Docker swarm clusters.
+
+It has never been so easy to manage Docker. Portainer provides a detailed
+overview of Docker and allows you to manage containers, images, networks and
+volumes.
+
+## WARNING
+
+The Portainer add-on is really powerful and gives you virtually access to
+your whole system. While this add-on is created and maintained with care and
+with security in mind, in the wrong or inexperienced hands,
+it could damage your system.
+
+![Portainer screenshot][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-portainer/68836?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v1.5.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-portainer/tree/v1.5.1
+[screenshot]: https://github.com/hassio-addons/addon-portainer/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/portainer/config.json b/portainer/config.json
new file mode 100644
index 0000000..34651dd
--- /dev/null
+++ b/portainer/config.json
@@ -0,0 +1,36 @@
+{
+ "name": "Portainer",
+ "version": "1.5.1",
+ "slug": "portainer",
+ "description": "Manage your Docker environment with ease",
+ "url": "https://github.com/hassio-addons/addon-portainer",
+ "advanced": true,
+ "ingress": true,
+ "ingress_port": 1337,
+ "startup": "services",
+ "panel_icon": "mdi:docker",
+ "homeassistant": "0.92.0b2",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7"
+ ],
+ "init": false,
+ "map": [
+ "ssl"
+ ],
+ "ports": {
+ "8000/tcp": null
+ },
+ "ports_description": {
+ "8000/tcp": "Edge Agent Api (Enable when managing remote edge agents)"
+ },
+ "hassio_api": true,
+ "docker_api": true,
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "agent_secret": "str?"
+ },
+ "image": "ghcr.io/hassio-addons/portainer/{arch}"
+}
\ No newline at end of file
diff --git a/portainer/icon.png b/portainer/icon.png
new file mode 100644
index 0000000..c411cf1
Binary files /dev/null and b/portainer/icon.png differ
diff --git a/portainer/logo.png b/portainer/logo.png
new file mode 100644
index 0000000..e790cc3
Binary files /dev/null and b/portainer/logo.png differ
diff --git a/portainer/translations/en.yaml b/portainer/translations/en.yaml
new file mode 100644
index 0000000..208ab89
--- /dev/null
+++ b/portainer/translations/en.yaml
@@ -0,0 +1,13 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ agent_secret:
+ name: Agent Secret
+ description: >-
+ An option to set a shared agent secret. Must also be set in the remote
+ agent as an Environment variable.
+network:
+ 8000/tcp: Edge Agent Api (Enable when managing remote edge agents)
diff --git a/qbittorrent/CHANGELOG.md b/qbittorrent/CHANGELOG.md
new file mode 100644
index 0000000..281efdc
--- /dev/null
+++ b/qbittorrent/CHANGELOG.md
@@ -0,0 +1,95 @@
+
+## 14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141 (28-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202106211645-7376-e25948e73ubuntu20.04.1-ls140 (22-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202106201814-7376-e25948e73ubuntu20.04.1-ls139 (21-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202106191735-7376-e25948e73ubuntu20.04.1-ls138 (20-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202106151345-7374-667d4e421ubuntu20.04.1-ls137 (16-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202106080759-7366-33e090cfcubuntu20.04.1-ls136 (09-06-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+- Add banner in log
+- New option openvpn_alternative_mode, binds only ovpn to qbittorrent and not webui
+
+## 14.3.5.99202105022253-7365-063844ed4ubuntu20.04.1-ls133 (11-05-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.5.99202105022253-7365-063844ed4ubuntu20.04.1-ls132 (04-05-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+- New option : use specific DNS instead of the router ones to avoid spamming, especially useful if using adguard home/pihole. Keep blank to use the router dns.
+
+## 14.3.4.99202104300534-7354-9f8a6e8fbubuntu20.04.1-ls131 (01-05-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+- Robust the smb script to test for several common options
+- smbv1 bit is not used anymore
+
+## 14.3.4.99202104281424-7353-7dd9e7343ubuntu20.04.1-ls130 (29-04-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.4.99202104250604-7352-b2a43eeffubuntu20.04.1-ls129 (27-04-2021)
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.4.99202104250604-7352-b2a43eeffubuntu20.04.1-ls128
+- Update to latest version from linuxserver/docker-qbittorrent
+- Clarified steps to check in case of smb mount fail
+- New option : set domain for smb share
+- Addition of openvpn support
+
+## 14.3.4.99202104180633-7350-2c8f322afubuntu20.04.1-ls127
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.4.99202104090418-7349-789803700ubuntu20.04.1-ls126
+- Update to latest version from linuxserver/docker-qbittorrent
+- Addition of ingress
+- Viewtorrent as default ui
+
+## 14.3.4.99202104031018-7348-2b6baa609ubuntu20.04.1-ls125
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.3.99202103251603-7345-332b173e0ubuntu20.04.1-ls122
+- Update to latest version from linuxserver/docker-qbittorrent ; Rebase to focal.
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls120
+- Update to latest version from linuxserver/docker-qbittorrent ; Stop creating /config/data directory on startup
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls119
+- Update to latest version from linuxserver/docker-qbittorrent ; Fix adding search engine plugin
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls118
+- Update to latest version from linuxserver/docker-qbittorrent
+- Allow mounting shares named \ip\share in addition to //ip/share
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls117
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls116
+- Correct VueTorrent link
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls115
+- New configuration option : set download path
+- New configuration option : set username for webUI
+- New feature : mount smb share in protected mode
+- New feature : mount multiple smb shares
+- New config/feature : mount smbv1
+- Changed path : changed smb mount path from /storage/externalcifs to /mnt/$NAS name
+- Removed feature : ability to remove protection and mount local hdd, to increase the addon score
+- Update to latest version from linuxserver/docker-qbittorrent
+- Enabling of custom webUI from configuration
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu18.04.1-ls114
+- Update to latest version from linuxserver/docker-qbittorrent
+
+## 14.3.3.99202101191832-7248-da0b276d5ubuntu18.04.1-ls113
+- Update to latest version from linuxserver/docker-qbittorrent
+- Whitelist option
+- Enables PUID/GUID options
+- Addition of ssl options
+- Addition of possibility to mount local disc or smb
diff --git a/qbittorrent/Dockerfile b/qbittorrent/Dockerfile
new file mode 100644
index 0000000..5b0a2ca
--- /dev/null
+++ b/qbittorrent/Dockerfile
@@ -0,0 +1,107 @@
+ARG BUILD_FROM
+ARG BUILD_VERSION
+ARG BUILD_UPSTREAM="14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141"
+FROM ${BUILD_FROM}${BUILD_UPSTREAM}
+
+# Base system
+ARG BASHIO_VERSION=0.13.0
+ARG TEMPIO_VERSION=2021.01.0
+ARG BUILD_ARCH
+
+RUN \
+ ####################
+ # AVOID NTP ISSUES #
+ ####################
+ yum install -y ntp && \
+ service ntpd stop && \
+ ntpdate pool.ntp.org && \
+ \
+ ################
+ # Install apps #
+ ################
+ apt-get update && \
+ apt-get install -y \
+ apt-transport-https \
+ jq \
+ curl \
+ cifs-utils \
+ keyutils \
+ nginx \
+ coreutils \
+ openvpn \
+ \
+ ##################
+ # Install tempio #
+ ##################
+ curl -L -f -s -o /usr/bin/tempio \
+ "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" && \
+ chmod a+x /usr/bin/tempio && \
+ \
+ ##############
+ # STATISTICS #
+ ##############
+ curl -L -f -s -o /tmp/tmp \
+ "https://github.com/alexbelgium/downloads-tracker/archive/refs/tags/Qbittorrent.zip" && \
+ \
+ ##################
+ # Install bashio #
+ ##################
+ mkdir -p /tmp/bashio && \
+ curl -L -f -s "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" && \
+ | tar -xzf - --strip 1 -C /tmp/bashio && \
+ mv /tmp/bashio/lib /usr/lib/bashio && \
+ ln -s /usr/lib/bashio/bashio /usr/bin/bashio && \
+ rm -rf /tmp/bashio && \
+ \
+ ########################################
+ # Correct upstream image folders links #
+ ########################################
+ \
+ # Allow UID and GID setting
+ sed -i 's/bash/bashio/g' /etc/cont-init.d/10-adduser && \
+ sed -i 's/{PUID:-911}/(bashio::config "PUID")/g' /etc/cont-init.d/10-adduser && \
+ sed -i 's/{PGID:-911}/(bashio::config "PGID")/g' /etc/cont-init.d/10-adduser && \
+ \
+ # Correct permissions
+ sed -i 's|/config|-R /config/qBittorrent|g' /etc/cont-init.d/10-adduser && \
+ sed -i 's= /config=/config/qBittorrent || true=g' /etc/cont-init.d/30-config && \
+ \
+ # Set download folder to /share
+ sed -i 's|/downloads/|/share/qBittorrent/|g' /defaults/qBittorrent.conf && \
+ \
+ # Remove fixed folders, allows connection to webUI
+ sed '11,13d' /defaults/qBittorrent.conf && \
+ echo 'WebUI\HostHeaderValidation=false' >> /defaults/qBittorrent.conf && \
+ echo 'WebUI\LocalHostAuth=false' >> /defaults/qBittorrent.conf
+
+# Copy root filesystem
+COPY rootfs /
+
+VOLUME [ "/data" ]
+
+### LABELS
+ARG BUILD_ARCH
+ARG BUILD_DATE
+ARG BUILD_DESCRIPTION
+ARG BUILD_NAME
+ARG BUILD_REF
+ARG BUILD_REPOSITORY
+ARG BUILD_VERSION
+LABEL \
+ io.hass.name="${BUILD_NAME}" \
+ io.hass.description="${BUILD_DESCRIPTION}" \
+ io.hass.arch="${BUILD_ARCH}" \
+ io.hass.type="addon" \
+ io.hass.version=${BUILD_VERSION} \
+ maintainer="alexbelgium (https://github.com/alexbelgium)" \
+ org.opencontainers.image.title="${BUILD_NAME}" \
+ org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
+ org.opencontainers.image.vendor="Home Assistant Add-ons" \
+ org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \
+ org.opencontainers.image.licenses="MIT" \
+ org.opencontainers.image.url="https://github.com/alexbelgium" \
+ org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
+ org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
+ org.opencontainers.image.created=${BUILD_DATE} \
+ org.opencontainers.image.revision=${BUILD_REF} \
+ org.opencontainers.image.version=${BUILD_VERSION}
diff --git a/qbittorrent/README.md b/qbittorrent/README.md
new file mode 100644
index 0000000..790fdf1
--- /dev/null
+++ b/qbittorrent/README.md
@@ -0,0 +1,61 @@
+# Home assistant add-on: qBittorrent
+![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield]
+![Supports smb mounts][smb-shield] ![Supports openvpn][openvpn-shield] ![Supports ingress][ingress-shield] ![Supports ssl][ssl-shield]
+
+## About
+
+qBittorrent is a bittorrent client.
+This addon is based on the [docker image](https://github.com/linuxserver/qbittorrent) from linuxserver.io.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Hass.io add-on.
+
+1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance.
+1. Install this add-on.
+1. Click the `Save` button to store your configuration.
+1. Start the add-on.
+1. Check the logs of the add-on to see if everything went well.
+1. Carefully configure the add-on to your preferences, see the official documentation for for that.
+
+## Configuration
+Webui can be found at . The default username/password : described in the startup log. Configurations can be done through the app, except for the following options.
+
+Network disk is mounted to /mnt/storagename
+
+OpenVPN must be enabled from within qBittorrent options
+
+```yaml
+GUID: user
+GPID: user
+ssl: true/false
+certfile: fullchain.pem #ssl certificate
+keyfile: privkey.pem #sslkeyfile
+whitelist: "localhost,192.168.0.0/16" # list ip subnets that won't need a password (optional)
+Username: "admin" #username to access webui. Please change it as the default is admin for all installations.
+customUI: selection from list # alternative webUI can be set here. Latest version set at each addon start.
+SavePath: "/share/qbittorrent" # Define the download directory
+DNS_servers : 8.8.8.8,1.1.1.1 # Keep blank to use router’s DNS, or set custom DNS to avoid spamming in case of local DNS ad-remover
+networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas
+cifsusername: "username" # optional, smb username, same for all smb shares
+cifspassword: "password" # optional, smb password, same for all smb shares)
+openvpn_enabled: yes/no
+openvpn_alternative_mode: true/false # if enabled, will tunnel only qbittorrent and not webui through vpn. Allows webui connection from external networks, but risk of decreased stability.
+openvpn_config: must reference an openvpn config files stored in /config/openvpn
+openvpn_username: openvpn username
+openvpn_password": openvpn password
+```
+
+## Support
+Create an issue on github, or ask on the [home assistant thread](https://community.home-assistant.io/t/home-assistant-addon-qbittorrent/279247)
+
+[repository]: https://github.com/alexbelgium/hassio-addons
+[smb-shield]: https://img.shields.io/badge/smb-yes-green.svg
+[openvpn-shield]: https://img.shields.io/badge/openvpn-yes-green.svg
+[ingress-shield]: https://img.shields.io/badge/ingress-yes-green.svg
+[ssl-shield]: https://img.shields.io/badge/ssl-yes-green.svg
+[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
+[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
+[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
+[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
diff --git a/qbittorrent/apparmor.txt b/qbittorrent/apparmor.txt
new file mode 100644
index 0000000..f2004bf
--- /dev/null
+++ b/qbittorrent/apparmor.txt
@@ -0,0 +1,50 @@
+#include
+
+profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) {
+ #include
+
+ capability,
+ file,
+ mount,
+ umount,
+ remount,
+
+ capability setgid,
+ capability setuid,
+ capability sys_admin,
+ capability dac_read_search,
+ capability net_admin,
+ capability dac_override,
+ # capability sys_rawio,
+
+# S6-Overlay
+ /bin/** ix,
+ /usr/bin/** ix,
+ /usr/lib/bashio/** ix,
+ /etc/s6/** rix,
+ /run/s6/** rix,
+ /etc/services.d/** rwix,
+ /etc/cont-init.d/** rwix,
+ /etc/cont-finish.d/** rwix,
+ /init rix,
+ /var/run/** mrwkl,
+ /var/run/ mrwkl,
+ /dev/i2c-1 mrwkl,
+ # Files required
+ /dev/sda1 mrwkl,
+ /dev/sdb1 mrwkl,
+ /dev/mmcblk0p1 mrwkl,
+ /dev/* mrwkl,
+ /tmp/** mrkwl,
+ /dev/net/tun mrwkl,
+
+ # Data access
+ /data/** rw,
+
+ # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
+ ptrace (trace,read) peer=docker-default,
+
+ # docker daemon confinement requires explict allow rule for signal
+ signal (receive) set=(kill,term) peer=/usr/bin/docker,
+
+}
diff --git a/qbittorrent/build.json b/qbittorrent/build.json
new file mode 100644
index 0000000..e379961
--- /dev/null
+++ b/qbittorrent/build.json
@@ -0,0 +1,8 @@
+{
+ "build_from": {
+ "armv7": "linuxserver/qbittorrent:arm32v7-",
+ "armhf": "linuxserver/qbittorrent:arm32v7-",
+ "aarch64": "linuxserver/qbittorrent:arm64v8-",
+ "amd64": "linuxserver/qbittorrent:amd64-"
+ }
+}
diff --git a/qbittorrent/config.json b/qbittorrent/config.json
new file mode 100644
index 0000000..b549f38
--- /dev/null
+++ b/qbittorrent/config.json
@@ -0,0 +1,85 @@
+{
+ "name": "Qbittorrent",
+ "version": "14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141",
+ "upstream": "14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141",
+ "slug": "qbittorrent",
+ "description": "qBittorrent is a bittorrent client",
+ "url": "https://github.com/alexbelgium/hassio-addons",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "armhf"
+ ],
+ "ingress": true,
+ "ingress_port": 8099,
+ "panel_icon": "mdi:progress-download",
+ "ports": {
+ "8080/tcp": 8081,
+ "6881/tcp": 6881,
+ "6881/udp": 6881
+ },
+ "ports_description": {
+ "8080/tcp": "Web UI port (nor required for Ingress)",
+ "6881/tcp": "Peer port",
+ "6881/udp": "Peer port"
+ },
+ "map": [
+ "media:rw",
+ "config:rw",
+ "share:rw",
+ "ssl"
+ ],
+ "apparmor": true,
+ "host_network": false,
+ "privileged": [
+ "SYS_ADMIN",
+ "DAC_READ_SEARCH",
+ "NET_ADMIN"
+ ],
+ "devices": [
+ "/dev/net/tun"
+ ],
+ "webui": "[PROTO:ssl]://[HOST]:[PORT:8080]",
+ "boot": "auto",
+ "environment": {
+ "WEBUI_PORT": "8080",
+ "PUID": "0",
+ "PGID": "0"
+ },
+ "options": {
+ "ssl": false,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem",
+ "whitelist": "localhost,127.0.0.1,172.30.0.0/16,192.168.0.0/16",
+ "customUI": "vuetorrent",
+ "SavePath": "/share/qBittorrent",
+ "Username": "admin",
+ "DNS_server": "8.8.8.8,1.1.1.1",
+ "PUID": "0",
+ "PGID": "0"
+ },
+ "schema": {
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str",
+ "whitelist": "str?",
+ "PUID": "int?",
+ "PGID": "int?",
+ "SavePath": "str?",
+ "Username": "str?",
+ "customUI": "list(|vuetorrent|qbit-matUI|qb-web)?",
+ "DNS_server": "str?",
+ "networkdisks": "str?",
+ "smbv1": "bool?",
+ "cifsusername": "str?",
+ "cifspassword": "str?",
+ "cifsdomain": "str?",
+ "openvpn_enabled": "bool?",
+ "openvpn_alternative_mode": "bool?",
+ "openvpn_config": "str?",
+ "openvpn_username": "str?",
+ "openvpn_password": "str?",
+ "TZ": "str?"
+ }
+}
diff --git a/qbittorrent/icon.png b/qbittorrent/icon.png
new file mode 100644
index 0000000..6087a9e
Binary files /dev/null and b/qbittorrent/icon.png differ
diff --git a/qbittorrent/logo.png b/qbittorrent/logo.png
new file mode 100644
index 0000000..6087a9e
Binary files /dev/null and b/qbittorrent/logo.png differ
diff --git a/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh b/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh
new file mode 100644
index 0000000..71b1a4e
--- /dev/null
+++ b/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/with-contenv bashio
+# ==============================================================================
+# Home Assistant Community Add-on: Base Images
+# Displays a simple add-on banner on startup
+# ==============================================================================
+if bashio::supervisor.ping; then
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue " Add-on: $(bashio::addon.name)"
+ bashio::log.blue " $(bashio::addon.description)"
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+
+ bashio::log.blue " Add-on version: $(bashio::addon.version)"
+ if bashio::var.true "$(bashio::addon.update_available)"; then
+ bashio::log.magenta ' There is an update available for this add-on!'
+ bashio::log.magenta \
+ " Latest add-on version: $(bashio::addon.version_latest)"
+ bashio::log.magenta ' Please consider upgrading as soon as possible.'
+ else
+ bashio::log.green ' You are running the latest version of this add-on.'
+ fi
+
+ bashio::log.blue " System: $(bashio::info.operating_system)" \
+ " ($(bashio::info.arch) / $(bashio::info.machine))"
+ bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)"
+ bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)"
+
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+ bashio::log.blue \
+ ' Please, share the above information when looking for help'
+ bashio::log.blue \
+ ' or support in, e.g., GitHub, forums or the Discord chat.'
+ bashio::log.green \
+ ' https://github.com/alexbelgium/hassio-addons'
+ bashio::log.blue \
+ '-----------------------------------------------------------'
+fi
diff --git a/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh b/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh
new file mode 100644
index 0000000..598887c
--- /dev/null
+++ b/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/with-contenv bashio
+
+#################
+# NGINX SETTING #
+#################
+
+declare admin_port
+declare qbittorrent_protocol=http
+
+# Generate Ingress configuration
+if bashio::config.true 'ssl'; then
+qbittorrent_protocol=https
+fi
+
+bashio::var.json \
+ interface "$(bashio::addon.ip_address)" \
+ port "^$(bashio::addon.ingress_port)" \
+ protocol "${qbittorrent_protocol}" \
+ certfile "$(bashio::config 'certfile')" \
+ keyfile "$(bashio::config 'keyfile')" \
+ ssl "^$(bashio::config 'ssl')" \
+ | tempio \
+ -template /etc/nginx/templates/ingress.gtpl \
+ -out /etc/nginx/servers/ingress.conf
+
+######################
+# VUETORRENT INSTALL #
+######################
+
+LATEST_RELEASE=$(curl -s -L https://api.github.com/repos/wdaan/vuetorrent/releases/latest \
+ | grep "browser_download_url.*zip" \
+ | cut -d : -f 2,3 \
+ | tr -d \" \
+ | xargs)
+
+curl -s -S -O -J -L $LATEST_RELEASE
+unzip -o vuetorrent.zip -d / >/dev/null
+rm /vuetorrent.zip >/dev/null
diff --git a/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh b/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh
new file mode 100644
index 0000000..dd80ef4
--- /dev/null
+++ b/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/with-contenv bashio
+
+###############
+# DNS SETTING #
+###############
+
+# Avoid usage of local dns such as adguard home or pihole\n"
+
+if bashio::config.has_value 'DNS_server'; then
+ # Define variables
+ DNSSERVER=$(bashio::config 'DNS_server')
+ DNS=""
+ DNSLIST=""
+
+ # Get DNS servers
+ for server in ${DNSSERVER//,/ } # Separate comma separated values
+ do
+ DNS="${DNS}nameserver $server\n"
+ DNSLIST="$server $DNSLIST"
+ done
+
+ # Write resolv.conf
+ printf "${DNS}" > /etc/resolv.conf
+ chmod 644 /etc/resolv.conf
+ bashio::log.info "DNS SERVERS set to $DNSLIST"
+else
+ bashio::log.info "DNS Servers option empty. Using default router (or HA) dns servers."
+fi
diff --git a/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh b/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh
new file mode 100644
index 0000000..21eaa51
--- /dev/null
+++ b/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh
@@ -0,0 +1,128 @@
+#!/usr/bin/with-contenv bashio
+
+##########
+# INIT #
+##########
+
+# Define preferences line
+cd /config/qBittorrent/
+LINE=$(sed -n '/Preferences/=' qBittorrent.conf)
+LINE=$((LINE + 1))
+
+##################
+# Default folder #
+##################
+
+if bashio::config.has_value 'SavePath'; then
+ DOWNLOADS=$(bashio::config 'SavePath')
+ sed -i '/SavePath/d' qBittorrent.conf
+ sed -i "$LINE i\Downloads\\\SavePath=$DOWNLOADS" qBittorrent.conf
+ mkdir -p $DOWNLOADS || true
+ chown -R abc:abc $DOWNLOADS || bashio::log.info "Error, please check default save folder configuration in addon"
+ bashio::log.info "Downloads can be found in $DOWNLOADS"
+
+else
+ mkdir -p /share/qBittorrent || true
+ chown -R abc:abc /share/qBittorrent
+
+fi
+
+################
+# Correct Port #
+################
+
+sed -i '/PortRangeMin/d' qBittorrent.conf
+sed -i "$LINE i\Connection\\\PortRangeMin=6881" qBittorrent.conf
+
+################
+# SSL CONFIG #
+################
+
+# Clean data
+sed -i '/HTTPS/d' qBittorrent.conf
+
+bashio::config.require.ssl
+if bashio::config.true 'ssl'; then
+ bashio::log.info "ssl enabled. If webui don't work, disable ssl or check your certificate paths"
+ #set variables
+ CERTFILE=$(bashio::config 'certfile')
+ KEYFILE=$(bashio::config 'keyfile')
+ sed -i "$LINE i\WebUI\\\HTTPS\\\Enabled=True" qBittorrent.conf
+ sed -i "$LINE i\WebUI\\\HTTPS\\\CertificatePath=/ssl/$CERTFILE" qBittorrent.conf
+ sed -i "$LINE i\WebUI\\\HTTPS\\\KeyPath=/ssl/$KEYFILE" qBittorrent.conf
+fi
+
+################
+# WHITELIST #
+################
+
+cd /config/qBittorrent/
+if bashio::config.has_value 'whitelist'; then
+ WHITELIST=$(bashio::config 'whitelist')
+ #clean data
+ sed -i '/AuthSubnetWhitelist/d' qBittorrent.conf
+ sed -i "$LINE i\WebUI\\\AuthSubnetWhitelistEnabled=true" qBittorrent.conf
+ sed -i "$LINE i\WebUI\\\AuthSubnetWhitelist=$WHITELIST" qBittorrent.conf
+ bashio::log.info "Whitelisted subsets will not require a password : $WHITELIST"
+fi
+
+###############
+# USERNAME #
+###############
+
+cd /config/qBittorrent/
+if bashio::config.has_value 'Username'; then
+ USERNAME=$(bashio::config 'Username')
+ #clean data
+ sed -i '/WebUI\\\Username/d' qBittorrent.conf
+ #add data
+ sed -i "$LINE i\WebUI\\\Username=$USERNAME" qBittorrent.conf
+ bashio::log.info "WEBUI username set to $USERNAME"
+fi
+
+################
+# Alternate UI #
+################
+
+# Clean data
+sed -i '/AlternativeUIEnabled/d' qBittorrent.conf
+sed -i '/RootFolder/d' qBittorrent.conf
+rm -f -r /webui
+mkdir -p /webui
+chown abc:abc /webui
+
+if bashio::config.has_value 'customUI'; then
+ ### Variables
+ CUSTOMUI=$(bashio::config 'customUI')
+ bashio::log.info "Alternate UI enabled : $CUSTOMUI. If webui don't work, disable this option"
+
+ ### Download WebUI
+ case $CUSTOMUI in
+ "vuetorrent")
+ curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/WDaan/VueTorrent/releases/latest | grep -o "http.*vuetorrent.zip") >/dev/null
+ ;;
+
+ "qbit-matUI")
+ curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/bill-ahmed/qbit-matUI/releases/latest | grep -o "http.*Unix.*.zip") >/dev/null
+ ;;
+
+ "qb-web")
+ curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/CzBiX/qb-web/releases | grep -o "http.*qb-web-.*zip") >/dev/null
+ ;;
+ esac
+
+ ### Install WebUI
+ mkdir -p /webui/$CUSTOMUI
+ unzip -q /webui/release.zip -d /webui/$CUSTOMUI
+ rm /webui/*.zip
+ CUSTOMUIDIR="$(dirname "$(find /webui/$CUSTOMUI -iname "public" -type d)")"
+ sed -i "$LINE i\WebUI\\\AlternativeUIEnabled=true" /config/qBittorrent/qBittorrent.conf
+ sed -i "$LINE i\WebUI\\\RootFolder=$CUSTOMUIDIR" /config/qBittorrent/qBittorrent.conf
+fi
+
+##########
+# CLOSE #
+##########
+
+bashio::log.info "Default username/password : admin/adminadmin"
+bashio::log.info "Configuration can be found in /config/qBittorrent"
diff --git a/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh b/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh
new file mode 100644
index 0000000..2e5d11a
--- /dev/null
+++ b/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/with-contenv bashio
+
+####################
+# MOUNT SMB SHARES #
+####################
+if bashio::config.has_value 'networkdisks'; then
+ # Mount CIFS Share if configured and if Protection Mode is active
+ bashio::log.info 'Mounting smb share(s)...'
+
+ # Define variables
+ MOREDISKS=$(bashio::config 'networkdisks')
+ CIFS_USERNAME=$(bashio::config 'cifsusername')
+ CIFS_PASSWORD=$(bashio::config 'cifspassword')
+ MOUNTED=false
+ SMBVERS=""
+ SECVERS=""
+
+ if bashio::config.has_value 'cifsdomain'; then
+ DOMAIN=",domain=$(bashio::config 'cifsdomain')"
+ else
+ DOMAIN=""
+ fi
+
+ # Mounting disks
+ for disk in ${MOREDISKS//,/ } # Separate comma separated values
+ do
+ # Clean name of network share
+ disk=$(echo $disk | sed "s,/$,,") # Remove / at end of name
+ diskname=${disk//\\//} #replace \ with /
+ diskname=${diskname##*/} # Get only last part of the name
+ # Prepare mount point
+ mkdir -p /mnt/$diskname
+ chown -R root:root /mnt/$diskname
+
+ #Tries to mount with default options
+ mount -t cifs -o rw,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$DOMAIN $disk /mnt/$diskname 2>ERRORCODE && MOUNTED=true || MOUNTED=false
+
+ # if Fail test different smb and sec versions
+ if [ $MOUNTED = false ]; then
+ for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false
+ for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5"
+ do
+ mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false
+ done
+ done
+ fi
+
+ # Messages
+ if [ $MOUNTED = true ]; then
+ #Test write permissions
+ touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw"
+ else
+ # message if still fail
+ bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share
+ bashio::log.fatal "Error read : $( /etc/openvpn/credentials
+ openvpn_password=$(bashio::config 'openvpn_password')
+ echo "${openvpn_password}" >> /etc/openvpn/credentials
+ sed -i 's/auth-user-pass.*/auth-user-pass \/etc\/openvpn\/credentials/g' /etc/openvpn/config.ovpn
+
+ # Permissions
+ chmod 600 /etc/openvpn/credentials
+ chmod 755 /etc/openvpn/up.sh
+ chmod 755 /etc/openvpn/down.sh
+ chmod 755 /etc/openvpn/up-qbittorrent.sh
+ chmod +x /etc/openvpn/up.sh
+ chmod +x /etc/openvpn/up-qbittorrent.sh
+
+ bashio::log.info "openvpn correctly set, qbittorrent will run tunnelled through openvpn"
+
+ #########################
+ # CONFIGURE QBITTORRENT #
+ #########################
+
+ QBT_CONFIG_FILE="/config/qBittorrent/qBittorrent.conf"
+ # Define preferences line
+ cd /config/qBittorrent/
+ LINE=$(sed -n '/Preferences/=' qBittorrent.conf)
+ LINE=$((LINE + 1))
+
+ # If qBittorrent.conf exists
+ if [ -f "$QBT_CONFIG_FILE" ]; then
+ # Remove previous line and bind tun0
+ sed -i '/Interface/d' qBittorrent.conf
+ # sed -i '/PortRangeMin/d' qBittorrent.conf
+ # Bind tun0
+ # sed -i "$LINE i\Connection\\\Interface=tun0" qBittorrent.conf
+ # sed -i "$LINE i\Connection\\\InterfaceName=tun0" qBittorrent.conf
+ else
+ bashio::log.error "qBittorrent config file doesn't exist, openvpn must be added manually to qbittorrent options "
+ exit 1
+ fi
+
+ #####################
+ # ALTERNATIVE MODE #
+ #####################
+
+ if bashio::config.true 'openvpn_alternative_mode'; then
+ # Remove previous line and bind tun0
+ sed -i '/Interface/d' qBittorrent.conf
+ # Bind tun0
+ sed -i "$LINE i\Connection\\\Interface=tun0" qBittorrent.conf
+ sed -i "$LINE i\Connection\\\InterfaceName=tun0" qBittorrent.conf
+ # Modify ovpn config
+ echo "route-nopull" >> /etc/openvpn/config.ovpn
+ fi
+
+else
+
+ ##################
+ # REMOVE OPENVPN #
+ ##################
+ # Ensure no redirection by removing the direction tag
+ cd /config/qBittorrent/
+ sed -i '/Interface/d' qBittorrent.conf
+ bashio::log.info "Direct connection without VPN enabled"
+
+fi
diff --git a/qbittorrent/rootfs/etc/nginx/includes/mime.types b/qbittorrent/rootfs/etc/nginx/includes/mime.types
new file mode 100644
index 0000000..7c7cdef
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/mime.types
@@ -0,0 +1,96 @@
+types {
+ text/html html htm shtml;
+ text/css css;
+ text/xml xml;
+ image/gif gif;
+ image/jpeg jpeg jpg;
+ application/javascript js;
+ application/atom+xml atom;
+ application/rss+xml rss;
+
+ text/mathml mml;
+ text/plain txt;
+ text/vnd.sun.j2me.app-descriptor jad;
+ text/vnd.wap.wml wml;
+ text/x-component htc;
+
+ image/png png;
+ image/svg+xml svg svgz;
+ image/tiff tif tiff;
+ image/vnd.wap.wbmp wbmp;
+ image/webp webp;
+ image/x-icon ico;
+ image/x-jng jng;
+ image/x-ms-bmp bmp;
+
+ font/woff woff;
+ font/woff2 woff2;
+
+ application/java-archive jar war ear;
+ application/json json;
+ application/mac-binhex40 hqx;
+ application/msword doc;
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
+ application/vnd.apple.mpegurl m3u8;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
+ application/vnd.ms-excel xls;
+ application/vnd.ms-fontobject eot;
+ application/vnd.ms-powerpoint ppt;
+ application/vnd.oasis.opendocument.graphics odg;
+ application/vnd.oasis.opendocument.presentation odp;
+ application/vnd.oasis.opendocument.spreadsheet ods;
+ application/vnd.oasis.opendocument.text odt;
+ application/vnd.openxmlformats-officedocument.presentationml.presentation
+ pptx;
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+ xlsx;
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document
+ docx;
+ application/vnd.wap.wmlc wmlc;
+ application/x-7z-compressed 7z;
+ application/x-cocoa cco;
+ application/x-java-archive-diff jardiff;
+ application/x-java-jnlp-file jnlp;
+ application/x-makeself run;
+ application/x-perl pl pm;
+ application/x-pilot prc pdb;
+ application/x-rar-compressed rar;
+ application/x-redhat-package-manager rpm;
+ application/x-sea sea;
+ application/x-shockwave-flash swf;
+ application/x-stuffit sit;
+ application/x-tcl tcl tk;
+ application/x-x509-ca-cert der pem crt;
+ application/x-xpinstall xpi;
+ application/xhtml+xml xhtml;
+ application/xspf+xml xspf;
+ application/zip zip;
+
+ application/octet-stream bin exe dll;
+ application/octet-stream deb;
+ application/octet-stream dmg;
+ application/octet-stream iso img;
+ application/octet-stream msi msp msm;
+
+ audio/midi mid midi kar;
+ audio/mpeg mp3;
+ audio/ogg ogg;
+ audio/x-m4a m4a;
+ audio/x-realaudio ra;
+
+ video/3gpp 3gpp 3gp;
+ video/mp2t ts;
+ video/mp4 mp4;
+ video/mpeg mpeg mpg;
+ video/quicktime mov;
+ video/webm webm;
+ video/x-flv flv;
+ video/x-m4v m4v;
+ video/x-mng mng;
+ video/x-ms-asf asx asf;
+ video/x-ms-wmv wmv;
+ video/x-msvideo avi;
+}
diff --git a/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf b/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf
new file mode 100644
index 0000000..1990d49
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf
@@ -0,0 +1,15 @@
+proxy_http_version 1.1;
+proxy_ignore_client_abort off;
+proxy_read_timeout 86400s;
+proxy_redirect off;
+proxy_send_timeout 86400s;
+proxy_max_temp_file_size 0;
+
+proxy_set_header Accept-Encoding "";
+proxy_set_header Connection $connection_upgrade;
+proxy_set_header Host $http_host;
+proxy_set_header Upgrade $http_upgrade;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
+proxy_set_header X-NginX-Proxy true;
+proxy_set_header X-Real-IP $remote_addr;
diff --git a/qbittorrent/rootfs/etc/nginx/includes/resolver.conf b/qbittorrent/rootfs/etc/nginx/includes/resolver.conf
new file mode 100644
index 0000000..6485af1
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/resolver.conf
@@ -0,0 +1 @@
+resolver 127.0.0.11;
diff --git a/qbittorrent/rootfs/etc/nginx/includes/server_params.conf b/qbittorrent/rootfs/etc/nginx/includes/server_params.conf
new file mode 100644
index 0000000..09c0654
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/server_params.conf
@@ -0,0 +1,6 @@
+root /dev/null;
+server_name $hostname;
+
+add_header X-Content-Type-Options nosniff;
+add_header X-XSS-Protection "1; mode=block";
+add_header X-Robots-Tag none;
diff --git a/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf b/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf
new file mode 100644
index 0000000..6f15005
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf
@@ -0,0 +1,9 @@
+ssl_protocols TLSv1.2;
+ssl_prefer_server_ciphers on;
+ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
+ssl_ecdh_curve secp384r1;
+ssl_session_timeout 10m;
+ssl_session_cache shared:SSL:10m;
+ssl_session_tickets off;
+ssl_stapling on;
+ssl_stapling_verify on;
diff --git a/qbittorrent/rootfs/etc/nginx/includes/upstream.conf b/qbittorrent/rootfs/etc/nginx/includes/upstream.conf
new file mode 100644
index 0000000..b292326
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/includes/upstream.conf
@@ -0,0 +1,3 @@
+upstream backend {
+ server 127.0.0.1:8080;
+}
diff --git a/qbittorrent/rootfs/etc/nginx/nginx.conf b/qbittorrent/rootfs/etc/nginx/nginx.conf
new file mode 100644
index 0000000..7e5bc6f
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/nginx.conf
@@ -0,0 +1,56 @@
+# Run nginx in foreground.
+daemon off;
+
+# This is run inside Docker.
+user root;
+
+# Pid storage location.
+pid /var/run/nginx.pid;
+
+# Set number of worker processes.
+worker_processes 1;
+
+# Enables the use of JIT for regular expressions to speed-up their processing.
+pcre_jit on;
+
+# Write error log to Hass.io add-on log.
+error_log /proc/1/fd/1 error;
+
+# Load allowed environment vars
+env HASSIO_TOKEN;
+
+# Load dynamic modules.
+include /etc/nginx/modules/*.conf;
+
+# Max num of simultaneous connections by a worker process.
+events {
+ worker_connections 512;
+}
+
+http {
+ include /etc/nginx/includes/mime.types;
+
+ log_format hassio '[$time_local] $status '
+ '$http_x_forwarded_for($remote_addr) '
+ '$request ($http_user_agent)';
+
+ access_log /proc/1/fd/1 hassio;
+ client_max_body_size 4G;
+ default_type application/octet-stream;
+ gzip on;
+ keepalive_timeout 65;
+ sendfile on;
+ server_tokens off;
+ tcp_nodelay on;
+ tcp_nopush on;
+
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ include /etc/nginx/includes/resolver.conf;
+ include /etc/nginx/includes/upstream.conf;
+
+ include /etc/nginx/servers/*.conf;
+}
diff --git a/qbittorrent/rootfs/etc/nginx/servers/.gitkeep b/qbittorrent/rootfs/etc/nginx/servers/.gitkeep
new file mode 100644
index 0000000..85ad51b
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/servers/.gitkeep
@@ -0,0 +1 @@
+Without requirements or design, programming is the art of adding bugs to an empty text file. (Louis Srygley)
diff --git a/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl b/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl
new file mode 100644
index 0000000..f7dc63c
--- /dev/null
+++ b/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl
@@ -0,0 +1,17 @@
+server {
+ listen {{ .interface }}:{{ .port }} default_server;
+ server_name vue.torrent;
+ include /etc/nginx/includes/server_params.conf;
+ include /etc/nginx/includes/proxy_params.conf;
+
+ location / {
+ root /vuetorrent/public/;
+ }
+
+ location /api {
+ proxy_pass {{ .protocol }}://backend;
+ http2_push_preload on;
+ client_max_body_size 10M;
+ }
+
+}
diff --git a/qbittorrent/rootfs/etc/openvpn/down.sh b/qbittorrent/rootfs/etc/openvpn/down.sh
new file mode 100644
index 0000000..50d463f
--- /dev/null
+++ b/qbittorrent/rootfs/etc/openvpn/down.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Copyright (c) 2006-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# If we have a service specific script, run this now
+if [ -x /etc/openvpn/"${RC_SVCNAME}"-down.sh ] ; then
+ /etc/openvpn/"${RC_SVCNAME}"-down.sh "$@"
+fi
+
+# Restore resolv.conf to how it was
+if [ "${PEER_DNS}" != "no" ]; then
+ if [ -x /sbin/resolvconf ] ; then
+ /sbin/resolvconf -d "${dev}"
+ elif [ -e /etc/resolv.conf-"${dev}".sv ] ; then
+ # Important that we cat instead of move incase resolv.conf is
+ # a symlink and not an actual file
+ cat /etc/resolv.conf-"${dev}".sv > /etc/resolv.conf
+ rm -f /etc/resolv.conf-"${dev}".sv
+ fi
+fi
+
+if [ -n "${RC_SVCNAME}" ]; then
+ # Re-enter the init script to start any dependant services
+ if /etc/init.d/"${RC_SVCNAME}" --quiet status ; then
+ export IN_BACKGROUND=true
+ /etc/init.d/"${RC_SVCNAME}" --quiet stop
+ fi
+fi
+
+exit 0
+
+# vim: ts=4 :
diff --git a/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh b/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh
new file mode 100644
index 0000000..0462645
--- /dev/null
+++ b/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/with-contenv bashio
+
+WEBUI_PORT=${WEBUI_PORT:-8080}
+
+exec s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}"
diff --git a/qbittorrent/rootfs/etc/openvpn/up.sh b/qbittorrent/rootfs/etc/openvpn/up.sh
new file mode 100644
index 0000000..82a9bae
--- /dev/null
+++ b/qbittorrent/rootfs/etc/openvpn/up.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# launch qbittorrent
+/etc/openvpn/up-qbittorrent.sh "${4}" &
+
+# Copyright (c) 2006-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# Setup our resolv.conf
+# Vitally important that we use the domain entry in resolv.conf so we
+# can setup the nameservers are for the domain ONLY in resolvconf if
+# we're using a decent dns cache/forwarder like dnsmasq and NOT nscd/libc.
+# nscd/libc users will get the VPN nameservers before their other ones
+# and will use the first one that responds - maybe the LAN ones?
+# non resolvconf users just the the VPN resolv.conf
+
+# FIXME:- if we have >1 domain, then we have to use search :/
+# We need to add a flag to resolvconf to say
+# "these nameservers should only be used for the listed search domains
+# if other global nameservers are present on other interfaces"
+# This however, will break compatibility with Debians resolvconf
+# A possible workaround would be to just list multiple domain lines
+# and try and let resolvconf handle it
+
+if [ "${PEER_DNS}" != "no" ]; then
+ NS=
+ DOMAIN=
+ SEARCH=
+ i=1
+ while true ; do
+ eval opt=\$foreign_option_${i}
+ [ -z "${opt}" ] && break
+ if [ "${opt}" != "${opt#dhcp-option DOMAIN *}" ] ; then
+ if [ -z "${DOMAIN}" ] ; then
+ DOMAIN="${opt#dhcp-option DOMAIN *}"
+ else
+ SEARCH="${SEARCH}${SEARCH:+ }${opt#dhcp-option DOMAIN *}"
+ fi
+ elif [ "${opt}" != "${opt#dhcp-option DNS *}" ] ; then
+ NS="${NS}nameserver ${opt#dhcp-option DNS *}\n"
+ fi
+ i=$((${i} + 1))
+ done
+
+ if [ -n "${NS}" ] ; then
+ DNS="# Generated by openvpn for interface ${dev}\n"
+ if [ -n "${SEARCH}" ] ; then
+ DNS="${DNS}search ${DOMAIN} ${SEARCH}\n"
+ elif [ -n "${DOMAIN}" ]; then
+ DNS="${DNS}domain ${DOMAIN}\n"
+ fi
+ DNS="${DNS}${NS}"
+ if [ -x /sbin/resolvconf ] ; then
+ printf "${DNS}" | /sbin/resolvconf -a "${dev}"
+ else
+ # Preserve the existing resolv.conf
+ if [ -e /etc/resolv.conf ] ; then
+ cp /etc/resolv.conf /etc/resolv.conf-"${dev}".sv
+ fi
+ printf "${DNS}" > /etc/resolv.conf
+ chmod 644 /etc/resolv.conf
+ fi
+ fi
+fi
+
+# Below section is Gentoo specific
+# Quick summary - our init scripts are re-entrant and set the RC_SVCNAME env var
+# as we could have >1 openvpn service
+
+if [ -n "${RC_SVCNAME}" ]; then
+ # If we have a service specific script, run this now
+ if [ -x /etc/openvpn/"${RC_SVCNAME}"-up.sh ] ; then
+ /etc/openvpn/"${RC_SVCNAME}"-up.sh "$@"
+ fi
+
+ # Re-enter the init script to start any dependant services
+ if ! /etc/init.d/"${RC_SVCNAME}" --quiet status ; then
+ export IN_BACKGROUND=true
+ /etc/init.d/${RC_SVCNAME} --quiet start
+ fi
+fi
+
+###############
+# ALLOW WEBUI #
+###############
+
+/usr/sbin/ip route add 10.0.0.0/8 via 172.30.32.1
+/usr/sbin/ip route add 192.168.0.0/16 via 172.30.32.1
+/usr/sbin/ip route add 172.16.0.0/12 via 172.30.32.1
+
+exit 0
+
+# vim: ts=4 :
diff --git a/qbittorrent/rootfs/etc/services.d/nginx/finish b/qbittorrent/rootfs/etc/services.d/nginx/finish
new file mode 100644
index 0000000..4442401
--- /dev/null
+++ b/qbittorrent/rootfs/etc/services.d/nginx/finish
@@ -0,0 +1,8 @@
+#!/usr/bin/execlineb -S0
+# ==============================================================================
+# Take down the S6 supervision tree when Nginx fails
+# ==============================================================================
+if { s6-test ${1} -ne 0 }
+if { s6-test ${1} -ne 256 }
+
+s6-svscanctl -t /var/run/s6/services
diff --git a/qbittorrent/rootfs/etc/services.d/nginx/run b/qbittorrent/rootfs/etc/services.d/nginx/run
new file mode 100644
index 0000000..daf56fe
--- /dev/null
+++ b/qbittorrent/rootfs/etc/services.d/nginx/run
@@ -0,0 +1,9 @@
+#!/usr/bin/with-contenv bashio
+# ==============================================================================
+
+# Wait for transmission to become available
+bashio::net.wait_for 8080 localhost 900
+
+bashio::log.info "Starting NGinx..."
+
+exec nginx
diff --git a/qbittorrent/rootfs/etc/services.d/qbittorrent/finish b/qbittorrent/rootfs/etc/services.d/qbittorrent/finish
new file mode 100644
index 0000000..4e4e802
--- /dev/null
+++ b/qbittorrent/rootfs/etc/services.d/qbittorrent/finish
@@ -0,0 +1,8 @@
+#!/usr/bin/execlineb -S0
+# ==============================================================================
+# Take down the S6 supervision tree when the server fails
+# ==============================================================================
+if -n { s6-test $# -ne 0 }
+if -n { s6-test ${1} -eq 256 }
+
+s6-svscanctl -t /var/run/s6/services
diff --git a/qbittorrent/rootfs/etc/services.d/qbittorrent/run b/qbittorrent/rootfs/etc/services.d/qbittorrent/run
new file mode 100644
index 0000000..777edec
--- /dev/null
+++ b/qbittorrent/rootfs/etc/services.d/qbittorrent/run
@@ -0,0 +1,9 @@
+#!/usr/bin/with-contenv bashio
+
+WEBUI_PORT=${WEBUI_PORT:-8080}
+
+if bashio::config.true 'openvpn_enabled'; then
+ exec /usr/sbin/openvpn --config /etc/openvpn/config.ovpn --script-security 2 --up /etc/openvpn/up.sh --down /etc/openvpn/down.sh
+else
+ exec s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}"
+fi
diff --git a/repository.json b/repository.json
new file mode 100644
index 0000000..930f06a
--- /dev/null
+++ b/repository.json
@@ -0,0 +1,5 @@
+{
+ "name": "Home Assistant Community Add-ons",
+ "url": "https://addons.community",
+ "maintainer": "Franck Nijhof "
+}
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..f2aa1dd
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+mkdocs==1.2.1
+mkdocs-material==7.1.9
diff --git a/rsync-local/CHANGELOG.md b/rsync-local/CHANGELOG.md
new file mode 100644
index 0000000..134210b
--- /dev/null
+++ b/rsync-local/CHANGELOG.md
@@ -0,0 +1,20 @@
+## 1.3.0 - 2021-04-02
+
+* 🔨 Use ghcr.io/home-assistant for base images
+
+
+## 1.2.0 - 2021-02-27
+
+* 🔼 Update rsync to `3.2.3-r1`
+* 🔼 Update alpine to `3.13`
+* 🔼 Update coreutils to `8.32-r2`
+
+
+## 1.0.1 - 2021-02-09
+
+* 🔨 Migrate to new `devices` option format. Thanks @LiJu09
+
+
+## 1.0.0 - 2019-10-28
+
+* ➕ Introduced local rsync addon
diff --git a/rsync-local/DOCS.md b/rsync-local/DOCS.md
new file mode 100644
index 0000000..1d0f1e1
--- /dev/null
+++ b/rsync-local/DOCS.md
@@ -0,0 +1,45 @@
+## Security
+
+In order to mount your external device the integrated AppArmor feature is disabled.
+This addon has access to the devices with the path from the available `external_device` config option!
+
+## Config
+
+Example config:
+
+```yaml
+folders:
+ - /config
+external_folder: backup
+external_device: ''
+```
+
+### `folders`
+
+The list of folders you want to sync with the remote machine. Those locations are getting synced recursively.
+
+When a folder is specified with a slash at the end the content are directly copied inside the remote_folder.
+Without it a folder with the content is created.
+
+For example:
+
+* `- /config` would result into `/home/user/config`
+* `- /config/` would put the content of config into `/home/user`
+
+### `external_folder`
+
+The base folder on the external usb drive or usb stick for syncing the folders. Sub-folders with the folders from above will be created there.
+This path should not start with `/`.
+
+### `external_device`
+
+If you need to pin down a specific device to make your backup too, here is the option. Per default the device is `/dev/sda1`.
+Make sure to adjust it when for example running Home Assistant from a external drive. The `sda1` will be a partition of the Home Assistant drive.
+
+If no device is specified all available devices will be displayed in the log. No sync takes place without device.
+
+Available options: `/dev/sda1`, `/dev/sda2`, `/dev/sdb1`, `/dev/sdb2`
+
+### `options` (optional)
+
+Use your own options for rsync. This string is replacing the default one and get directly to rsync. The default is `-archive --recursive --compress --delete --prune-empty-dirs`.
diff --git a/rsync-local/Dockerfile b/rsync-local/Dockerfile
new file mode 100644
index 0000000..eca34cf
--- /dev/null
+++ b/rsync-local/Dockerfile
@@ -0,0 +1,12 @@
+ARG BUILD_FROM
+FROM $BUILD_FROM AS RUNNING
+
+RUN apk update && \
+ apk add --no-cache \
+ 'rsync=3.2.3-r1' \
+ 'coreutils=8.32-r2'
+
+COPY run.sh /
+RUN chmod a+x /run.sh
+ENTRYPOINT [ "/run.sh" ]
+
diff --git a/rsync-local/README.md b/rsync-local/README.md
new file mode 100644
index 0000000..6e66858
--- /dev/null
+++ b/rsync-local/README.md
@@ -0,0 +1,25 @@
+# rsync local (Home Assistant Addon)
+
+Sync folders to a external usb drive with rsync.
+
+![Addon Stage][stage-badge]
+![Supports aarch64 Architecture][aarch64-badge]
+![Supports amd64 Architecture][amd64-badge]
+![Supports armhf Architecture][armhf-badge]
+![Supports armv7 Architecture][armv7-badge]
+![Supports i386 Architecture][i386-badge]
+
+[![Install on my Home Assistant][install-badge]][install-url]
+[![Donate][donation-badge]][donation-url]
+
+[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge
+[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
+[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge
+[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge
+[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge
+[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_rsync-local
+[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge
+
+[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge
+[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white
+[donation-url]: https://www.buymeacoffee.com/Poeschl
diff --git a/rsync-local/build.json b/rsync-local/build.json
new file mode 100644
index 0000000..4ceab93
--- /dev/null
+++ b/rsync-local/build.json
@@ -0,0 +1,9 @@
+{
+ "build_from": {
+ "armhf": "ghcr.io/home-assistant/armhf-base:3.13",
+ "armv7": "ghcr.io/home-assistant/armv7-base:3.13",
+ "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13",
+ "amd64": "ghcr.io/home-assistant/amd64-base:3.13",
+ "i386": "ghcr.io/home-assistant/i386-base:3.13"
+ }
+}
diff --git a/rsync-local/config.json b/rsync-local/config.json
new file mode 100644
index 0000000..c7e1414
--- /dev/null
+++ b/rsync-local/config.json
@@ -0,0 +1,48 @@
+
+{
+ "name": "rsync local",
+ "version": "1.3.0",
+ "slug": "rsync-local",
+ "description": "Sync folders to a external usb drive with rsync.",
+ "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/rsync-local",
+ "arch": [
+ "armhf",
+ "armv7",
+ "aarch64",
+ "amd64",
+ "i386"
+ ],
+ "homeassistant": "0.115.0",
+ "startup": "application",
+ "boot": "manual",
+ "init":false,
+ "image": "ghcr.io/poeschl/ha-rsync-local-{arch}",
+ "ports": {},
+ "map": [
+ "share:rw",
+ "config:rw",
+ "backup:rw",
+ "addons:rw",
+ "ssl:rw",
+ "media:rw"
+ ],
+ "devices":[
+ "/dev/sda1",
+ "/dev/sda2",
+ "/dev/sdb1",
+ "/dev/sdb2"
+ ],
+ "privileged":["SYS_ADMIN"],
+ "apparmor": false,
+ "schema": {
+ "folders":["str"],
+ "external_folder":"match(^[^/].+)",
+ "external_device":"match(^(/dev/sd[a|b][1|2])?)",
+ "options":"str?"
+ },
+ "options": {
+ "folders":["/config"],
+ "external_folder":"backup",
+ "external_device":""
+ }
+}
diff --git a/rsync-local/icon.png b/rsync-local/icon.png
new file mode 100644
index 0000000..066dc71
Binary files /dev/null and b/rsync-local/icon.png differ
diff --git a/rsync-local/logo.png b/rsync-local/logo.png
new file mode 100644
index 0000000..e047ad3
Binary files /dev/null and b/rsync-local/logo.png differ
diff --git a/rsync-local/run.sh b/rsync-local/run.sh
new file mode 100644
index 0000000..09c66fb
--- /dev/null
+++ b/rsync-local/run.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bashio
+# shellcheck shell=bash
+set -e
+
+FOLDERS=$(bashio::config 'folders')
+EXTERNAL_FOLDER=$(bashio::config 'external_folder')
+
+if ! bashio::config.has_value 'external_device'; then
+ bashio::log.info "Detected devices..."
+ ls -h1 /dev/sd*
+
+ bashio::log.info "Select your device and insert it in the 'external_device' addon option."
+ bashio::log.info "For example: \"External_device: /dev/sda1\""
+ bashio::log.info "Then restart the addon for the first sync."
+
+else
+ bashio::log.info "Starting sync..."
+ EXTERNAL_DEVICE=$(bashio::config 'external_device')
+
+ if bashio::config.has_value 'options'; then
+ OPTIONS=$(bashio::config 'options')
+ bashio::log.info "Use options $OPTIONS"
+ else
+ OPTIONS='-archive --recursive --compress --delete --prune-empty-dirs'
+ fi
+
+ bashio::log.info "Mounting device ${EXTERNAL_DEVICE}"
+ mkdir -p /external
+ mount "${EXTERNAL_DEVICE}" /external
+
+ for folder in $FOLDERS; do
+
+ bashio::log.info "Sync $folder -> ${EXTERNAL_DEVICE}/${EXTERNAL_FOLDER}"
+ # shellcheck disable=SC2086
+ rsync ${OPTIONS} \
+ "$folder" "/external/${EXTERNAL_FOLDER}"
+ done
+
+ umount /external
+ bashio::log.info "Synced all folders"
+fi
diff --git a/rsync/CHANGELOG.md b/rsync/CHANGELOG.md
new file mode 100644
index 0000000..311749e
--- /dev/null
+++ b/rsync/CHANGELOG.md
@@ -0,0 +1,28 @@
+## 1.3.0 - 2021-04-02
+
+* 🔨 Use ghcr.io/home-assistant for base images
+* 🔼 Update openssh-client to `8.4_p1-r3`
+
+
+## 1.2.0 - 2021-02-27
+
+* 🔼 Update rsync to `3.2.3-r1`
+* 🔼 Update alpine to `3.13`
+* 🔼 Update coreutils to `8.32-r2`
+* 🔼 Update openssh-client to `8.4_p1-r2`
+
+
+## 1.1.1 - 2020-10-22
+
+* 🔨 Disable S6-Overlay Init
+
+
+## 1.1.0 - 2019-10-12
+
+* ➕ Introduced option for own rsync flags.
+* 🔨 Updated Docs for folders
+
+
+## 1.0.0 - 2019-10-10
+
+* ➕ Introduced rsync addon
diff --git a/rsync/DOCS.md b/rsync/DOCS.md
new file mode 100644
index 0000000..5f866f2
--- /dev/null
+++ b/rsync/DOCS.md
@@ -0,0 +1,58 @@
+## Precondition
+
+Make sure to have `rsync` installed on the remote machine. In case the addon gives you an `bash: rsync: command not found` in the logs `rsync` is missing there.
+
+## Key files
+
+The addon generates its own key files when no file is found at the specified location. If you use your own key make sure it is passwordless.
+
+## Config
+
+Example config:
+
+```yaml
+private_key_file: /ssl/rsync/id_rsa
+username: user
+folders:
+ - /config
+remote_host: ''
+remote_folder: /home/user
+
+```
+
+### `private_key_file`
+
+The private key for the authentification on the remote machine. It specifies also the location of the generated key-pair if no key file is found.
+The location of the file is fixed to the `/ssl` volume.
+
+### `username`
+
+The username for the user on the remote machine the key is accepted.
+
+### `folders`
+
+The list of folders you want to sync with the remote machine. Those locations are getting synced recursively.
+
+When a folder is specified with a slash at the end the content are directly copied inside the remote_folder.
+Without it a folder with the content is created.
+
+For example:
+
+* `- /config` would result into `/home/user/config`
+* `- /config/` would put the content of config into `/home/user`
+
+### `remote_host`
+
+The ip or host of the remote machine you want to connect to.
+
+### `remote_port` (optional)
+
+The ssh port on the remote machine. If not set the default `22` is assumed.
+
+### `remote_folder`
+
+The base folder on the remote machine for syncing the folders. Sub-folders with the folders from above will be created there
+
+### `options` (optional)
+
+Use your own options for rsync. This string is replacing the default one and get directly to rsync. The default is `-archive --recursive --compress --delete --prune-empty-dirs`.
diff --git a/rsync/Dockerfile b/rsync/Dockerfile
new file mode 100644
index 0000000..64f6ce5
--- /dev/null
+++ b/rsync/Dockerfile
@@ -0,0 +1,13 @@
+ ARG BUILD_FROM
+FROM $BUILD_FROM AS RUNNING
+
+RUN apk update && \
+ apk add --no-cache \
+ 'rsync=3.2.3-r1' \
+ 'openssh-client=8.4_p1-r3' \
+ 'coreutils=8.32-r2'
+
+COPY run.sh /
+RUN chmod a+x /run.sh
+ENTRYPOINT [ "/run.sh" ]
+
diff --git a/rsync/README.md b/rsync/README.md
new file mode 100644
index 0000000..64abfa3
--- /dev/null
+++ b/rsync/README.md
@@ -0,0 +1,26 @@
+# rsync (Home Assistant Addon)
+
+Sync folders to a remote machine via ssh and rsync.
+
+![Addon Stage][stage-badge]
+![Supports aarch64 Architecture][aarch64-badge]
+![Supports amd64 Architecture][amd64-badge]
+![Supports armhf Architecture][armhf-badge]
+![Supports armv7 Architecture][armv7-badge]
+![Supports i386 Architecture][i386-badge]
+
+[![Install on my Home Assistant][install-badge]][install-url]
+[![Donate][donation-badge]][donation-url]
+
+
+[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge
+[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
+[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge
+[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge
+[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge
+[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_rsync
+[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge
+
+[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge
+[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white
+[donation-url]: https://www.buymeacoffee.com/Poeschl
diff --git a/rsync/build.json b/rsync/build.json
new file mode 100644
index 0000000..4ceab93
--- /dev/null
+++ b/rsync/build.json
@@ -0,0 +1,9 @@
+{
+ "build_from": {
+ "armhf": "ghcr.io/home-assistant/armhf-base:3.13",
+ "armv7": "ghcr.io/home-assistant/armv7-base:3.13",
+ "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13",
+ "amd64": "ghcr.io/home-assistant/amd64-base:3.13",
+ "i386": "ghcr.io/home-assistant/i386-base:3.13"
+ }
+}
diff --git a/rsync/config.json b/rsync/config.json
new file mode 100644
index 0000000..e11ef88
--- /dev/null
+++ b/rsync/config.json
@@ -0,0 +1,45 @@
+
+{
+ "name": "rsync",
+ "version": "1.3.0",
+ "slug": "rsync",
+ "description": "Sync folders to a remote machine via ssh and rsync.",
+ "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/rsync",
+ "arch": [
+ "armhf",
+ "armv7",
+ "aarch64",
+ "amd64",
+ "i386"
+ ],
+ "homeassistant": "0.115.0",
+ "startup": "application",
+ "boot": "manual",
+ "init":false,
+ "image": "ghcr.io/poeschl/ha-rsync-{arch}",
+ "ports": {},
+ "map": [
+ "share:rw",
+ "config:rw",
+ "backup:rw",
+ "addons:rw",
+ "ssl:rw",
+ "media:rw"
+ ],
+ "schema": {
+ "private_key_file":"match(^/ssl/.+)",
+ "username":"str",
+ "folders":["str"],
+ "remote_host":"str",
+ "remote_port":"port?",
+ "remote_folder":"str",
+ "options":"str?"
+ },
+ "options": {
+ "private_key_file":"/ssl/rsync/id_rsa",
+ "username":"user",
+ "folders":["/config"],
+ "remote_host":"",
+ "remote_folder":"/home/user"
+ }
+}
diff --git a/rsync/icon.png b/rsync/icon.png
new file mode 100644
index 0000000..066dc71
Binary files /dev/null and b/rsync/icon.png differ
diff --git a/rsync/logo.png b/rsync/logo.png
new file mode 100644
index 0000000..8e2fd83
Binary files /dev/null and b/rsync/logo.png differ
diff --git a/rsync/run.sh b/rsync/run.sh
new file mode 100644
index 0000000..7594b21
--- /dev/null
+++ b/rsync/run.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bashio
+# shellcheck shell=bash
+
+set -e
+
+PRIVATE_KEY_FILE=$(bashio::config 'private_key_file')
+if [ ! -f "$PRIVATE_KEY_FILE" ]; then
+ bashio::log.info 'Generate keypair'
+
+ mkdir -p "$(dirname "$PRIVATE_KEY_FILE")"
+ ssh-keygen -t rsa -b 4096 -f "$PRIVATE_KEY_FILE" -N ''
+
+ bashio::log.info "Generated key-pair in $PRIVATE_KEY_FILE"
+else
+ bashio::log.info "Use private key from $PRIVATE_KEY_FILE"
+fi
+
+HOST=$(bashio::config 'remote_host')
+USERNAME=$(bashio::config 'username')
+FOLDERS=$(bashio::config 'folders')
+REMOTE_FOLDER=$(bashio::config 'remote_folder')
+
+if bashio::config.has_value 'remote_port'; then
+ PORT=$(bashio::config 'remote_port')
+ bashio::log.info "Use port $PORT"
+else
+ PORT=22
+fi
+
+if bashio::config.has_value 'options'; then
+ OPTIONS=$(bashio::config 'options')
+ bashio::log.info "Use options $OPTIONS"
+else
+ OPTIONS='-archive --recursive --compress --delete --prune-empty-dirs'
+fi
+
+for folder in $FOLDERS; do
+
+ bashio::log.info "Sync $folder -> ${REMOTE_FOLDER}"
+ # shellcheck disable=SC2086
+ rsync ${OPTIONS} \
+ -e "ssh -p ${PORT} -i ${PRIVATE_KEY_FILE} -oStrictHostKeyChecking=no" \
+ "$folder" "${USERNAME}@${HOST}:${REMOTE_FOLDER}"
+done
+
+bashio::log.info "Synced all folders"
\ No newline at end of file
diff --git a/runtime.txt b/runtime.txt
new file mode 100644
index 0000000..548d713
--- /dev/null
+++ b/runtime.txt
@@ -0,0 +1 @@
+3.7
\ No newline at end of file
diff --git a/spotify/CHANGELOG.md b/spotify/CHANGELOG.md
new file mode 100644
index 0000000..b96ebf2
--- /dev/null
+++ b/spotify/CHANGELOG.md
@@ -0,0 +1,14 @@
+[Full Changelog][changelog]
+
+### 🔨 Changes
+
+- ✏️ Fix docs link in README (#53)
+- ⬆ Upgrades cargo to 0.44.1-0ubuntu1~18.04.1
+- ⬆ Upgrades rustc to 1.43.0+dfsg1+llvm-1~exp1ubuntu2~18.04.1
+- ⬆ Upgrades add-on base image to v5.2.2
+
+[changelog]: https://github.com/hassio-addons/addon-spotify-connect/compare/v0.8.1...v0.8.2
+
+Questions? Join our Discord server! https://discord.me/hassioaddons
+Enjoying my add-ons? Consider supporting my work:
+https://github.com/sponsors/frenck or https://patreon.com/frenck
\ No newline at end of file
diff --git a/spotify/DOCS.md b/spotify/DOCS.md
new file mode 100644
index 0000000..046edaf
--- /dev/null
+++ b/spotify/DOCS.md
@@ -0,0 +1,164 @@
+# Home Assistant Community Add-on: Spotify Connect
+
+The Home Assistant Spotify Connect add-on allows you to use your device,
+running Home Assistant, to play your Spotify music. This add-on uses the
+Spotify Connect protocol, which makes it a device that can be controlled
+by all the official clients.
+
+For example; Running Home Assistant on a Raspberry Pi with this add-on
+installed will allow you to play your Spotify music on the Pi. So all you'll
+have to do is hook up your sound system to the Pi and start booming!
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Spotify Connect" add-on in the Supervisor add-on store
+ and install it.
+1. Select your audio output device and hit `Save` on that as well.
+1. Start the "Spotify Connect" add-on.
+1. Check the logs of the "Spotify Connect" to see if everything went well.
+1. Ready to go!
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+name: HomeAssistant
+bitrate: 320
+username: frenck@example.com
+password: MySpotifyPassword
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+Setting the `log_level` to `debug` will also turn on debug mode on the
+Spotify service.
+
+### Option: `name`
+
+The name of your device (the Spotify Connect target), as shown on
+the official Spotify clients.
+
+**Note**: _May only contain letters, numbers, hyphens (`-`) and dots (`.`)
+
+### Option: `bitrate`
+
+The bitrate Spotify should use. The higher, the better the sound quality,
+however, the add-on consumes more data.
+
+Valid values: `96`, `160` (default) or `320`.
+
+### Option: `username`
+
+**IMPORTANT**: _This requires a Spotify Premium account!_
+
+The username you use to login to your Spotify Premium account. Setting
+this will bind the add-on to your account exclusively.
+
+This can be helpful when experiencing discovery issues on your network or
+to disallow guests on your network to use the add-on.
+
+### Option: `password`
+
+The password you use to login to your Spotify Premium account.
+
+## Known issues and limitations
+
+- This add-on does support ARM-based devices, nevertheless, they must
+ at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported).
+- This add-on requires a Spotify Premium account.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality. The format of the log is based on
+[Keep a Changelog][keepchangelog].
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
+based on the following:
+
+- ``MAJOR``: Incompatible or major changes.
+- ``MINOR``: Backwards-compatible new features and enhancements.
+- ``PATCH``: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2020 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-spotify-connect/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-spotify-connect/61210?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-spotify-connect/issues
+[keepchangelog]: http://keepachangelog.com/en/1.0.0/
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-spotify-connect/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/spotify/README.md b/spotify/README.md
new file mode 100644
index 0000000..4561aa0
--- /dev/null
+++ b/spotify/README.md
@@ -0,0 +1,38 @@
+# Home Assistant Community Add-on: Spotify Connect
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Play Spotify music on your Home Assistant device.
+
+## About
+
+The Home Assistant Spotify Connect add-on allows you to use your device
+running Home Assistant to play your Spotify music. This add-on uses the
+Spotify Connect protocol, which makes it show up a device that can be
+controlled by all the official clients.
+
+For example; Running Home Assistant on a Raspberry Pi with this add-on
+installed will allow you to play your Spotify music via the Pi. So all
+you'll have to do is hook up your sound system to the Pi!
+
+![Spotify Connect][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-spotify-connect/61210?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.8.2-blue.svg
+[release]: https://github.com/hassio-addons/addon-spotify-connect/tree/v0.8.2
+[screenshot]: https://github.com/hassio-addons/addon-spotify-connect/raw/master/images/screenshot.png
\ No newline at end of file
diff --git a/spotify/config.json b/spotify/config.json
new file mode 100644
index 0000000..c47fdda
--- /dev/null
+++ b/spotify/config.json
@@ -0,0 +1,34 @@
+{
+ "name": "Spotify Connect",
+ "version": "0.8.2",
+ "slug": "spotify",
+ "description": "Play Spotify music on your Home Assistant device",
+ "url": "https://github.com/hassio-addons/addon-spotify-connect",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "i386"
+ ],
+ "map": [
+ "config"
+ ],
+ "boot": "auto",
+ "hassio_api": true,
+ "hassio_role": "default",
+ "host_network": true,
+ "audio": true,
+ "options": {
+ "name": "HomeAssistant",
+ "bitrate": 160
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "username": "str?",
+ "password": "password?",
+ "name": "match(^[A-Za-z0-9-.]+$)?",
+ "bitrate": "list(96|160|320)"
+ },
+ "image": "hassioaddons/spotify-{arch}"
+}
\ No newline at end of file
diff --git a/spotify/icon.png b/spotify/icon.png
new file mode 100644
index 0000000..b4f12cb
Binary files /dev/null and b/spotify/icon.png differ
diff --git a/spotify/logo.png b/spotify/logo.png
new file mode 100644
index 0000000..5e140a4
Binary files /dev/null and b/spotify/logo.png differ
diff --git a/sqlite-web/CHANGELOG.md b/sqlite-web/CHANGELOG.md
new file mode 100644
index 0000000..b9cba58
--- /dev/null
+++ b/sqlite-web/CHANGELOG.md
@@ -0,0 +1,19 @@
+## What’s changed
+
+## 🧰 Maintenance
+
+- Apply updated repository structure & CI workflow @frenck (#138)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/stale from v3.0.17 to v3.0.18 @dependabot (#127)
+- ⬆️ Upgrades python3 to 3.8.8-r0 @frenck (#129)
+- ⬆️ Bump release-drafter/release-drafter from v5.14.0 to v5.15.0 @dependabot (#128)
+- ⬆️ Bump ludeeus/action-shellcheck from 1.0.0 to 1.1.0 @dependabot (#130)
+- ⬆️ Bump docker/build-push-action from v2.3.0 to v2.4.0 @dependabot (#131)
+- ⬆️ Bump docker/setup-buildx-action from v1.1.1 to v1.1.2 @dependabot (#133)
+- ⬆️ Bump docker/setup-qemu-action from v1.0.1 to v1.0.2 @dependabot (#132)
+- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#134)
+- ⬆️ Upgrades cython to 0.29.21-r1 @frenck (#135)
+- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#136)
+- Upgrades add-on base image to v9.2.0 @frenck (#137)
diff --git a/sqlite-web/DOCS.md b/sqlite-web/DOCS.md
new file mode 100644
index 0000000..776ae2f
--- /dev/null
+++ b/sqlite-web/DOCS.md
@@ -0,0 +1,91 @@
+# Home Assistant Community Add-on: SQLite Web
+
+This enables you to easily explore all tables and content that is saved in your database.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the “SQLite Web” add-on in the Hass.io 166 add-on store
+ and install it.
+1. Start the "SQLite Web" add-on
+1. Check the logs of the "SQLite Web" add-on to see if everything went well.
+1. Click "OPEN WEB UI" to open the SQLite Web interface.
+1. Log in with your Home Assistant user.
+
+**NOTE**: Starting the add-on might take a couple of minutes (especially the
+first time starting the add-on).
+
+## Configuration
+
+This add-on has no configuration options.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Joakim Sørensen][ludeeus].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Joakim Sørensen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-sqlite-web/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-sqlite-web/68912?u=frenck
+[issue]: https://github.com/hassio-addons/addon-sqlite-web/issues
+[ludeeus]: https://github.com/ludeeus
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-sqlite-web/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
diff --git a/sqlite-web/README.md b/sqlite-web/README.md
new file mode 100644
index 0000000..ddb433d
--- /dev/null
+++ b/sqlite-web/README.md
@@ -0,0 +1,27 @@
+# Home Assistant Community Add-on: SQLite Web
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
+
+Explore your Home-Assistant database from your web browser!
+
+## About
+
+This enables you to easily explore all tables and content that is saved in your database.
+
+![SQLite Web screenshot][screenshot]
+
+[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
+[buymeacoffee]: https://www.buymeacoffee.com/ludeeus
+[discord-shield]: https://img.shields.io/discord/330944238910963714.svg
+[discord]: https://discord.gg/c5DvZ4e
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-sqlite-web/68912?u=frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v3.1.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-sqlite-web/tree/v3.1.0
+[screenshot]: https://github.com/hassio-addons/addon-sqlite-web/raw/main/images/sample-view.png
\ No newline at end of file
diff --git a/sqlite-web/config.json b/sqlite-web/config.json
new file mode 100644
index 0000000..867acba
--- /dev/null
+++ b/sqlite-web/config.json
@@ -0,0 +1,21 @@
+{
+ "name": "SQLite Web",
+ "version": "3.1.0",
+ "slug": "sqlite-web",
+ "description": "Explore your SQLite database",
+ "url": "https://github.com/hassio-addons/addon-sqlite-web/tree/main/README.md",
+ "ingress": true,
+ "advanced": true,
+ "panel_icon": "mdi:database",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "map": [
+ "config:rw"
+ ],
+ "image": "ghcr.io/hassio-addons/sqlite-web/{arch}"
+}
\ No newline at end of file
diff --git a/sqlite-web/icon.png b/sqlite-web/icon.png
new file mode 100644
index 0000000..c18dcf5
Binary files /dev/null and b/sqlite-web/icon.png differ
diff --git a/sqlite-web/logo.png b/sqlite-web/logo.png
new file mode 100644
index 0000000..b6f804d
Binary files /dev/null and b/sqlite-web/logo.png differ
diff --git a/syncthing/CHANGELOG.md b/syncthing/CHANGELOG.md
new file mode 100644
index 0000000..5183350
--- /dev/null
+++ b/syncthing/CHANGELOG.md
@@ -0,0 +1,78 @@
+## 1.11.0 - 2021-06-03
+
+* 🔼 Update syncthing to `1.17.0-r0`
+
+
+## 1.10.0 - 2021-04-02
+
+* 🔼 Update alpine to `3.13`
+* 🔼 Update syncthing to `1.16.0-r0`
+
+
+## 1.9.0 - 2021-04-02
+
+* 🔨 Use ghcr.io/home-assistant for base images
+
+
+## 1.8.1 - 2021-03-17
+
+* 🐛 Specifiy own S6 entrypoint, don't rely on the base image.
+
+
+## 1.8.0 - 2021-01-30
+
+* 🔼 Update alpine to `3.12`
+* 🔼 Update syncthing to `1.12.1-r0`
+* 🔨 Use Jemalloc for better memory handling
+
+
+## 1.7.0 - 2020-12-11
+
+* 🔼 Update syncthing to `1.12.0-r0` (also for aarch64)
+
+
+## 1.6.2 - 2020-10-22
+
+* 🔨 Use S6-Overlay for execution
+* 🔨 Start as `application` startup type
+
+
+## 1.6.1 - 2020-10-08
+
+* 🔼 Update syncthing to `1.10.0-r1` (aarch64 still`1.5.0-r0`)
+
+
+## 1.6.0 - 2020-10-07
+
+* ➕ Map also `/media` folder inside
+
+
+## 1.5.0 - 2020-10-06
+
+* 🔼 Update syncthing to `1.10.0-r0` (except for aarch64, there its downgraded to `1.5.0-r0`)
+
+
+## 1.4.0 - 2020-08-16
+
+* 🔼 Update syncthing to `1.8.0-r0` (except for aarch64, there its `1.7.1-r1`)
+* ➕ Map also `/ssl` folder inside
+
+## 1.3.0 - 2020-06-15
+
+* 🔼 Update syncthing to `1.6.1-r0`
+* 🔼 Update alpine to `3.12`
+
+## 1.2.0 - 2020-05-22
+
+* 🔨 Updated Changelog to new format
+* 🔼 Update syncthing to `1.5.0-r0`
+
+
+## 1.1.0 - 2020-04-16
+
+* 🔼 Update syncthing to `1.4.2-r0`
+
+
+## 1.0.0 - 2020-03-19
+
+* ➕ Started with syncthing version `1.4`
diff --git a/syncthing/Dockerfile b/syncthing/Dockerfile
new file mode 100644
index 0000000..a19e350
--- /dev/null
+++ b/syncthing/Dockerfile
@@ -0,0 +1,9 @@
+ARG BUILD_FROM
+FROM $BUILD_FROM
+
+RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
+ "syncthing=1.17.0-r0"
+
+ENTRYPOINT [ "/init" ]
+CMD []
+COPY root /
diff --git a/syncthing/README.md b/syncthing/README.md
new file mode 100644
index 0000000..caccbc1
--- /dev/null
+++ b/syncthing/README.md
@@ -0,0 +1,39 @@
+# Syncthing Addon
+
+[Syncthing](https://syncthing.net/) wrapped inside a Homeassistant supervisor addon.
+
+Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it's transmitted over the internet.
+
+![Addon Stage][stage-badge]
+![Supports aarch64 Architecture][aarch64-badge]
+![Supports amd64 Architecture][amd64-badge]
+![Supports armhf Architecture][armhf-badge]
+![Supports armv7 Architecture][armv7-badge]
+![Supports i386 Architecture][i386-badge]
+
+[![Install on my Home Assistant][install-badge]][install-url]
+[![Donate][donation-badge]][donation-url]
+
+# Folders available
+
+When using this addon to permanently hold your data, put the synced folder inside `/data`. Otherwise it will be deleted on container restart.
+
+Also the `/share`, `/confg`, `/backup`, `/addons` and `/ssl` folders is mapped inside. Your can use them as persistant storage, too.
+They can also be used to backup the Home Assistant backups. 😉
+
+# Configuration
+
+The configuration is done via the web ui. Start the addon and configure it there.
+
+
+[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge
+[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge
+[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge
+[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge
+[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge
+[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_syncthing
+[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge
+
+[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge
+[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white
+[donation-url]: https://www.buymeacoffee.com/Poeschl
diff --git a/syncthing/build.json b/syncthing/build.json
new file mode 100644
index 0000000..4ceab93
--- /dev/null
+++ b/syncthing/build.json
@@ -0,0 +1,9 @@
+{
+ "build_from": {
+ "armhf": "ghcr.io/home-assistant/armhf-base:3.13",
+ "armv7": "ghcr.io/home-assistant/armv7-base:3.13",
+ "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13",
+ "amd64": "ghcr.io/home-assistant/amd64-base:3.13",
+ "i386": "ghcr.io/home-assistant/i386-base:3.13"
+ }
+}
diff --git a/syncthing/config.json b/syncthing/config.json
new file mode 100644
index 0000000..1dec68c
--- /dev/null
+++ b/syncthing/config.json
@@ -0,0 +1,39 @@
+
+{
+ "name": "Syncthing",
+ "version": "1.11.0",
+ "slug": "syncthing",
+ "description": "Syncthing is a continuous file synchronization program in a de-centralized way. ",
+ "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/syncthing",
+ "arch": [
+ "armhf",
+ "armv7",
+ "aarch64",
+ "amd64",
+ "i386"
+ ],
+ "homeassistant": "0.115.0",
+ "image": "ghcr.io/poeschl/ha-syncthing-{arch}",
+ "ports": {
+ "8384/tcp": null,
+ "22000/tcp": 22000,
+ "21027/udp": 21027
+ },
+ "ports_description": {
+ "8384/tcp": "Web frontend (not needed with Ingress)",
+ "22000/tcp": "Sync protocol",
+ "21027/udp": "Discovery broadcast"
+ },
+ "ingress": true,
+ "ingress_port": 8384,
+ "panel_title": "Syncthing",
+ "panel_icon": "mdi:sync",
+ "map": [
+ "share:rw",
+ "config:rw",
+ "backup:rw",
+ "addons:rw",
+ "ssl:rw",
+ "media:rw"
+ ]
+}
diff --git a/syncthing/icon.png b/syncthing/icon.png
new file mode 100644
index 0000000..0ef31cb
Binary files /dev/null and b/syncthing/icon.png differ
diff --git a/syncthing/logo.png b/syncthing/logo.png
new file mode 100644
index 0000000..c01ec06
Binary files /dev/null and b/syncthing/logo.png differ
diff --git a/syncthing/root/etc/cont-init.d/setup-config b/syncthing/root/etc/cont-init.d/setup-config
new file mode 100644
index 0000000..153978b
--- /dev/null
+++ b/syncthing/root/etc/cont-init.d/setup-config
@@ -0,0 +1,5 @@
+#!/usr/bin/with-contenv bashio
+set -e
+
+bashio::log.info 'Setup config'
+mkdir -p /data/config
\ No newline at end of file
diff --git a/syncthing/root/etc/services.d/syncthing/run b/syncthing/root/etc/services.d/syncthing/run
new file mode 100644
index 0000000..95359c4
--- /dev/null
+++ b/syncthing/root/etc/services.d/syncthing/run
@@ -0,0 +1,10 @@
+#!/usr/bin/with-contenv bashio
+set -e
+
+# Enable Jemalloc for better memory handling
+export LD_PRELOAD="/usr/local/lib/libjemalloc.so.2"
+
+export STNOUPGRADE=1
+
+bashio::log.info 'Start syncthing'
+syncthing -no-browser -no-restart -home=/data/config -gui-address=0.0.0.0:8384
diff --git a/tor/CHANGELOG.md b/tor/CHANGELOG.md
new file mode 100644
index 0000000..08be745
--- /dev/null
+++ b/tor/CHANGELOG.md
@@ -0,0 +1,14 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#67)
+- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#68)
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#69)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#70)
+- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#71)
+- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#72)
+- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#73)
+- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#74)
+- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#76)
+- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#77)
diff --git a/tor/DOCS.md b/tor/DOCS.md
new file mode 100644
index 0000000..f4124fd
--- /dev/null
+++ b/tor/DOCS.md
@@ -0,0 +1,256 @@
+# Home Assistant Community Add-on: Tor
+
+This Tor add-on allows you to access you Home Assistant instance as an Onion site,
+trough [Tor's Hidden Service][tor-hidden-service] feature. With this feature
+enabled, you do not need to open your firewall ports or setup HTTPS to enable
+secure remote access.
+
+This is useful if you want to have:
+
+- Access your Home Assistant instance remotely without opening a firewall port
+ or setting up a VPN.
+- Don’t want to or know how to get an SSL/TLS certificate and HTTPS
+ configuration setup.
+- Want to block attackers from even being able to access/scan your port and
+ server at all.
+- Want to block anyone from knowing your home IP address and seeing your
+ traffic to your Home Assistant.
+
+The add-on also offers the possibility to open a Sock proxy into the
+Tor network. Allowing you to access Tor from any of your (SOCKS supporting)
+applications through your Home Assistant installation.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Tor" add-on in the Supervisor add-on store and install it.
+1. Start the "Tor" add-on
+1. Check the logs of the "Tor" add-on to see if everything went well. The log
+ will also display your Tor .onion address.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+socks: true
+hidden_services: true
+stealth: true
+client_names:
+ - haremote1
+ - haremote2
+ports:
+ - 8123
+```
+
+**Note**: _This is just an example, don't copy and past it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+These log level also affects the log levels of the Tor program.
+
+### Option: `socks`
+
+Setting this option to `true` opens port `9050` to listen for connections from
+SOCKS-speaking applications. Enabling this feature allows you to use other
+applications on your network to use the Tor network.
+
+**Note**: _The SOCKS protocol is unencrypted and (as we use it) unauthenticated,
+so exposing it in this way could leak your information to anybody watching your
+network, and allow anybody to use your computer as an open proxy._
+
+### Option: `hidden_services`
+
+The `hidden_services` options allows you to enable
+[Tor's Hidden Service][tor-hidden-service] feature in this add-on. You can offer
+a web server, SSH server, etc., without revealing your IP address to its users.
+In fact, because you don not use any public address, you can run a hidden
+service from behind your firewall.
+
+### Option: `stealth`
+
+The “stealth” entry above ensures traffic to and from your Home Assistant
+instance over Tor is hidden even from other nodes on the Tor network.
+
+Using a traditional Hidden Service, a hidden server publishes in the Tor network
+how to begin communication with it (not its real location). Tor uses a complex
+middle nodes link setup for bidirectional route anonymization; the server and
+client knows nothing about end point's location. A client asks the network how
+to reach a Hidden Service with this info.
+
+This option put the Tor Hidden Service in the authorize client mode. The
+hidden server publishes encrypted instructions on how to begin the
+communication, a client with the right key can decipher this info.
+If you are an authorized client, you only can locate the Hidden Service path
+and then try to establish a connection if you have this key.
+
+Enabling `stealth` can prevent a DDOS because if the client does not have the
+key, it can not find the path to the server. It does, however, require
+configuration of the client as well.
+
+### Option: `client_names`
+
+This option is required as soon as you enable the `stealth` option.
+
+Only clients that are listed here are authorized to access the hidden service.
+Valid client names are 1 to 16 characters long and only use characters in
+`A-Za-z0-9+-_` (no spaces). If this option is set, the hidden service is not
+accessible for clients without authorization anymore.
+
+Clients need to put this authorization data in their configuration file using
+HidServAuth.
+
+### Option: `ports`
+
+Configures hosts and ports to publish via a Tor Hidden Service.
+You can list multiple hosts and ports to publish.
+
+For example:
+
+```yaml
+ports:
+ - "homeassistant:8123:80"
+ - 22
+```
+
+The accepted syntaxs of this configuration is:
+
+- hostname:local_port:published_port `"homeassistant:8123:8080"`
+- local_ip:local_port:published_port `"192.168.1.60:8123:8080"`
+- hostname:local_port `"homeassistant:8123"`
+- local_port:published_port `"8123:8080"`
+- local_port `"8123"`
+
+If you do not define a published port, the local port will be used.
+If you do not define a hostname or IP adress `homeassistant` will be used.
+
+## Tor client access setup
+
+Using this add-on, you can access your Home Assistant instance over Tor from
+your laptop or mobile device, using Tor Browser and other software.
+
+However, with the `stealth` option enabled, the client would need extra
+configuration to be able to connect.
+
+Add the authentication cookie to your `torrc` client configuration on your
+laptop or mobile device. It would look like this:
+
+```bash
+HidServAuth abcdef1234567890.onion adEG02FAsdq/GAFeNSeLvc haremote1
+```
+
+For Tor Browser on Windows, Mac or Linux, you can find the torrc file here:
+`/Browser/TorBrowser/tor/ssl/torrc`
+
+Once you have added the entry, restart the browser, and then browse to the
+"dot onion" site address to connect to your Home Assistant instance.
+
+For [Orbot: Tor on Android][orbot], add it in **Orbot** -> **Menu**
+-> **Settings** to the "Torrc Custom Config" entry. Restart Orbot, and then
+use the [Orfox browser app][orfox], and browse to the "dot onion" site name to
+access your Home Assistant instance. You can also use Orbot's VPN mode,
+to enable Tor access from any application on your device,
+such as Tasker or Owntracks.
+
+To our knowledge, there are currently no iOS apps available supporting the
+stealth feature.
+
+You can use the standard FireFox browser to access .onion domains, but you need
+to enable this in FireFix settings. In FireFox, type "about:config" in the
+address bar and click 'I accept the risk' to open the advanced settings.
+Search for "onion" to find the setting "network.dns.blockDotOnion" and toggle
+the setting so that it is set to "false". Now you should be able to access
+.onion sites.
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2017-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-tor/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-tor/33822?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-tor/issues
+[orbot]: https://guardianproject.info/apps/orbot
+[orfox]: https://guardianproject.info/apps/orfox
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-tor/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
+[tor-hidden-service]: https://www.torproject.org/docs/hidden-services.html.en
diff --git a/tor/README.md b/tor/README.md
new file mode 100644
index 0000000..7d46eee
--- /dev/null
+++ b/tor/README.md
@@ -0,0 +1,47 @@
+# Home Assistant Community Add-on: Tor
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Protect your privacy and access Home Assistant via Tor.
+
+## About
+
+This Tor add-on allows you to access you Home Assistant instance as an Onion site,
+trough [Tor's Hidden Service][tor-hidden-service] feature. With this feature
+enabled, you do not need to open your firewall ports or setup HTTPS to enable
+secure remote access.
+
+This is useful if you want to have:
+
+- Access your Home Assistant instance remotely without opening a firewall port
+ or setting up a VPN.
+- Don’t want to or know how to get an SSL/TLS certificate and HTTPS
+ configuration setup.
+- Want to block attackers from even being able to access/scan your port and
+ server at all.
+- Want to block anyone from knowing your home IP address and seeing your
+ traffic to your Home Assistant.
+
+The add-on also offers the possibility to open a Sock proxy into the
+Tor network. Allowing you to access Tor from any of your (SOCKS supporting)
+applications through your Home Assistant installation.
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-tor/33822?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v3.0.5-blue.svg
+[release]: https://github.com/hassio-addons/addon-tor/tree/v3.0.5
+[tor-hidden-service]: https://www.torproject.org/docs/hidden-services.html.en
\ No newline at end of file
diff --git a/tor/config.json b/tor/config.json
new file mode 100644
index 0000000..b178082
--- /dev/null
+++ b/tor/config.json
@@ -0,0 +1,47 @@
+{
+ "name": "Tor",
+ "version": "3.0.5",
+ "slug": "tor",
+ "description": "Protect your privacy and access Home Assistant via Tor.",
+ "url": "https://github.com/hassio-addons/addon-tor",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "ports": {
+ "9050/tcp": 9050
+ },
+ "ports_description": {
+ "9050/tcp": "Tor SOCKS proxy port"
+ },
+ "map": [
+ "ssl:rw"
+ ],
+ "options": {
+ "socks": false,
+ "hidden_services": true,
+ "stealth": false,
+ "client_names": [],
+ "ports": [
+ "8123"
+ ]
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "socks": "bool",
+ "hidden_services": "bool",
+ "stealth": "bool",
+ "client_names": [
+ "match(^[A-Za-z0-9+-_]{1,16}$)"
+ ],
+ "ports": [
+ "match(^(.*:)?(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])?$)"
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/tor/{arch}"
+}
\ No newline at end of file
diff --git a/tor/icon.png b/tor/icon.png
new file mode 100644
index 0000000..444f31b
Binary files /dev/null and b/tor/icon.png differ
diff --git a/tor/logo.png b/tor/logo.png
new file mode 100644
index 0000000..148007e
Binary files /dev/null and b/tor/logo.png differ
diff --git a/traccar/CHANGELOG.md b/traccar/CHANGELOG.md
new file mode 100644
index 0000000..30c3693
--- /dev/null
+++ b/traccar/CHANGELOG.md
@@ -0,0 +1,15 @@
+## What’s changed
+
+## ✨ New features
+
+- Add add-on translation support @frenck (#90)
+
+## 🧰 Maintenance
+
+- Apply updated repository structure & CI workflow @frenck (#89)
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#86)
+- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#87)
+- Upgrades add-on base image to v9.2.0 @frenck (#88)
diff --git a/traccar/DOCS.md b/traccar/DOCS.md
new file mode 100644
index 0000000..19b6b87
--- /dev/null
+++ b/traccar/DOCS.md
@@ -0,0 +1,182 @@
+# Home Assistant Community Add-on: Traccar
+
+[Traccar][traccar] is a modern GPS Tracking Platform, which is now available
+as an Hass.io add-on and allows you to run your GPS Tracking software
+without any cloud.
+
+Traccar supports more protocols and device models than any other GPS tracking
+system on the market, straight from your Hass.io instance. You can select GPS
+trackers from a variety of vendors from low-cost Chinese models to high-end
+quality brands.
+
+Traccar also has native mobile apps available for Android and iOS platforms
+so that you can track those as well. AND! With the Home Assistant `traccar`
+integration (introduced in 0.83) the data in Traccar will be sent back into
+your Home Assistant instance as well.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Ensure you have the official "MariaDB" add-on installed and running!
+1. Search for the "Traccar" add-on in the Supervisor add-on store
+ and install it.
+1. Start the "Traccar" add-on
+1. Check the logs of the "Traccar" add-on to see if everything went well.
+1. Click the "OPEN WEB UI" button and log in using `admin`/`admin`.
+1. Be sure to change the username, email, and password!
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+ssl: true
+certfile: fullchain.pem
+keyfile: privkey.pem
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `ssl`
+
+Enables/Disables SSL (HTTPS) on the web interface.
+Set it `true` to enable it, `false` otherwise.
+
+### Option: `certfile`
+
+The certificate file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+### Option: `keyfile`
+
+The private key file to use for SSL.
+
+**Note**: _The file MUST be stored in `/ssl/`, which is the default_
+
+## Integrating into Home Assistant
+
+The `traccar` integration of Home Assistant makes it possible to transfer all
+assets tracked by Traccar to appear in Home Assistant as a tracked device.
+
+Add the following snippet to your Home Assistant `configuration.yaml` file.
+
+```yaml
+device_tracker:
+ - platform: traccar
+ host: localhost
+ port: 18682
+ username: TRACCAR_EMAIL_ADDRESS
+ password: TRACCAR_PASSWORD
+```
+
+Restart Home Assistant.
+
+## Enabling more protocols
+
+By default, this add-on has disabled most of the GPS protocols. This has
+been done to reduce the number of open ports the add-on would create.
+
+By default, only the OsmAnd protocol (used by the Traccar Apps) and the API
+are enabled. If you want more protocols, you can do so, by adding entries
+to your `/config/traccar.xml` file.
+
+A list if all entries can be found here:
+
+
+
+To find out which protocol your device uses, please refer to the Traccar
+website:
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2018-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-traccar/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-traccar/81407?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-traccar/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-traccar/releases
+[semver]: http://semver.org/spec/v2.0.0.htm
+[traccar]: https://www.traccar.org
diff --git a/traccar/README.md b/traccar/README.md
new file mode 100644
index 0000000..a8943da
--- /dev/null
+++ b/traccar/README.md
@@ -0,0 +1,45 @@
+# Home Assistant Community Add-on: Traccar
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Modern GPS Tracking Platform.
+
+![Traccar in the Home Assistant Frontend][screenshot]
+
+## About
+
+[Traccar][traccar] is a modern GPS Tracking Platform, which is now available
+as an Hass.io add-on and allows you to run your GPS Tracking software without
+any cloud.
+
+Traccar supports more protocols and device models than any other GPS tracking
+system on the market, straight from your Hass.io instance. You can select GPS
+trackers from a variety of vendors from low-cost Chinese models to high-end
+quality brands.
+
+Traccar also has native mobile apps available for Android and iOS platforms
+so that you can track those as well. AND! With the Home Assistant `traccar`
+integration (introduced in 0.83) the data in Traccar will be sent back into
+your Home Assistant instance as well.
+
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-traccar/81407?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
+[release-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg
+[release]: https://github.com/hassio-addons/addon-traccar/tree/v0.12.0
+[screenshot]: https://github.com/hassio-addons/addon-traccar/raw/main/images/screenshot.png
+[traccar]: https://www.traccar.org
\ No newline at end of file
diff --git a/traccar/config.json b/traccar/config.json
new file mode 100644
index 0000000..5a48544
--- /dev/null
+++ b/traccar/config.json
@@ -0,0 +1,45 @@
+{
+ "name": "Traccar",
+ "version": "0.12.0",
+ "slug": "traccar",
+ "description": "Modern GPS Tracking Platform",
+ "url": "https://github.com/hassio-addons/addon-traccar",
+ "ingress": true,
+ "ingress_port": 0,
+ "panel_icon": "mdi:car-connected",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armhf",
+ "armv7",
+ "i386"
+ ],
+ "init": false,
+ "host_network": true,
+ "ports": {
+ "80/tcp": null
+ },
+ "ports_description": {
+ "80/tcp": "Web interface (Not required for Ingress)"
+ },
+ "map": [
+ "config:rw",
+ "ssl"
+ ],
+ "services": [
+ "mysql:want"
+ ],
+ "options": {
+ "ssl": true,
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem"
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "ssl": "bool",
+ "certfile": "str",
+ "keyfile": "str"
+ },
+ "image": "ghcr.io/hassio-addons/traccar/{arch}"
+}
\ No newline at end of file
diff --git a/traccar/icon.png b/traccar/icon.png
new file mode 100644
index 0000000..8d597f7
Binary files /dev/null and b/traccar/icon.png differ
diff --git a/traccar/logo.png b/traccar/logo.png
new file mode 100644
index 0000000..1de13ec
Binary files /dev/null and b/traccar/logo.png differ
diff --git a/traccar/translations/de.yaml b/traccar/translations/de.yaml
new file mode 100644
index 0000000..503f1d7
--- /dev/null
+++ b/traccar/translations/de.yaml
@@ -0,0 +1,15 @@
+configuration:
+ certfile:
+ description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Certificate file'
+ keyfile:
+ description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Private key file'
+ log_level:
+ description: 'Controls the level of log details the add-on provides.'
+ name: 'Log level'
+ ssl:
+ description: 'Enables/Disables SSL (HTTPS) on the web interface.'
+ name: SSL
+network:
+ 80/tcp: 'Web interface (Not required for Ingress)'
diff --git a/traccar/translations/en.yaml b/traccar/translations/en.yaml
new file mode 100644
index 0000000..e1b01f1
--- /dev/null
+++ b/traccar/translations/en.yaml
@@ -0,0 +1,22 @@
+---
+configuration:
+ log_level:
+ name: Log level
+ description: >-
+ Controls the level of log details the add-on provides.
+ ssl:
+ name: SSL
+ description: >-
+ Enables/Disables SSL (HTTPS) on the web interface.
+ certfile:
+ name: Certificate file
+ description: >-
+ The certificate file to use for SSL. Note that this file must
+ exist in the /ssl/ folder.
+ keyfile:
+ name: Private key file
+ description: >-
+ The private key file to use for SSL. Note that this file must
+ exist in the /ssl/ folder.
+network:
+ 80/tcp: Web interface (Not required for Ingress)
diff --git a/traccar/translations/nl.yaml b/traccar/translations/nl.yaml
new file mode 100644
index 0000000..7db387e
--- /dev/null
+++ b/traccar/translations/nl.yaml
@@ -0,0 +1,15 @@
+configuration:
+ certfile:
+ description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Certificate file'
+ keyfile:
+ description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.'
+ name: 'Private key file'
+ log_level:
+ description: 'Controls the level of log details the add-on provides.'
+ name: 'Log niveau'
+ ssl:
+ description: 'Enables/Disables SSL (HTTPS) on the web interface.'
+ name: SSL
+network:
+ 80/tcp: 'Webinterface (niet vereist voor Ingress)'
diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md
new file mode 100644
index 0000000..d68d050
--- /dev/null
+++ b/vscode/CHANGELOG.md
@@ -0,0 +1,10 @@
+## What’s changed
+
+## ⬆️ Dependency updates
+
+- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#257)
+- ⬆️ Upgrades Home Assistant CLI to v4.12.2 @frenck (#260)
+- ⬆️ Upgrades code-server to 3.10.1 @frenck (#261)
+- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#262)
+- ⬆️ Upgrades code-server to 3.10.2 @frenck (#263)
+- ⬆️ Upgrades keesschollaart.vscode-home-assistant to 1.18.0 @frenck (#264)
diff --git a/vscode/DOCS.md b/vscode/DOCS.md
new file mode 100644
index 0000000..2fbe7c3
--- /dev/null
+++ b/vscode/DOCS.md
@@ -0,0 +1,220 @@
+# Home Assistant Community Add-on: Visual Studio Code
+
+This add-on runs Visual Studio Code, allowing you to edit your Home Assistant
+configuration directly from your web browser and can be embedded straight
+into the Home Assistant frontend UI.
+
+Visual Studio Code runs as a remote server using `code-server`, and is a
+fully fledged VSCode experience.
+
+The add-on has the Home Assistant, MDI icons and YAML extensions pre-installed
+and pre-configured right out of the box. This means that auto-completion works
+instantly, without the need for configuring anything.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Home Assistant add-on.
+
+1. Search for the "Visual Studio Code" add-on in the Supervisor add-on store
+ and install it.
+1. Start the "Visual Studio Code" add-on.
+1. Check the logs of the "Visual Studio Code" add-on to see if everything went
+ well.
+1. Click the "OPEN WEB UI" button to open Visual Studio Code.
+
+## Configuration
+
+**Note**: _Remember to restart the add-on when the configuration is changed._
+
+Example add-on configuration:
+
+```yaml
+log_level: info
+config_path: /share/my_path
+packages:
+ - mariadb-client
+init_commands:
+ - ls -la
+```
+
+**Note**: _This is just an example, don't copy and paste it! Create your own!_
+
+### Option: `log_level`
+
+The `log_level` option controls the level of log output by the addon and can
+be changed to be more or less verbose, which might be useful when you are
+dealing with an unknown issue. Possible values are:
+
+- `trace`: Show every detail, like all called internal functions.
+- `debug`: Shows detailed debug information.
+- `info`: Normal (usually) interesting events.
+- `warning`: Exceptional occurrences that are not errors.
+- `error`: Runtime errors that do not require immediate action.
+- `fatal`: Something went terribly wrong. Add-on becomes unusable.
+
+Please note that each level automatically includes log messages from a
+more severe level, e.g., `debug` also shows `info` messages. By default,
+the `log_level` is set to `info`, which is the recommended setting unless
+you are troubleshooting.
+
+### Option: `config_path`
+
+This option allows you to override the default path the add-on will open
+when accessing the web interface. For example, use a different
+configuration directory like `/share/myconfig` instead of `/config`. If set
+to `/root` then all the common folders of HA such as `/config`, `/ssl`,
+`/share`, etc. will appear as subfolders for each access.
+
+When not configured, the addon will automatically use the default: `/config`
+
+### Option: `packages`
+
+Allows you to specify additional [Ubuntu packages][ubuntu-packages] to be
+installed in your shell environment (e.g., Python, PHP, Go).
+
+**Note**: _Adding many packages will result in a longer start-up
+time for the add-on._
+
+### Option: `init_commands`
+
+Customize your VSCode environment even more with the `init_commands` option.
+Add one or more shell commands to the list, and they will be executed every
+single time this add-on starts.
+
+## Resetting your VSCode settings to the add-on defaults
+
+The add-on updates your settings to be optimized for use with Home Assistant.
+As soon as you change a setting, the add-on will stop doing that since it
+might be destructive. However, in case you changed some things, but want to
+return to the defaults as delivered by this add-on, do the following:
+
+1. Open the Visual Studio Code editor.
+1. Click on `Terminal` in the top menu bar and clik on `New Terminal`.
+1. Execute the following command in the terminal window: `reset-settings`.
+1. Done!
+
+## Using with ESPHome
+
+The add-on has support for ESPHome (and its vscode extension), built-in!
+It has been installed and pre-configured for you, however, it might need
+an adjustment to your ESPHome add-on in order to function.
+
+1. Go to the ESPHome add-on configuration in your Supervisor panel.
+1. Add the `leave_front_door_open` option, since the vscode extension of
+ ESPHome does not support authentication yet. The ESPHome add-on
+ configuration would look like this:
+
+ ```yaml
+ leave_front_door_open: true
+ ```
+
+1. Save the add-on configuration.
+1. Enable direct access to the ESPHome add-on, by enabling the network port.
+ This option can be found on the ESPHome add-on settings page, in the
+ "Network" section. In the "Host" field (that is now showing disabled),
+ enter `6052` and hit save.
+1. Restart the ESPHome add-on.
+
+And you're set!
+
+No changes to the vscode add-on are needed, since it has been pre-configured.
+
+**Please note!** This opens up ESPHome for access within your network
+without authentication! Currently, this is how ESPHome advises how to
+set up your system, but it surely has security risks. We hope ESPHome
+will come up with a better solution for this soon.
+
+## Known issues and limitations
+
+- Can this add-on run on a Raspberry Pi? Yes, but only if you run a 64 bits
+ operating system. Also, see point below.
+- This add-on currently only supports AMD64 and aarch64/ARM64 machines.
+ Although we support ARM devices, please be aware, that this add-on is quite
+ heavy to run, and requires quite a bit of RAM. We do not recommended to run
+ it on devices with less than 4Gb of memory.
+- If you get a blank screen (and it worked before), it could be that you changed
+ your workspace. Reinstalling the add-on will not help since it keeps the data
+ in your browser. To remove it (in Chrome) open up developer tools (F12),
+ then go to the application tab and click "clear storage".
+ Now refresh the page and you're back in action.
+- "Visual Studio Code is unable to watch for file changes in this large
+ workspace" (error ENOSPC)
+
+ This issue is caused by your system not having enough file handles,
+ which causes VSCode to be unable to watch all your files. For HassOS,
+ currently the only option is to click on the little cog when the
+ notification appears and tell it to not show again. In case you have
+ a generic Linux setup (e.g., Ubuntu), follow this guide by Microsoft:
+
+
+
+## Changelog & Releases
+
+This repository keeps a change log using [GitHub's releases][releases]
+functionality.
+
+Releases are based on [Semantic Versioning][semver], and use the format
+of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
+based on the following:
+
+- `MAJOR`: Incompatible or major changes.
+- `MINOR`: Backwards-compatible new features and enhancements.
+- `PATCH`: Backwards-compatible bugfixes and package updates.
+
+## Support
+
+Got questions?
+
+You have several options to get them answered:
+
+- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
+ support and feature requests.
+- The [Home Assistant Discord chat server][discord-ha] for general Home
+ Assistant discussions and questions.
+- The Home Assistant [Community Forum][forum].
+- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+
+You could also [open an issue here][issue] GitHub.
+
+## Authors & contributors
+
+The original setup of this repository is by [Franck Nijhof][frenck].
+
+For a full list of all authors and contributors,
+check [the contributor's page][contributors].
+
+## License
+
+MIT License
+
+Copyright (c) 2019-2021 Franck Nijhof
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[contributors]: https://github.com/hassio-addons/addon-vscode/graphs/contributors
+[discord-ha]: https://discord.gg/c5DvZ4e
+[discord]: https://discord.me/hassioaddons
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863?u=frenck
+[frenck]: https://github.com/frenck
+[issue]: https://github.com/hassio-addons/addon-vscode/issues
+[reddit]: https://reddit.com/r/homeassistant
+[releases]: https://github.com/hassio-addons/addon-vscode/releases
+[semver]: http://semver.org/spec/v2.0.0
+[ubuntu-packages]: https://packages.ubuntu.com
diff --git a/vscode/README.md b/vscode/README.md
new file mode 100644
index 0000000..235553c
--- /dev/null
+++ b/vscode/README.md
@@ -0,0 +1,40 @@
+# Home Assistant Community Add-on: Visual Studio Code
+
+[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
+
+[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
+
+[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
+
+[![Support Frenck on Patreon][patreon-shield]][patreon]
+
+Visual Studio Code, accessible through the browser.
+
+## About
+
+This add-on runs Visual Studio Code, allowing you to edit your Home Assistant
+configuration straight from the web browser and can be embedded straight
+into the Home Assistant frontend UI.
+
+Visual Studio Code runs as a remote server using `code-server`, and is a
+fully fledged VSCode experience.
+
+The add-on has the Home Assistant, MDI icons and YAML extensions pre-installed
+and pre-configured right out of the box. This means that auto-completion works
+instantly, without the need for configuring anything.
+
+![Visual Studio Code in the Home Assistant Frontend][screenshot]
+
+[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
+[discord]: https://discord.me/hassioaddons
+[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
+[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863?u=frenck
+[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
+[github-sponsors]: https://github.com/sponsors/frenck
+[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
+[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
+[patreon]: https://www.patreon.com/frenck
+[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
+[release-shield]: https://img.shields.io/badge/version-v3.4.1-blue.svg
+[release]: https://github.com/hassio-addons/addon-vscode/tree/v3.4.1
+[screenshot]: https://github.com/hassio-addons/addon-vscode/raw/main/images/screenshot.png
\ No newline at end of file
diff --git a/vscode/config.json b/vscode/config.json
new file mode 100644
index 0000000..218d0a9
--- /dev/null
+++ b/vscode/config.json
@@ -0,0 +1,47 @@
+{
+ "name": "Visual Studio Code",
+ "version": "3.4.1",
+ "slug": "vscode",
+ "description": "Fully featured VSCode experience, to edit your HA config in the browser, including auto-completion!",
+ "url": "https://github.com/hassio-addons/addon-vscode",
+ "ingress": true,
+ "ingress_port": 1337,
+ "panel_icon": "mdi:microsoft-visual-studio-code",
+ "startup": "services",
+ "init": false,
+ "arch": [
+ "aarch64",
+ "amd64"
+ ],
+ "uart": true,
+ "hassio_api": true,
+ "hassio_role": "manager",
+ "homeassistant_api": true,
+ "map": [
+ "config:rw",
+ "ssl:rw",
+ "addons:rw",
+ "media:rw",
+ "share:rw",
+ "backup:rw"
+ ],
+ "services": [
+ "mysql:want",
+ "mqtt:want"
+ ],
+ "options": {
+ "packages": [],
+ "init_commands": []
+ },
+ "schema": {
+ "log_level": "list(trace|debug|info|notice|warning|error|fatal)?",
+ "config_path": "str?",
+ "packages": [
+ "str"
+ ],
+ "init_commands": [
+ "str"
+ ]
+ },
+ "image": "ghcr.io/hassio-addons/vscode/{arch}"
+}
\ No newline at end of file
diff --git a/vscode/icon.png b/vscode/icon.png
new file mode 100644
index 0000000..b3225e4
Binary files /dev/null and b/vscode/icon.png differ
diff --git a/vscode/logo.png b/vscode/logo.png
new file mode 100644
index 0000000..57a2ca2
Binary files /dev/null and b/vscode/logo.png differ