From 004861728ccb52e6de9196eebe494c226b9b1610 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Thu, 14 Oct 2021 16:20:49 +0200 Subject: [PATCH] initial build --- grav/CHANGELOG.md | 1 + grav/Dockerfile | 67 ++++++++++++++++ grav/Readme.md | 61 +++++++++++++++ grav/apparmor.txt | 48 ++++++++++++ grav/build.json | 8 ++ grav/config.json | 51 +++++++++++++ grav/icon.png | Bin 0 -> 15355 bytes grav/logo.png | Bin 0 -> 15355 bytes grav/root/etc/cont-init.d/00-banner.sh | 39 ++++++++++ grav/root/etc/cont-init.d/00-ha-env | 5 ++ grav/root/etc/cont-init.d/20-folders | 7 ++ .../etc/cont-init.d/92-local_mounts_v1.1.sh | 26 +++++++ .../etc/cont-init.d/92-smb_mounts_v1.4.sh | 72 ++++++++++++++++++ 13 files changed, 385 insertions(+) create mode 100644 grav/CHANGELOG.md create mode 100644 grav/Dockerfile create mode 100644 grav/Readme.md create mode 100644 grav/apparmor.txt create mode 100644 grav/build.json create mode 100644 grav/config.json create mode 100644 grav/icon.png create mode 100644 grav/logo.png create mode 100644 grav/root/etc/cont-init.d/00-banner.sh create mode 100644 grav/root/etc/cont-init.d/00-ha-env create mode 100644 grav/root/etc/cont-init.d/20-folders create mode 100644 grav/root/etc/cont-init.d/92-local_mounts_v1.1.sh create mode 100644 grav/root/etc/cont-init.d/92-smb_mounts_v1.4.sh diff --git a/grav/CHANGELOG.md b/grav/CHANGELOG.md new file mode 100644 index 000000000..93f181116 --- /dev/null +++ b/grav/CHANGELOG.md @@ -0,0 +1 @@ +- Initial release (nightly builds) diff --git a/grav/Dockerfile b/grav/Dockerfile new file mode 100644 index 000000000..36c9b7a81 --- /dev/null +++ b/grav/Dockerfile @@ -0,0 +1,67 @@ +ARG BUILD_FROM +ARG BUILD_VERSION +FROM ${BUILD_FROM} +ARG BASHIO_VERSION=0.13.1 + +RUN \ + ################ + # Install apps # + ################ + apt-get clean \ + && apt-get update \ + && apt-get install -y \ + jq \ + curl \ + cifs-utils \ + keyutils \ + samba \ + \ + ################### + # 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 \ + \ + # use /data instead of /config for hass.io environment + && sed -i "s|/config|/share/grav|g" /etc/services.d/grav/run \ + && sed -i "s|/config|/share/grav|g" /etc/cont-init.d/50-config \ + && sed -i "s|/share/grav/nginx|/config/nginx|g" /etc/cont-init.d/50-config \ + \ + # 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 + +# copy local files +COPY root/ / + +### 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/grav/Readme.md b/grav/Readme.md new file mode 100644 index 000000000..aab7a4c2f --- /dev/null +++ b/grav/Readme.md @@ -0,0 +1,61 @@ +# Home assistant add-on: grav + +![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] + +# About + +--- + +[grav](https://github.com/grav/grav) is a ebook collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will interface with clients and indexers to grab, sort, and rename them.is book Manager and Automation (Sonarr for Ebooks). +This addon is based on the docker image https://github.com/linuxserver/docker-grav + +# 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 + +# Configuration + +--- + +Webui can be found at . +The default username/password : described in the startup log. +Configurations can be done through the app webUI, except for the following options + +```yaml +GUID: user +GPID: user +TZ: timezone +localdisks: "sda1" # Optional +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 +``` + +## Support + +Create an issue on github + +# Illustration + +--- + +![illustration](https://www.geekzone.fr/wp-content/uploads/2018/05/grav_1.png) + +[repository]: https://github.com/alexbelgium/hassio-addons +[smb-shield]: https://img.shields.io/badge/smb-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/grav/apparmor.txt b/grav/apparmor.txt new file mode 100644 index 000000000..a745d395d --- /dev/null +++ b/grav/apparmor.txt @@ -0,0 +1,48 @@ +#include + +profile grav_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/grav/build.json b/grav/build.json new file mode 100644 index 000000000..9fc2f5851 --- /dev/null +++ b/grav/build.json @@ -0,0 +1,8 @@ +{ + "build_from": { + "armhf": "linuxserver/grav:arm32v7-nightly", + "armv7": "linuxserver/grav:arm32v7-nightly", + "aarch64": "linuxserver/grav:arm64v8-nightly", + "amd64": "linuxserver/grav:amd64-nightly" + } +} diff --git a/grav/config.json b/grav/config.json new file mode 100644 index 000000000..879e58b63 --- /dev/null +++ b/grav/config.json @@ -0,0 +1,51 @@ +{ + "arch": ["aarch64", "amd64", "armv7", "armhf"], + "boot": "auto", + "description": "Fast, Simple, and Flexible, file-based Web-platform", + "devices": [ + "/dev/sda1", + "/dev/sdb1", + "/dev/sdc1", + "/dev/sdd1", + "/dev/sde1", + "/dev/sdf1", + "/dev/sdg1", + "/dev/sda2", + "/dev/sdb2", + "/dev/sdc2", + "/dev/sdd2", + "/dev/sde2", + "/dev/sdf2", + "/dev/sdg2" + ], + "environment": { + "PUID": "0", + "PGID": "0" + }, + "map": ["share:rw", "media:rw", "config:rw"], + "name": "grav NAS", + "options": { + "networkdisks": ",", + "cifsusername": "", + "cifspassword": "" + }, + "ports": { + "80/tcp": 9191 + }, + "ports_description": { + "80/tcp": "web interface" + }, + "privileged": ["SYS_ADMIN", "DAC_READ_SEARCH"], + "schema": { + "TZ": "str?", + "localdisks": "str?", + "networkdisks": "str?", + "cifsusername": "str?", + "cifspassword": "str?" + }, + "slug": "grav_nas", + "upstream": "nightly-0.1.0.991-ls16", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "nightly-0.1.0.991-ls16", + "webui": "http://[HOST]:[PORT:8787]" +} diff --git a/grav/icon.png b/grav/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..caae4a714d8fbe8383fe0123579a3fd999cb8f35 GIT binary patch literal 15355 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 Vp>BRzEASIcK~CjKsf@Az{{h0Ho_GKN literal 0 HcmV?d00001 diff --git a/grav/logo.png b/grav/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..caae4a714d8fbe8383fe0123579a3fd999cb8f35 GIT binary patch literal 15355 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 Vp>BRzEASIcK~CjKsf@Az{{h0Ho_GKN literal 0 HcmV?d00001 diff --git a/grav/root/etc/cont-init.d/00-banner.sh b/grav/root/etc/cont-init.d/00-banner.sh new file mode 100644 index 000000000..71b1a4e4e --- /dev/null +++ b/grav/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/grav/root/etc/cont-init.d/00-ha-env b/grav/root/etc/cont-init.d/00-ha-env new file mode 100644 index 000000000..342068f41 --- /dev/null +++ b/grav/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 diff --git a/grav/root/etc/cont-init.d/20-folders b/grav/root/etc/cont-init.d/20-folders new file mode 100644 index 000000000..3a4e12551 --- /dev/null +++ b/grav/root/etc/cont-init.d/20-folders @@ -0,0 +1,7 @@ +#!/usr/bin/with-contenv bash + +if [ ! -d /share/grav ]; then + echo "Creating /share/grav" + mkdir -p /share/grav + chown -R abc:abc /share/grav +fi diff --git a/grav/root/etc/cont-init.d/92-local_mounts_v1.1.sh b/grav/root/etc/cont-init.d/92-local_mounts_v1.1.sh new file mode 100644 index 000000000..bdefdc56b --- /dev/null +++ b/grav/root/etc/cont-init.d/92-local_mounts_v1.1.sh @@ -0,0 +1,26 @@ +#!/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 + 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!" + done || \ + bashio::log.warning "Protection mode is ON. Unable to mount local drives!" +fi diff --git a/grav/root/etc/cont-init.d/92-smb_mounts_v1.4.sh b/grav/root/etc/cont-init.d/92-smb_mounts_v1.4.sh new file mode 100644 index 000000000..a31ade114 --- /dev/null +++ b/grav/root/etc/cont-init.d/92-smb_mounts_v1.4.sh @@ -0,0 +1,72 @@ +#!/usr/bin/with-contenv bashio + +#################### +# MOUNT SMB SHARES # +#################### +if bashio::config.has_value 'networkdisks'; then + + # Define variables + MOREDISKS=$(bashio::config 'networkdisks') + CIFS_USERNAME=$(bashio::config 'cifsusername') + CIFS_PASSWORD=$(bashio::config 'cifspassword') + MOUNTED=false + SMBVERS="" + SECVERS="" + + # Dont execute if still default + [ ${MOREDISKS::1} == "<" ] && exit 0 + + # Mount CIFS Share if configured and if Protection Mode is active + bashio::log.info 'Mounting smb share(s)...' + + 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,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" ",iocharset=utf8" + do + mount -t cifs -o rw,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 + + # Test smbclient if not mounted yet + if [ $MOUNTED = false ]; then + smbclient -L $disk -U $CIFS_USERNAME%$CIFS_PASSWORD --option="client min protocol"="NT1" && \ + bashio::log.info "Mounted with smbclient" + 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 : $(