feat: add Aurral add-on

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_*
This commit is contained in:
petruknw
2026-05-20 18:56:24 +10:00
parent 207fc703a7
commit 457730c5ec
7 changed files with 229 additions and 0 deletions

5
aurral/CHANGELOG.md Normal file
View File

@@ -0,0 +1,5 @@
# Changelog
## 1.0.0
- Initial Home Assistant add-on release wrapping `ghcr.io/lklynet/aurral:latest`

20
aurral/Dockerfile Normal file
View File

@@ -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

72
aurral/README.md Normal file
View File

@@ -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

21
aurral/apparmor.txt Normal file
View File

@@ -0,0 +1,21 @@
#include <tunables/global>
profile aurral flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
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,
}

15
aurral/build.json Normal file
View File

@@ -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"
}
}

58
aurral/config.yaml Normal file
View File

@@ -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

View File

@@ -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