From 97d0028911f193f8740fc422aee2fd2d029edd9b Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 11 Mar 2022 19:53:52 +0100 Subject: [PATCH] initial build --- README.md | 2 +- zoneminder/CHANGELOG.md | 1 + zoneminder/Dockerfile | 100 ++++++++++++++++++ zoneminder/Readme.md | 48 +++++++++ zoneminder/apparmor.txt | 56 ++++++++++ zoneminder/config.json | 27 +++++ zoneminder/icon.png | Bin 0 -> 8510 bytes zoneminder/logo.png | Bin 0 -> 8510 bytes zoneminder/rootfs/entrypoint.sh | 27 +++++ .../cont-init.d/00-aaa_dockerfile_backup.sh | 33 ++++++ .../rootfs/etc/cont-init.d/00-folders.sh | 12 +++ zoneminder/rootfs/etc/cont-init.d/99-run.sh | 83 +++++++++++++++ 12 files changed, 388 insertions(+), 1 deletion(-) create mode 100644 zoneminder/CHANGELOG.md create mode 100644 zoneminder/Dockerfile create mode 100644 zoneminder/Readme.md create mode 100644 zoneminder/apparmor.txt create mode 100644 zoneminder/config.json create mode 100644 zoneminder/icon.png create mode 100644 zoneminder/logo.png create mode 100644 zoneminder/rootfs/entrypoint.sh create mode 100644 zoneminder/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh create mode 100644 zoneminder/rootfs/etc/cont-init.d/00-folders.sh create mode 100644 zoneminder/rootfs/etc/cont-init.d/99-run.sh diff --git a/README.md b/README.md index 5194f9699..4e866c187 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,6 @@ https://github.com/alexbelgium/hassio-addons ## Addons list - ### ✓ Connectors - [enedisgateway2mqtt](enedisgateway2mqtt/) : use Enedis Gateway API to send data in your MQTT Broker @@ -81,6 +80,7 @@ https://github.com/alexbelgium/hassio-addons - [Mealie](mealie/) : Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. This addon is based on the docker image from hay-kot. - [Tandoor Recipes](tandoor_recipes/): Recipe manager - [Wger](wger/): manage your personal workouts, weight and diet plans +- [Zoneminder](zoneminder/): a full-featured, open source, state-of-the-art video surveillance software system ### ✓ Genealogy diff --git a/zoneminder/CHANGELOG.md b/zoneminder/CHANGELOG.md new file mode 100644 index 000000000..66f7e8b76 --- /dev/null +++ b/zoneminder/CHANGELOG.md @@ -0,0 +1 @@ +- Initial release diff --git a/zoneminder/Dockerfile b/zoneminder/Dockerfile new file mode 100644 index 000000000..04f663798 --- /dev/null +++ b/zoneminder/Dockerfile @@ -0,0 +1,100 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +ARG BUILD_UPSTREAM="1.36.12" +FROM tritruongtr/zoneminder:latest + +################## +# 2 Modify Image # +################## + +# Global variables +ENV DZM_CONFIG_DIR="/config/addons_config/zoneminder" + +# Change config location +# hadolint ignore=DL4006 +RUN sed -i 's|/etc/zm.conf|/config/addons_config/zoneminder/zm.conf|g' /usr/local/bin/entrypoint.sh \ + && sed -i 's|ZM_PATH_CONF=/config|ZM_PATH_CONF=/config/addons_config/zoneminder/zm.conf|g' /etc/zm/zm.conf \ + && sed -i 's|/var/lib/mysql|/config/addons_config/zoneminder/mysql|g' /usr/local/bin/entrypoint.sh \ + && grep -rl '/var/lib/mysql' /etc | xargs sed -i 's|/var/lib/mysql|/config/addons_config/zoneminder/mysql|g' + +################## +# 3 Install apps # +################## + +# Copy local files +COPY rootfs/ / + +# Modules +ARG MODULES="00-banner.sh" + +# Automatic modules download +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d || printf '%s\n' "${MODULES}" >/MODULESFILE + +# Manual apps +ENV PACKAGES="" + +# Automatic apps & bashio +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh || printf '%s\n' "${PACKAGES:-}" > /ENVFILE + +################ +# 4 Entrypoint # +################ + +RUN chmod 777 /entrypoint.sh +ENTRYPOINT [ "/usr/bin/env" ] +CMD [ "/entrypoint.sh" ] + +############ +# 5 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/zoneminder/Readme.md b/zoneminder/Readme.md new file mode 100644 index 000000000..b515833b6 --- /dev/null +++ b/zoneminder/Readme.md @@ -0,0 +1,48 @@ +# Home assistant add-on: Zoneminder + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fzoneminder%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fzoneminder%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fzoneminder%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://github.com/alexbelgium/hassio-addons/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) +[![Builder](https://github.com/alexbelgium/hassio-addons/workflows/Builder/badge.svg)](https://github.com/alexbelgium/hassio-addons/actions/workflows/builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://reporoster.com/stars/alexbelgium/hassio-addons)](https://github.com/alexbelgium/hassio-addons/stargazers) + +## About + +["Zoneminder"](https://zoneminder.com/) is a full-featured, open source, state-of-the-art video surveillance software system. + +This addon is based on the docker image https://github.com/ZoneMinder/zmdockerfiles/blob/master/utils/entrypoint.sh + +## Configuration + +Read official documentation for information how to set : https://github.com/ZoneMinder/zmdockerfiles/blob/master/utils/entrypoint.sh + +## Installation + +The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on. + +1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) + [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Set the add-on options to your preferences +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Open the webUI and adapt the software options + +## Support + +Create an issue on github + +## Illustration + +[repository]: https://github.com/alexbelgium/hassio-addons diff --git a/zoneminder/apparmor.txt b/zoneminder/apparmor.txt new file mode 100644 index 000000000..34d6c765f --- /dev/null +++ b/zoneminder/apparmor.txt @@ -0,0 +1,56 @@ +#include + +profile zoneminder_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + + 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/zoneminder/config.json b/zoneminder/config.json new file mode 100644 index 000000000..491938ef0 --- /dev/null +++ b/zoneminder/config.json @@ -0,0 +1,27 @@ +{ + "apparmor": true, + "arch": ["aarch64", "amd64", "armv7"], + "boot": "auto", + "description": "A full-featured, open source, state-of-the-art video surveillance software system", + "name": "Zoneminder", + "options": { + }, + "ports": { + "80/tcp": 3777 + }, + "map": [ + "config:rw" + ], + "image": "ghcr.io/alexbelgium/zoneminder-{arch}", + "ports_description": { + "80/tcp": "web interface" + }, + "schema": { + }, + "slug": "zoneminder", + "upstream": "1.36.12", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "1.36.12", + "services": ["mysql:want"], + "webui": "[PROTO:ssl]://[HOST]:[PORT:80]/zm" +} diff --git a/zoneminder/icon.png b/zoneminder/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ec047f4fc16addde9d7ccc0bb68573b2a7e2f635 GIT binary patch literal 8510 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 literal 0 HcmV?d00001 diff --git a/zoneminder/logo.png b/zoneminder/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ec047f4fc16addde9d7ccc0bb68573b2a7e2f635 GIT binary patch literal 8510 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 literal 0 HcmV?d00001 diff --git a/zoneminder/rootfs/entrypoint.sh b/zoneminder/rootfs/entrypoint.sh new file mode 100644 index 000000000..9becb179e --- /dev/null +++ b/zoneminder/rootfs/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/bash +echo "Starting..." + +############################ +# Backup Dockerfile Script # +############################ + +if [ -f /etc/cont-init.d/00-aaa_dockerfile_backup.sh ]; then + chown "$(id -u)":"$(id -g)" /etc/cont-init.d/00-aaa_dockerfile_backup.sh + chmod +x /etc/cont-init.d/00-aaa_dockerfile_backup.sh + /./etc/cont-init.d/00-aaa_dockerfile_backup.sh + rm /etc/cont-init.d/00-aaa_dockerfile_backup.sh +fi + +#################### +# Starting scripts # +#################### + +for SCRIPTS in /etc/cont-init.d/*; do + [ -e "$SCRIPTS" ] || continue + echo "$SCRIPTS: executing" + chown "$(id -u)":"$(id -g)" "$SCRIPTS" + chmod a+x "$SCRIPTS" + # Change shebang if no s6 supervision + sed -i 's|/usr/bin/with-contenv bashio|/usr/bin/env bashio|g' "$SCRIPTS" + /."$SCRIPTS" || echo "$SCRIPTS: exiting $?" +done diff --git a/zoneminder/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh b/zoneminder/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh new file mode 100644 index 000000000..98dddfe70 --- /dev/null +++ b/zoneminder/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# If dockerfile failed install manually + +############################## +# Automatic modules download # +############################## +if [ -e "/MODULESFILE" ]; then + MODULES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d +fi + +####################### +# Automatic installer # +####################### +if [ -e "/ENVFILE" ]; then + PACKAGES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh +fi diff --git a/zoneminder/rootfs/etc/cont-init.d/00-folders.sh b/zoneminder/rootfs/etc/cont-init.d/00-folders.sh new file mode 100644 index 000000000..04eef810b --- /dev/null +++ b/zoneminder/rootfs/etc/cont-init.d/00-folders.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# shellcheck shell=bash + +#CONFIGSOURCE=$(bashio::config "CONFIG_LOCATION") +#CONFIGSOURCE=$(dirname "$CONFIGSOURCE") +CONFIGSOURCE="/config/addons_config/zoneminder" + +# Create directory +mkdir -p "$CONFIGSOURCE" || true + +# Make sure permissions are right +chown -R "$(id -u):$(id -g)" "$CONFIGSOURCE" diff --git a/zoneminder/rootfs/etc/cont-init.d/99-run.sh b/zoneminder/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..075e48649 --- /dev/null +++ b/zoneminder/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash +# hadolint ignore=SC2155 + +################# +# Define config # +################# + +CONFIGSOURCE="/config/addons_config/zoneminder" +if [ ! -f "$CONFIGSOURCE"/zm.conf ]; then + +# Copy conf files +cp /etc/zm/zm.conf "$CONFIGSOURCE" +fi + +################### +# Define database # +################### + +bashio::log.info "Defining database" +case "$(bashio::config "DB_CONNECTION")" in + +# Use MariaDB +mariadb_addon) + bashio::log.info "Using MariaDB addon. Requirements : running MariaDB addon. Detecting values..." + if ! bashio::services.available 'mysql'; then + bashio::log.fatal \ + "Local database access should be provided by the MariaDB addon" + bashio::exit.nok \ + "Please ensure it is installed and started" + fi + + # Use values + DB_CONNECTION=mysql + ZM_DB_HOST=$(bashio::services "mysql" "host") + ZM_DB_PORT=$(bashio::services "mysql" "port") + ZM_DB_NAME=firefly + ZM_DB_USER=$(bashio::services "mysql" "username") + ZM_DB_PASS=$(bashio::services "mysql" "password") + export DB_CONNECTION + export remoteDB=1 + export ZM_DB_HOST && bashio::log.blue "ZM_DB_HOST=$ZM_DB_HOST" + export ZM_DB_PORT && bashio::log.blue "ZM_DB_PORT=$ZM_DB_PORT" + export ZM_DB_NAME && bashio::log.blue "ZM_DB_NAME=$ZM_DB_NAME" + export ZM_DB_USER && bashio::log.blue "ZM_DB_USER=$ZM_DB_USER" + export ZM_DB_PASS && bashio::log.blue "ZM_DB_PASS=$ZM_DB_PASS" + + bashio::log.warning "Firefly-iii is using the Maria DB addon" + bashio::log.warning "Please ensure this is included in your backups" + bashio::log.warning "Uninstalling the MariaDB addon will remove any data" + + bashio::log.info "Creating database for Firefly-iii if required" + mysql \ + -u "${ZM_DB_USER}" -p"${ZM_DB_PASS}" \ + -h "${ZM_DB_HOST}" -P "${ZM_DB_PORT}" \ + -e "CREATE DATABASE IF NOT EXISTS \`firefly\` ;" + ;; + +# Use remote +external) + bashio::log.info "Using remote database. Requirement : filling all addon options fields, and making sure the database already exists" + for conditions in "ZM_DB_HOST" "ZM_DB_PORT" "ZM_DB_NAME" "ZM_DB_USER" "ZM_DB_PASS"; do + if ! bashio::config.has_value "$conditions"; then + bashio::exit.nok "Remote database has been specified but $conditions is not defined in addon options" + fi + done + ;; + + +# Use remote +*) + bashio::log.info "Using internal database" + ;; + +esac + +############## +# LAUNCH APP # +############## + +bashio::log.info "Please wait while the app is loading !" + +./usr/local/bin/entrypoint.sh