Compare commits

...

75 Commits

Author SHA1 Message Date
Alexandre
fe240a2f29 Add aurral submitter to addon_submitters.json 2026-05-21 08:56:30 +02:00
petruknw
55236b67c3 aurral: replace /app/backend/data and /app/downloads with symlinks at build time 2026-05-21 16:24:51 +10:00
petruknw
78da35d63f aurral: fix data/downloads paths to match upstream volume layout 2026-05-21 16:21:03 +10:00
petruknw
2159f17969 aurral: remove unnecessary PUID/PGID env vars 2026-05-21 16:19:10 +10:00
petruknw
ac67de8ef1 aurral: symlink /app/backend/data/image-proxy -> /config/data/image-proxy 2026-05-21 16:17:44 +10:00
petruknw
4ecf6fb5dc aurral: use PUID/PGID=0 instead of chown for runtime permissions 2026-05-21 16:15:19 +10:00
petruknw
d0f19aaa19 aurral: fix image-proxy dir permissions - chown node, not 777 2026-05-21 16:14:08 +10:00
petruknw
526045648b aurral: pre-create /app/backend/data/image-proxy at build time with correct permissions 2026-05-21 16:13:30 +10:00
petruknw
1b6a2c1edf aurral: pre-create /app/backend/data/image-proxy in entrypoint 2026-05-21 16:09:34 +10:00
petruknw
6d891edb3a aurral: set version to 1.76.17 2026-05-21 16:06:33 +10:00
petruknw
7c5e131959 aurral: delete dead s6 run script (plain Node image, no s6) 2026-05-21 16:05:27 +10:00
petruknw
b34cfd35bd aurral: remove dead s6 run script, clean up Dockerfile chmod 2026-05-21 16:05:14 +10:00
petruknw
29e2d595e3 aurral: bump to 1.76.17-2 2026-05-21 16:02:49 +10:00
petruknw
8e50b0e87f aurral: fix startup — plain Node image, use entrypoint override not s6 2026-05-21 16:01:38 +10:00
petruknw
9017e16897 aurral: bump version to 1.76.17-1 to force image rebuild 2026-05-21 15:58:02 +10:00
petruknw
cf02b5bfc8 aurral: override upstream ENTRYPOINT with /init so s6 owns startup 2026-05-21 15:54:10 +10:00
petruknw
2903a010ee aurral: simplify CHANGELOG to single initial release entry 2026-05-21 15:44:07 +10:00
petruknw
da506fc508 aurral: simplify startup — call node directly from run script, drop passthrough entrypoint 2026-05-21 15:43:01 +10:00
petruknw
c15a15efa8 aurral: explicitly set ENTRYPOINT and CMD to match upstream 2026-05-21 15:38:09 +10:00
petruknw
b486b16d3b aurral: chmod our docker-entrypoint.sh override so it's executable 2026-05-21 15:36:24 +10:00
petruknw
df9f80969a aurral: revert to docker-entrypoint.sh, pre-create /app/backend/data so chown succeeds 2026-05-21 15:34:33 +10:00
petruknw
eb4fe464e0 aurral: call node directly, skip docker-entrypoint.sh entirely 2026-05-21 15:32:26 +10:00
petruknw
59e3dc1625 aurral: fix image tag format (1.76.17 not v1.76.17) 2026-05-21 15:28:46 +10:00
petruknw
ec19bdc97a aurral: update updater.json to v1.76.16 2026-05-21 15:21:51 +10:00
petruknw
927845bd66 aurral: update build.json to v1.76.16 2026-05-21 15:21:06 +10:00
petruknw
6c9636f700 aurral: downgrade to v1.76.16 (v1.76.17 image not published to ghcr.io) 2026-05-21 15:19:33 +10:00
petruknw
b3d5d53743 aurral: symlink image-proxy to /config/data to fix EACCES error 2026-05-21 15:15:24 +10:00
petruknw
a6db72c07d aurral: fix bare URL in README (markdownlint MD034) 2026-05-21 15:10:59 +10:00
petruknw
13d13d9cdd aurral: simplify CHANGELOG to single initial release entry 2026-05-21 14:39:03 +10:00
petruknw
4909bd28bb aurral: fix apparmor /config path, update CHANGELOG 2026-05-21 14:37:29 +10:00
petruknw
0a51e2f279 aurral: pin to v1.76.17, drop redundant entrypoint chmod 2026-05-21 14:35:20 +10:00
petruknw
acfa99e20b aurral: remove horizontal rule from installation section 2026-05-21 14:29:38 +10:00
petruknw
336b427bc9 aurral: simplify installation step 1 to badge only 2026-05-21 14:22:17 +10:00
petruknw
8b959e7ab6 Add files via upload 2026-05-21 14:15:00 +10:00
petruknw
e6f68d381e Rename logo.png to icon.png 2026-05-21 14:14:22 +10:00
petruknw
9ac9f7e1f8 Replace logo 2026-05-21 12:13:17 +10:00
petruknw
d99e703e66 aurral: remove panel_icon/panel_title (no ingress) 2026-05-21 12:08:45 +10:00
petruknw
cbc8e9cb95 chore: disable ingress until upstream frameAncestors CSP is fixed 2026-05-21 00:13:15 +10:00
petruknw
bd1735a57e feat: re-enable ingress 2026-05-21 00:11:38 +10:00
petruknw
7650e0bf40 fix: disable ingress, use direct port webui link; pre-declare WEEKLY_FLOW_FOLDER in env_vars 2026-05-21 00:09:56 +10:00
petruknw
4a168b2e8a fix: bake DOWNLOAD_FOLDER default into image ENV so it's inherited by all services 2026-05-20 23:59:48 +10:00
petruknw
5e426b1aa6 fix: pre-create /config/data at build time and set AURRAL_DATA_DIR as ENV 2026-05-20 23:54:10 +10:00
petruknw
971225c527 fix: set PUID=0/PGID=0 so entrypoint stays as root and can write /config/data 2026-05-20 23:48:54 +10:00
petruknw
ed705a051f fix: chmod the passthrough entrypoint so it actually overrides upstream 2026-05-20 23:40:41 +10:00
petruknw
5c6290b1d1 fix: remove image: field so HA builds from Dockerfile; use AURRAL_DATA_DIR env var
When image: is set in config.yaml, HA pulls that image directly and
never runs the Dockerfile, so the rootfs overlay (including the
passthrough entrypoint) was never applied. Removing image: forces HA
to build from the Dockerfile, which COPYs rootfs/ and applies our
run script and entrypoint override.

Also switch run script from symlink approach to AURRAL_DATA_DIR env
var, which avoids the race condition where docker-entrypoint.sh runs
before s6 and tries to chown a broken symlink target.
2026-05-20 23:34:40 +10:00
petruknw
5bd01b5a06 Merge pull request #2 from petruknw/feat/aurral-addon
Feat/aurral addon
2026-05-20 23:29:58 +10:00
petruknw
726f6360d1 fix: resolve merge conflicts with master
- config.yaml: adopt master's env_vars block and version (1.76.12), drop data_folder option
- run: adopt master's /config/data symlink approach (real dir chowned by entrypoint, then symlinked)
- README: keep badge indent fix, update config table to remove data_folder row, fix install steps
- docker-entrypoint.sh: keep passthrough (master doesn't have this file)
2026-05-20 23:29:24 +10:00
petruknw
c833761e2d fix: use HA /data for addon storage, remove data_folder config option
/data is HA's built-in private persistent storage for every addon - no
user configuration needed. Only download_folder needs to be user-facing
since that's where the music lives and users need to know the path.
2026-05-20 23:20:44 +10:00
petruknw
9d1d2dc72e fix: revert image back to upstream (no local build needed) 2026-05-20 23:18:42 +10:00
petruknw
0808883159 fix: use env vars instead of symlinks to redirect data/download paths
The upstream docker-entrypoint.sh chowns /app/backend/data which fails
when it's a symlink to a host-mounted HA path. Instead, use the env vars
that Aurral natively supports to redirect paths:
  - AURRAL_DATA_DIR  -> data_folder config option
  - DOWNLOAD_FOLDER  -> download_folder config option
  - WEEKLY_FLOW_FOLDER -> download_folder/weekly-flow

This lets the entrypoint chown the real (container-internal) /app/backend/data
unmolested, while node writes persistent data directly to the HA share paths.
2026-05-20 23:17:45 +10:00
petruknw
a089e5271b fix: point image to alexbelgium-built registry so Dockerfile/rootfs overlay is actually used
Previously image: pointed directly at the upstream ghcr.io/lklynet/aurral,
meaning the Dockerfile was never built and the rootfs overlay (including the
entrypoint fix) was never applied. Changed to ghcr.io/alexbelgium/aurral-{arch}
which is where the CI build pushes the image built FROM the upstream via build.json.
2026-05-20 23:14:00 +10:00
petruknw
0214053b74 revert: undo entrypoint override (config uses pre-built image, no Docker build) 2026-05-20 23:11:37 +10:00
petruknw
15749a4d2f fix: replace upstream entrypoint with no-op to prevent chown on host-mounted paths
docker-entrypoint.sh runs chown -R on /app/backend/data which fails when
that path is a symlink to a host-mounted HA volume. Replace it with a
passthrough script that just exec's its arguments, letting the s6 run
script handle all setup.
2026-05-20 23:10:28 +10:00
petruknw
d7fc0eb331 fix: indent badge under step 1 to prevent ordered list numbering reset 2026-05-20 23:09:07 +10:00
petruknw
46df56a264 fix: override upstream entrypoint to prevent chown failure on host-mounted paths
The upstream docker-entrypoint.sh runs chown -R on /app/backend/data before
the s6 run script can replace it with a symlink. When the symlink target is a
host-mounted HA path (/share, /data, etc.), the chown fails with
"Operation not permitted".

Overriding ENTRYPOINT with /init hands control directly to s6-overlay, which
then runs the run script that creates the symlinks before node starts.
2026-05-20 23:07:41 +10:00
petruknw
f2d9a6f7f0 fix: remove superfluous port config, fix chown by using env vars instead of symlinks 2026-05-20 21:01:33 +10:00
petruknw
5afc1f2b33 fix: align addon version with upstream GHCR tag 1.76.12 2026-05-20 20:49:18 +10:00
petruknw
a6ae4d4131 Merge pull request #1 from petruknw/feat/aurral-addon
Add Aurral Home Assistant addon
2026-05-20 20:39:15 +10:00
petruknw
b37e3208f5 Update logo image in aurral directory 2026-05-20 20:37:15 +10:00
petruknw
3657083d62 add placeholder logo.png for Aurral addon 2026-05-20 20:28:50 +10:00
petruknw
c293551ed9 fix: remove webui line and Options header from README 2026-05-20 19:16:44 +10:00
petruknw
c53bab9d3d fix: clean up README - remove badges, support section, fix button layout 2026-05-20 19:15:14 +10:00
petruknw
f185834afa fix: simplify config and README to match repo style
- config.yaml: strip back to download_folder, data_folder, port only
- README.md: match alexbelgium style, merge upstream link into About,
  remove badge buttons, remove Navidrome references
2026-05-20 19:12:09 +10:00
petruknw
9e5cb90283 fix: apply review fixes to Aurral addon
- config.yaml: fix url to point to master, add ingress support,
  remove download_folder/data_folder from options (set via UI),
  match lidarr schema style with env_vars passthrough
- updater.json: add with upstream v1.76.12 tracking lklynet/aurral
- run script: use proper ingress port env var, cleaner startup
- README.md: fix install instructions to reference master branch
2026-05-20 19:02:06 +10:00
petruknw
457730c5ec 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_*
2026-05-20 18:56:24 +10:00
Alexandre
207fc703a7 Merge pull request #2721 from alexbelgium/copilot/fix-filebrowser-start-issue
filebrowser: fix continuous loading screen (blue pulsating dots) in NoAuth mode
2026-05-20 10:45:51 +02:00
Alexandre
46cc8d102c Update ingress entry and version in config.yaml 2026-05-20 10:43:12 +02:00
Alexandre
50796bca5b Update CHANGELOG.md 2026-05-20 10:42:37 +02:00
copilot-swe-agent[bot]
50833e5f2f Merge origin/master and fix duplicate CHANGELOG entry
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/abffb289-855c-4fef-9d3a-7896eaf40d42

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-05-20 08:37:33 +00:00
copilot-swe-agent[bot]
dc9967085c Merge remote-tracking branch 'origin/master' into copilot/fix-filebrowser-start-issue
Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-05-20 08:37:01 +00:00
github-actions
cfb76f0018 GitHub bot: changelog [nobuild] 2026-05-20 08:27:03 +00:00
Alexandre
1d0d36dd26 Update config.yaml
https://github.com/alexbelgium/hassio-addons/issues/2720
2026-05-20 10:24:46 +02:00
copilot-swe-agent[bot]
36b4314e6c Fix filebrowser Vue Router catchAll crash via nginx root redirect
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/5476414b-abaf-44f4-96ac-aa4e1c5b96a8

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-05-20 06:55:43 +00:00
copilot-swe-agent[bot]
add38cacef Fix filebrowser continuous loading screen when NoAuth=true
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/e93921db-911c-409f-bbfc-c80edd6d4817

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-05-20 05:30:59 +00:00
copilot-swe-agent[bot]
d4efdc518a Initial plan 2026-05-20 05:11:02 +00:00
15 changed files with 168 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
{
"aurral": "petruknw",
"cleanuparr": "PierreNa",
"gitea": "baldarn",
"kometa": "akrigator",

5
aurral/CHANGELOG.md Normal file
View File

@@ -0,0 +1,5 @@
# Changelog
## 1.76.17
- Initial release

32
aurral/Dockerfile Normal file
View File

@@ -0,0 +1,32 @@
# ==============================================================
# Home Assistant Add-on: Aurral
# Wraps the upstream ghcr.io/lklynet/aurral image.
# ==============================================================
ARG BUILD_FROM
FROM ${BUILD_FROM}
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"
ENV DOWNLOAD_FOLDER=/share/aurral/downloads \
WEEKLY_FLOW_FOLDER=/share/aurral/downloads/weekly-flow
# Replace the upstream data/downloads dirs with symlinks into HA persistent storage.
# Must be done at build time — the dirs are owned by a non-root user at runtime.
RUN rm -rf /app/backend/data && ln -s /config/data /app/backend/data \
&& rm -rf /app/downloads && ln -s /share/aurral/downloads /app/downloads
COPY rootfs /
RUN chmod a+x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["node", "server.js"]

23
aurral/README.md Normal file
View File

@@ -0,0 +1,23 @@
# Aurral
[Aurral](https://github.com/lklynet/aurral) is a self-hosted music discovery, request management, flows, and playlist importing app for Lidarr with library-aware recommendations.
This addon is based on the docker image <https://github.com/lklynet/aurral>
## Configuration
| Option | Default | Description |
|---|---|---|
| `download_folder` | `/share/aurral/downloads` | Path where Aurral writes flow downloads. Must be under `/share`. |
## Installation
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)
2. Install this add-on.
3. Click the `Save` button to store your configuration.
4. Set the `download_folder` option to your preferred path.
5. Start the add-on.
6. Check the logs of the add-on to see if everything went well.
7. Open the webUI and complete onboarding.

22
aurral/apparmor.txt Normal file
View File

@@ -0,0 +1,22 @@
#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,
/config/aurral/** 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:1.76.17",
"amd64": "ghcr.io/lklynet/aurral:1.76.17"
},
"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"
}
}

35
aurral/config.yaml Normal file
View File

@@ -0,0 +1,35 @@
name: Aurral
version: "1.76.17"
slug: aurral
description: >-
Self-hosted music discovery, request management, flows, and playlist
importing for Lidarr with library-aware recommendations.
url: https://github.com/alexbelgium/hassio-addons/blob/master/aurral/README.md
arch:
- aarch64
- amd64
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
env_vars:
- name: WEEKLY_FLOW_FOLDER
description: "Path for Navidrome smart playlist files (weekly flow)"
required: false
options:
download_folder: /share/aurral/downloads
schema:
download_folder: str

BIN
aurral/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
aurral/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,9 @@
#!/bin/sh
set -e
# Create the real directories in HA persistent storage that the symlinks point to
mkdir -p /config/data
mkdir -p "${DOWNLOAD_FOLDER:-/share/aurral/downloads}"
mkdir -p "${WEEKLY_FLOW_FOLDER:-/share/aurral/downloads/weekly-flow}"
exec "$@"

8
aurral/updater.json Normal file
View File

@@ -0,0 +1,8 @@
{
"last_update": "21-05-2026",
"repository": "alexbelgium/hassio-addons",
"slug": "aurral",
"source": "github",
"upstream_repo": "lklynet/aurral",
"upstream_version": "1.76.17"
}

View File

@@ -1,3 +1,11 @@
## 2.63.4-3 (2026-05-20)
- Fix: add nginx redirect from root `/` to `/files/` to prevent Vue Router crash on startup
- Vue Router 4's `/:catchAll(.*)*` redirect throws `TypeError: e.params.catchAll is not iterable` when `catchAll` is `undefined` (navigating to root `/`)
- The redirect ensures the app always loads at `/files/` so the broken catch-all redirect code is never invoked
## 2.63.4-1 (2026-05-20)
- Fix: always pass --noauth flag when NoAuth=true to ensure correct database initialization (prevents continuous loading screen / blue pulsating dots)
- Fix: avoid passing empty string arguments to filebrowser command
## 2.63.4 (2026-05-19)
- Update to latest version from filebrowser/filebrowser (changelog : https://github.com/filebrowser/filebrowser/releases)

View File

@@ -77,6 +77,7 @@ environment:
homeassistant: 2025.5.0
image: ghcr.io/alexbelgium/filebrowser-{arch}
ingress: true
ingress_entry: files
ingress_port: 8071
ingress_stream: true
map:
@@ -123,4 +124,4 @@ schema:
slug: filebrowser
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: "2.63.4"
version: "2.63.4-3"

View File

@@ -77,9 +77,9 @@ if bashio::config.true 'NoAuth'; then
rm /data/auth &> /dev/null || true
rm /config/filebrowser.dB &> /dev/null || true
touch /data/noauth
NOAUTH="--noauth"
bashio::log.warning "Auth method change, database reset"
fi
NOAUTH="--noauth"
bashio::log.info "NoAuth option selected"
else
if ! bashio::fs.file_exists "/data/auth"; then
@@ -113,7 +113,7 @@ fi
bashio::log.info "Starting..."
# shellcheck disable=SC2086
/./bin/filebrowser --disablePreviewResize --disableTypeDetectionByHeader --cacheDir="/cache" $CERTFILE $KEYFILE --root="$BASE_FOLDER" --address=0.0.0.0 --port=8080 --database=/config/filebrowser.dB "$NOAUTH" "$DISABLE_THUMBNAILS" &
/./bin/filebrowser --disablePreviewResize --disableTypeDetectionByHeader --cacheDir="/cache" $CERTFILE $KEYFILE --root="$BASE_FOLDER" --address=0.0.0.0 --port=8080 --database=/config/filebrowser.dB ${NOAUTH:+$NOAUTH} ${DISABLE_THUMBNAILS:+$DISABLE_THUMBNAILS} &
bashio::net.wait_for 8080 localhost 900 || true
bashio::log.info "Started !"
nginx || bashio::log.fatal "Nginx failed"

View File

@@ -6,6 +6,12 @@ server {
client_max_body_size 0;
# Redirect bare root to /files/ so the Vue Router never sees path "/"
# (Vue Router 4's /:catchAll(.*)* redirect crashes when catchAll is undefined)
location = / {
return 302 files/;
}
location / {
add_header Access-Control-Allow-Origin *;
proxy_connect_timeout 30m;