From 457730c5ecc89fc524a18ae4ccd9afcfc76da92c Mon Sep 17 00:00:00 2001 From: petruknw Date: Wed, 20 May 2026 18:56:24 +1000 Subject: [PATCH] feat: add Aurral add-on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wraps ghcr.io/lklynet/aurral — self-hosted music discovery, request management, flows and playlist importing for Lidarr with Navidrome integration. - Port: 3001 - Volumes: /app/downloads (flows/downloads), /app/backend/data (DB) - Env options: PUID, PGID, TRUST_PROXY, TZ, LIDARR_INSECURE, AUTH_PROXY_* --- aurral/CHANGELOG.md | 5 ++ aurral/Dockerfile | 20 +++++++ aurral/README.md | 72 +++++++++++++++++++++++++ aurral/apparmor.txt | 21 ++++++++ aurral/build.json | 15 ++++++ aurral/config.yaml | 58 ++++++++++++++++++++ aurral/rootfs/etc/services.d/aurral/run | 38 +++++++++++++ 7 files changed, 229 insertions(+) create mode 100644 aurral/CHANGELOG.md create mode 100644 aurral/Dockerfile create mode 100644 aurral/README.md create mode 100644 aurral/apparmor.txt create mode 100644 aurral/build.json create mode 100644 aurral/config.yaml create mode 100644 aurral/rootfs/etc/services.d/aurral/run diff --git a/aurral/CHANGELOG.md b/aurral/CHANGELOG.md new file mode 100644 index 0000000000..f29fdb212e --- /dev/null +++ b/aurral/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 + +- Initial Home Assistant add-on release wrapping `ghcr.io/lklynet/aurral:latest` diff --git a/aurral/Dockerfile b/aurral/Dockerfile new file mode 100644 index 0000000000..3826991edc --- /dev/null +++ b/aurral/Dockerfile @@ -0,0 +1,20 @@ +# ============================================================== +# Home Assistant Add-on: Aurral +# Wraps the upstream ghcr.io/lklynet/aurral image. +# ============================================================== +FROM ghcr.io/lklynet/aurral:latest + +ARG BUILD_VERSION +ARG BUILD_ARCH + +LABEL \ + io.hass.name="Aurral" \ + io.hass.description="Self-hosted music discovery and request management for Lidarr" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version="${BUILD_VERSION}" \ + maintainer="petruknw" + +COPY rootfs / + +RUN chmod a+x /etc/services.d/aurral/run diff --git a/aurral/README.md b/aurral/README.md new file mode 100644 index 0000000000..1499657d29 --- /dev/null +++ b/aurral/README.md @@ -0,0 +1,72 @@ +# Aurral + +[![Source][source-shield]][source] +![Supports aarch64][aarch64-shield] +![Supports amd64][amd64-shield] + +Self-hosted music discovery, request management, flows, and playlist importing +for Lidarr — with library-aware recommendations and Navidrome integration. + +## Installation + +1. Add **alexbelgium's add-on repository** to Home Assistant (if not already added). +2. Go to **Settings → Add-ons → Add-on Store**, find **Aurral**, and click **Install**. +3. Configure the options below, then click **Start**. + +## Configuration + +```yaml +# Host path (under /share) where Aurral writes flow downloads. +download_folder: /share/aurral/downloads + +# Host path (under /share) for Aurral's database and persistent config. +data_folder: /share/aurral/data + +# Run as this UID/GID — match your host directory ownership. +PUID: 1000 +PGID: 1000 + +# Set true if behind HA ingress or a reverse proxy. +TRUST_PROXY: "true" + +# Your timezone, e.g. Australia/Melbourne (leave blank to inherit from HA) +TZ: "" + +# Allow self-signed TLS on your Lidarr instance. +LIDARR_INSECURE: "false" + +# Reverse-proxy SSO auth (optional). +AUTH_PROXY_ENABLED: "false" +AUTH_PROXY_HEADER: "" +AUTH_PROXY_TRUSTED_IPS: "" +``` + +## Volume Mapping + +| Option | HA host path (default) | Container path | Purpose | +|---|---|---|---| +| `download_folder` | `/share/aurral/downloads` | `/app/downloads` | Flow output, Navidrome playlists | +| `data_folder` | `/share/aurral/data` | `/app/backend/data` | Database, settings | +| *(built-in)* | `/media` | `/media` | HA media library (read) | + +## Ports + +| Port | Description | +|---|---| +| `3001/tcp` | Aurral Web UI | + +## Requirements + +- **Lidarr** reachable from your HA host +- **Last.fm API key** for recommendations and metadata +- Optional: **Navidrome** for flow/playlist library integration + +## More Information + +Full documentation, flows guide, and Spotify import helper: +[github.com/lklynet/aurral][source] + +[source-shield]: https://img.shields.io/badge/source-lklynet%2Faurral-blue +[source]: https://github.com/lklynet/aurral +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg diff --git a/aurral/apparmor.txt b/aurral/apparmor.txt new file mode 100644 index 0000000000..7faa69afc8 --- /dev/null +++ b/aurral/apparmor.txt @@ -0,0 +1,21 @@ +#include + +profile aurral flags=(attach_disconnected,mediate_deleted) { + #include + + file, + signal (send) set=(kill,term,int,hup,cont), + + /init ix, + /bin/** ix, + /usr/bin/** ix, + /usr/local/bin/** ix, + /run/{s6,s6-rc*,fix-attrs.d}/** ix, + + /share/aurral/** rwk, + /media/** rk, + /app/** rwk, + + deny /proc/*/net/if_inet6 r, + deny /proc/*/net/ipv6_route r, +} diff --git a/aurral/build.json b/aurral/build.json new file mode 100644 index 0000000000..d1c2b49505 --- /dev/null +++ b/aurral/build.json @@ -0,0 +1,15 @@ +{ + "build_from": { + "aarch64": "ghcr.io/lklynet/aurral:latest", + "amd64": "ghcr.io/lklynet/aurral:latest" + }, + "squash": false, + "labels": { + "io.hass.name": "Aurral", + "io.hass.description": "Self-hosted music discovery and request management for Lidarr", + "io.hass.arch": "{arch}", + "io.hass.type": "addon", + "io.hass.version": "dev", + "maintainer": "petruknw" + } +} diff --git a/aurral/config.yaml b/aurral/config.yaml new file mode 100644 index 0000000000..31d3157d73 --- /dev/null +++ b/aurral/config.yaml @@ -0,0 +1,58 @@ +name: Aurral +version: "1.0.0" +slug: aurral +description: >- + Self-hosted music discovery, request management, flows, and playlist + importing for Lidarr with library-aware recommendations and Navidrome + integration. +url: https://github.com/petruknw/hassio-addons/blob/feat/aurral-addon/aurral/README.md +arch: + - aarch64 + - amd64 + +image: ghcr.io/lklynet/aurral + +init: false + +ports: + 3001/tcp: 3001 +ports_description: + 3001/tcp: Aurral Web UI + +webui: http://[HOST]:[PORT:3001] + +map: + - addon_config:rw + - share:rw + - media:rw + +options: + download_folder: /share/aurral/downloads + data_folder: /share/aurral/data + PUID: 1000 + PGID: 1000 + TRUST_PROXY: "true" + TZ: "" + LIDARR_INSECURE: "false" + AUTH_PROXY_ENABLED: "false" + AUTH_PROXY_HEADER: "" + AUTH_PROXY_TRUSTED_IPS: "" + +schema: + download_folder: str + data_folder: str + PUID: int + PGID: int + TRUST_PROXY: str + TZ: str? + LIDARR_INSECURE: str? + AUTH_PROXY_ENABLED: str? + AUTH_PROXY_HEADER: str? + AUTH_PROXY_TRUSTED_IPS: str? + +environment: + PUID: "1000" + PGID: "1000" + +panel_icon: mdi:music-box-multiple +panel_title: Aurral diff --git a/aurral/rootfs/etc/services.d/aurral/run b/aurral/rootfs/etc/services.d/aurral/run new file mode 100644 index 0000000000..eb1e66e3ed --- /dev/null +++ b/aurral/rootfs/etc/services.d/aurral/run @@ -0,0 +1,38 @@ +#!/usr/bin/with-contenv bashio +# ============================================================== +# Start Aurral with configuration from HA add-on options. +# ============================================================== + +DOWNLOAD_FOLDER=$(bashio::config 'download_folder') +DATA_FOLDER=$(bashio::config 'data_folder') +PUID=$(bashio::config 'PUID') +PGID=$(bashio::config 'PGID') +TRUST_PROXY=$(bashio::config 'TRUST_PROXY') +TZ=$(bashio::config 'TZ' '') +LIDARR_INSECURE=$(bashio::config 'LIDARR_INSECURE' 'false') +AUTH_PROXY_ENABLED=$(bashio::config 'AUTH_PROXY_ENABLED' 'false') +AUTH_PROXY_HEADER=$(bashio::config 'AUTH_PROXY_HEADER' '') +AUTH_PROXY_TRUSTED_IPS=$(bashio::config 'AUTH_PROXY_TRUSTED_IPS' '') + +# Ensure host-side directories exist +mkdir -p "${DOWNLOAD_FOLDER}" "${DATA_FOLDER}" + +# Symlink HA volume paths into the locations Aurral expects +rm -rf /app/downloads && ln -sf "${DOWNLOAD_FOLDER}" /app/downloads +rm -rf /app/backend/data && ln -sf "${DATA_FOLDER}" /app/backend/data + +bashio::log.info "Starting Aurral" +bashio::log.info " Downloads : ${DOWNLOAD_FOLDER}" +bashio::log.info " Data : ${DATA_FOLDER}" + +exec env \ + PUID="${PUID}" \ + PGID="${PGID}" \ + DOWNLOAD_FOLDER="${DOWNLOAD_FOLDER}" \ + TRUST_PROXY="${TRUST_PROXY}" \ + TZ="${TZ}" \ + LIDARR_INSECURE="${LIDARR_INSECURE}" \ + AUTH_PROXY_ENABLED="${AUTH_PROXY_ENABLED}" \ + AUTH_PROXY_HEADER="${AUTH_PROXY_HEADER}" \ + AUTH_PROXY_TRUSTED_IPS="${AUTH_PROXY_TRUSTED_IPS}" \ + docker-entrypoint.sh node server.js