4 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
eb08853b50 Fix Redis in immich_cuda: install redis-server directly instead of Docker mods
Apply the same Redis fix from the immich addon to immich_cuda:
- Remove DOCKER_MODS env var from Dockerfile and config.yaml
- Add redis-server to PACKAGES for direct installation
- s6-rc service files, redis.conf, and 20-folders.sh were already updated

This prevents ECONNRESET errors caused by Docker mods failing to install
Redis at runtime (issue #2615).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-03-28 22:42:07 +00:00
copilot-swe-agent[bot]
60a5adb5c3 fix(immich_openvino): install redis-server directly instead of Docker mods
Replace DOCKER_MODS-based Redis installation with direct redis-server
package install and s6-rc service to prevent ECONNRESET errors at
runtime. Removes DOCKER_MODS from config.yaml environment.

Fixes #2615

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-03-28 22:40:09 +00:00
copilot-swe-agent[bot]
5f58265ef4 immich_noml: Fix Redis startup by installing redis-server directly
Replace Docker mods (DOCKER_MODS=imagegenius/mods:universal-redis) with
direct redis-server installation via PACKAGES to prevent ECONNRESET errors.
The s6-rc service files and redis.conf were already in place from a prior
partial fix; this commit completes the migration by removing the Docker mods
references from Dockerfile and config.yaml.

Fixes #2615

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
2026-03-28 22:37:39 +00:00
copilot-swe-agent[bot]
1031709095 Initial plan 2026-03-28 22:19:01 +00:00
159 changed files with 138 additions and 386 deletions

View File

@@ -150,7 +150,6 @@ CrowMaster1,
Curiouserw,United States
CurtRed,
D3F0NC3UR,
D3XX3R,
D3f0,Kenya
DARKNAGAN,France
DDanii,
@@ -779,7 +778,6 @@ aelg305,
afonsojramos,Portugal
agdamsbo,Denmark
ahhl,
ahjcarroll,
ahrens26,
aiccucs,
aicynide,
@@ -1012,7 +1010,6 @@ charithmadhuranga,Sri Lanka
charl3y15,United States
charlestephen,United States
chbmuc,
checkrayns,
chen-ye,United States
chen7hi,
chenweiwei123,
@@ -1242,7 +1239,6 @@ ericyew,
erikLundstedt,Sweden
ernierasta,Czechia
eroldan,
eruvanos,Germany
erwamartin,France
ettoreboy,
euneuneu,
@@ -1446,7 +1442,6 @@ indig0fox,United States
indrajitr,United States
indykoning,
ingoau,Australia
inventor7777,United States
irgendwer112,
irgendwer92,
isobear23,
@@ -1737,7 +1732,6 @@ matte-a,Italy
matth-av,Australia
matthew-hz,
matthewturk,United States
matthiasbalke,Germany
matthiasfaeth,
matthieudevipa,
matthudson670,
@@ -1890,7 +1884,6 @@ noxhirsch,Germany
nperanzi,United States
nstrelow,Germany
nukleuz80,
nunoaleixogoncalves,Portugal
nwithan8,United States
nxnjz,
nyakojiru,Spain
@@ -2039,7 +2032,6 @@ quirbiefe,
qun-media,
r0rqual,United States
rJUUSO,
ranjitrajkumar,Canada
raphael1688,
rapjul,
rascasseuk,
@@ -2377,7 +2369,6 @@ vetcher,
vikavorkin,Israel
vinnyduke,
vlad36N,United States
vlassen,
vortexua,
vova-musin,
vova9,Belarus
@@ -2413,8 +2404,7 @@ wickedst,United Kingdom
wildnet,Poland
wile-e1,Canada
williamcorsel,Netherlands
willigenburggihaux,
willnewcombe,United Kingdom
willnewcombe,
wimb0,
witold-gren,Poland
wonkygecko,United States
@@ -2476,7 +2466,6 @@ ziQzav,
zipp00,
zjw57,China
zking7,
zonekill61,
zonorti,Germany
zr-idt,
zuranthus,Sweden
1 username country
150 Curiouserw United States
151 CurtRed
152 D3F0NC3UR
D3XX3R
153 D3f0 Kenya
154 DARKNAGAN France
155 DDanii
778 afonsojramos Portugal
779 agdamsbo Denmark
780 ahhl
ahjcarroll
781 ahrens26
782 aiccucs
783 aicynide
1010 charl3y15 United States
1011 charlestephen United States
1012 chbmuc
checkrayns
1013 chen-ye United States
1014 chen7hi
1015 chenweiwei123
1239 erikLundstedt Sweden
1240 ernierasta Czechia
1241 eroldan
eruvanos Germany
1242 erwamartin France
1243 ettoreboy
1244 euneuneu
1442 indrajitr United States
1443 indykoning
1444 ingoau Australia
inventor7777 United States
1445 irgendwer112
1446 irgendwer92
1447 isobear23
1732 matth-av Australia
1733 matthew-hz
1734 matthewturk United States
matthiasbalke Germany
1735 matthiasfaeth
1736 matthieudevipa
1737 matthudson670
1884 nperanzi United States
1885 nstrelow Germany
1886 nukleuz80
nunoaleixogoncalves Portugal
1887 nwithan8 United States
1888 nxnjz
1889 nyakojiru Spain
2032 qun-media
2033 r0rqual United States
2034 rJUUSO
ranjitrajkumar Canada
2035 raphael1688
2036 rapjul
2037 rascasseuk
2369 vikavorkin Israel
2370 vinnyduke
2371 vlad36N United States
vlassen
2372 vortexua
2373 vova-musin
2374 vova9 Belarus
2404 wildnet Poland
2405 wile-e1 Canada
2406 williamcorsel Netherlands
2407 willigenburggihaux willnewcombe
willnewcombe United Kingdom
2408 wimb0
2409 witold-gren Poland
2410 wonkygecko United States
2466 zipp00
2467 zjw57 China
2468 zking7
zonekill61
2469 zonorti Germany
2470 zr-idt
2471 zuranthus Sweden

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 62 KiB

BIN
.github/stats.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -30,10 +30,9 @@ jobs:
TEXT_LOWER="$(printf '%s' "$TEXT" | tr '[:upper:]' '[:lower:]')"
while IFS= read -r addon; do
ADDON_LOWER="$(printf '%s' "$addon" | tr '[:upper:]' '[:lower:]')"
[ -z "$ADDON_LOWER" ] && continue
[ -z "$addon" ] && continue
if [[ " $TEXT_LOWER " == *" $ADDON_LOWER "* ]]; then
if [[ "$TEXT_LOWER" == *"$addon"* ]]; then
user="$(jq -r --arg addon "$addon" '.[$addon]' .github/addon_submitters.json)"
if [ -z "$user" ] || [ "$user" = "null" ]; then
continue
@@ -43,7 +42,7 @@ jobs:
comments_url="https://api.github.com/repos/${REPO}/issues/${ISSUE_NUMBER}/comments"
export GH_TOKEN="${GITHUB_TOKEN}"
existing="$(gh issue view "$ISSUE_NUMBER" --repo "$REPO" --json comments | jq --arg marker "$marker" '[.comments[] | select(.body | contains($marker))] | length')"
existing="$(gh issue view "$ISSUE_NUMBER" --repo "$REPO" --json comments --jq '[.comments[] | select(.body | contains($marker))] | length')"
if [ "$existing" -eq 0 ]; then
body=$(jq -cn --arg marker "$marker" --arg addon "$addon" --arg user "$user" '{body: ($marker + "\nHeads up @" + $user + ": this issue appears to mention `" + $addon + "`.")}')

View File

@@ -69,6 +69,7 @@ If you want to do add the repository manually, please follow the procedure highl
- %%STATS_AMD64%%
- %%STATS_AARCH64%%
- %%STATS_ARMV7%%
### Stars evolution

View File

@@ -17,8 +17,8 @@ if ! bashio::supervisor.ping 2>/dev/null; then
bashio::log.blue "Config source: ENV + /data/options.json"
bashio::log.blue '-----------------------------------------------------------'
cp -rf /usr/local/lib/bashio-standalone.sh /usr/bin/bashio
grep -rl "^#!.*bashio" /etc |
while IFS= read -r f; do
grep -rlZ "^#!.*bashio" /etc |
while IFS= read -r -d '' f; do
grep -qF "source /usr/local/lib/bashio-standalone.sh" "$f" && continue
sed -i '1a source /usr/local/lib/bashio-standalone.sh' "$f"
done

View File

@@ -69,6 +69,7 @@ If you want to do add the repository manually, please follow the procedure highl
- amd64: 65%
- aarch64: 35%
- %%STATS_ARMV7%%
### Stars evolution

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,4 +1,7 @@
## 2.6.2-2 (2026-03-28)
- Fix Redis startup: install redis-server directly instead of via Docker mods to prevent ECONNRESET errors (issue #2615)
## 2.6.2 (2026-03-28)
- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases)

View File

@@ -34,13 +34,8 @@ COPY ha_lsio.sh /ha_lsio.sh
ARG CONFIGLOCATION="/config"
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
# Install REDIS
ENV DOCKER_MODS="imagegenius/mods:universal-redis"
# && chmod 777 -R /docker-mods \
# && /./docker-mods/* || ls / \
# && if [ !-f /defaults/redis.conf ]; then echo "Not installed" && exit 1; fi
#ENV DOCKER_MODS=""
# Install REDIS directly instead of via Docker mods for reliability
# (Docker mods can fail to install Redis at runtime, causing ECONNRESET errors)
##################
# 3 Install apps #
@@ -63,7 +58,7 @@ COPY ha_automodules.sh /ha_automodules.sh
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES="sudo yamllint pip sed jq"
ENV PACKAGES="sudo yamllint pip sed jq redis-server"
# Automatic apps & bashio
COPY ha_autoapps.sh /ha_autoapps.sh

View File

@@ -71,7 +71,6 @@ devices:
- /dev/nvme2
environment:
CI_PORT: "8080"
DOCKER_MODS: imagegenius/mods:universal-redis
MACHINE_LEARNING_CACHE_FOLDER: /data/machine-learning
MACHINE_LEARNING_WORKERS: "1"
MACHINE_LEARNING_WORKER_TIMEOUT: "120"
@@ -143,6 +142,6 @@ slug: immich
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "2.6.2"
version: "2.6.2-2"
video: true
webui: http://[HOST]:[PORT:8080]

View File

@@ -0,0 +1,64 @@
## custom configuration file, please be aware that changing options here may break things
## uncomment what you need to adjust, leave commented to use default settings
## see https://redis.io/topics/config for help
#protected-mode yes
#tcp-backlog 511
#timeout 0
#tcp-keepalive 300
#databases 16
#save 900 1
#save 300 10
#save 60 10000
#stop-writes-on-bgsave-error yes
#rdbcompression yes
#rdbchecksum yes
#dbfilename dump.rdb
#rdb-del-sync-files no
#replica-serve-stale-data yes
#replica-read-only yes
#repl-diskless-sync no
#repl-diskless-sync-delay 5
#repl-diskless-load disabled
#repl-disable-tcp-nodelay no
#replica-priority 100
#acllog-max-len 128
#lazyfree-lazy-eviction no
#lazyfree-lazy-expire no
#lazyfree-lazy-server-del no
#replica-lazy-flush no
#lazyfree-lazy-user-del no
#oom-score-adj no
#oom-score-adj-values 0 200 800
#appendonly no
#appendfilename "appendonly.aof"
#appendfsync everysec
#no-appendfsync-on-rewrite no
#auto-aof-rewrite-percentage 100
#auto-aof-rewrite-min-size 64mb
#aof-load-truncated yes
#aof-use-rdb-preamble yes
#lua-time-limit 5000
#slowlog-log-slower-than 10000
#slowlog-max-len 128
#latency-monitor-threshold 0
#notify-keyspace-events ""
#hash-max-ziplist-entries 512
#hash-max-ziplist-value 64
#list-max-ziplist-size -2
#list-compress-depth 0
#set-max-intset-entries 512
#zset-max-ziplist-entries 128
#zset-max-ziplist-value 64
#hll-sparse-max-bytes 3000
#stream-node-max-bytes 4096
#stream-node-max-entries 100
#activerehashing yes
#client-output-buffer-limit normal 0 0 0
#client-output-buffer-limit replica 256mb 64mb 60
#client-output-buffer-limit pubsub 32mb 8mb 60
#hz 10
#dynamic-hz yes
#aof-rewrite-incremental-fsync yes
#rdb-save-incremental-fsync yes
#jemalloc-bg-thread yes

View File

@@ -97,9 +97,8 @@ fi
# REDIS LOCATION #
##################
echo "sed -i \"s=/config/redis=/data/redis=g\" /etc/s6*/s6*/*/run" >> /docker-mods
echo "sed -i \"s=/config/log/redis=/data/log=g\" /etc/s6*/s6*/*/run" >> /docker-mods
mkdir -p /data/redis
mkdir -p /data/log
mkdir -p /var/run/redis
chmod 755 /data/redis
chmod 755 /data/log

View File

@@ -0,0 +1,27 @@
#!/usr/bin/with-contenv bash
# Create Redis directories
mkdir -p \
/data/redis \
/data/log \
/var/run/redis
# Copy default redis.conf if not present
if [[ ! -f /data/redis/redis.conf ]]; then
cp /defaults/redis.conf /data/redis/redis.conf 2>/dev/null || touch /data/redis/redis.conf
fi
# Set permissions
chown -R root:root \
/data/redis \
/data/log \
/var/run/redis
exec \
redis-server /data/redis/redis.conf \
--bind 127.0.0.1 \
--port 6379 \
--pidfile /var/run/redis/redis.pid \
--always-show-logo no \
--dir /data/redis \
--logfile /data/log/redis.log

View File

@@ -0,0 +1 @@
longrun

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,4 +1,7 @@
## 2.6.2-2 (2026-03-28)
- Fix Redis startup: install redis-server directly instead of via Docker mods to prevent ECONNRESET errors (issue #2615)
## 2.6.2 (2026-03-28)
- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases)

View File

@@ -34,13 +34,8 @@ COPY ha_lsio.sh /ha_lsio.sh
ARG CONFIGLOCATION="/config"
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
# Install REDIS
ENV DOCKER_MODS="imagegenius/mods:universal-redis"
# && chmod 777 -R /docker-mods \
# && /./docker-mods/* || ls / \
# && if [ !-f /defaults/redis.conf ]; then echo "Not installed" && exit 1; fi
#ENV DOCKER_MODS=""
# Install REDIS directly instead of via Docker mods for reliability
# (Docker mods can fail to install Redis at runtime, causing ECONNRESET errors)
##################
# 3 Install apps #
@@ -63,7 +58,7 @@ COPY ha_automodules.sh /ha_automodules.sh
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES="sudo sed yamllint pip jq"
ENV PACKAGES="sudo sed yamllint pip jq redis-server"
# Automatic apps & bashio
COPY ha_autoapps.sh /ha_autoapps.sh

View File

@@ -69,7 +69,6 @@ devices:
- /dev/nvme2
environment:
CI_PORT: "8080"
DOCKER_MODS: imagegenius/mods:universal-redis
MACHINE_LEARNING_CACHE_FOLDER: /data/machine-learning
MACHINE_LEARNING_WORKERS: "1"
MACHINE_LEARNING_WORKER_TIMEOUT: "120"
@@ -141,6 +140,6 @@ slug: immich_cuda
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "2.6.2"
version: "2.6.2-2"
video: true
webui: http://[HOST]:[PORT:8080]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -1,4 +1,7 @@
## 2.6.2-2 (2026-03-28)
- Fix Redis startup: install redis-server directly instead of via Docker mods to prevent ECONNRESET errors (issue #2615)
## 2.6.2 (2026-03-28)
- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases)

View File

@@ -34,13 +34,8 @@ COPY ha_lsio.sh /ha_lsio.sh
ARG CONFIGLOCATION="/config"
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
# Install REDIS
ENV DOCKER_MODS="imagegenius/mods:universal-redis"
# && chmod 777 -R /docker-mods \
# && /./docker-mods/* || ls / \
# && if [ !-f /defaults/redis.conf ]; then echo "Not installed" && exit 1; fi
#ENV DOCKER_MODS=""
# Install REDIS directly instead of via Docker mods for reliability
# (Docker mods can fail to install Redis at runtime, causing ECONNRESET errors)
##################
# 3 Install apps #
@@ -63,7 +58,7 @@ COPY ha_automodules.sh /ha_automodules.sh
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES="sudo sed yamllint pip jq"
ENV PACKAGES="sudo sed yamllint pip jq redis-server"
# Automatic apps & bashio
COPY ha_autoapps.sh /ha_autoapps.sh

View File

@@ -70,7 +70,6 @@ devices:
- /dev/nvme2
environment:
CI_PORT: "8080"
DOCKER_MODS: imagegenius/mods:universal-redis
MACHINE_LEARNING_CACHE_FOLDER: /data/machine-learning
MACHINE_LEARNING_WORKERS: "1"
MACHINE_LEARNING_WORKER_TIMEOUT: "120"
@@ -142,6 +141,6 @@ slug: immich_noml
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "2.6.2"
version: "2.6.2-2"
video: true
webui: http://[HOST]:[PORT:8080]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,4 +1,7 @@
## 2.6.2-2 (2026-03-28)
- Fix Redis startup: install redis-server directly instead of via Docker mods to prevent ECONNRESET errors (issue #2615)
## 2.6.2 (2026-03-28)
- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases)

View File

@@ -32,13 +32,8 @@ COPY ha_lsio.sh /ha_lsio.sh
ARG CONFIGLOCATION="/config"
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
# Install REDIS
ENV DOCKER_MODS="imagegenius/mods:universal-redis"
# && chmod 777 -R /docker-mods \
# && /./docker-mods/* || ls / \
# && if [ !-f /defaults/redis.conf ]; then echo "Not installed" && exit 1; fi
#ENV DOCKER_MODS=""
# Install REDIS directly instead of via Docker mods for reliability
# (Docker mods can fail to install Redis at runtime, causing ECONNRESET errors)
##################
# 3 Install apps #
@@ -61,7 +56,7 @@ COPY ha_automodules.sh /ha_automodules.sh
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES="sudo sed yamllint pip jq"
ENV PACKAGES="sudo sed yamllint pip jq redis-server"
# Automatic apps & bashio
COPY ha_autoapps.sh /ha_autoapps.sh

View File

@@ -70,7 +70,6 @@ devices:
- /dev/nvme2
environment:
CI_PORT: "8080"
DOCKER_MODS: imagegenius/mods:universal-redis
MACHINE_LEARNING_CACHE_FOLDER: /data/machine-learning
MACHINE_LEARNING_WORKERS: "1"
MACHINE_LEARNING_WORKER_TIMEOUT: "120"
@@ -142,6 +141,6 @@ slug: immich_openvino
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "2.6.2"
version: "2.6.2-2"
video: true
webui: http://[HOST]:[PORT:8080]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -1,20 +1,3 @@
## 3.2.0-8 (02-04-2026)
- Minor bugs fixed
## 3.2.0-7 (02-04-2026)
- Minor bugs fixed
## 3.2.0-6 (02-04-2026)
- Minor bugs fixed
## 3.2.0-5 (02-04-2026)
- Add Home Assistant ingress support with nginx reverse proxy
## 3.2.0-4 (02-04-2026)
- Minor bugs fixed
## 3.2.0-3 (2026-03-31)
- Fix addon never starts: symlink contents inside /opt/data instead of replacing the Docker VOLUME directory
## 3.2.0-2 (2026-03-31)
- Fix configuration lost after container restart by symlinking /opt/data to persistent /config directory
## 3.2.0 (2026-03-28)
- Update to latest version from maintainerr/maintainerr (changelog : https://github.com/maintainerr/maintainerr/releases)

View File

@@ -81,13 +81,6 @@ ARG MODULES="00-banner.sh 01-custom_script.sh"
COPY ha_automodules.sh /ha_automodules.sh
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES="nginx"
# Automatic apps & bashio
COPY ha_autoapps.sh /ha_autoapps.sh
RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh
################
# 4 Entrypoint #
################

View File

@@ -65,8 +65,6 @@ devices:
- /dev/nvme0
- /dev/nvme1
- /dev/nvme2
environment:
DATA_DIR: "/config"
image: ghcr.io/alexbelgium/maintainerr-{arch}
ingress: true
ingress_stream: true
@@ -89,5 +87,5 @@ schema:
TZ: str?
slug: maintainerr
url: https://github.com/alexbelgium/hassio-addons/tree/master/maintainerr
version: "3.2.0-8"
version: "3.2.0"
webui: "[PROTO:ssl]://[HOST]:[PORT:6246]"

View File

@@ -1,21 +0,0 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
#################
# NGINX SETTING #
#################
declare ingress_interface
declare ingress_port
bashio::log.info "Configuring NGinx for ingress..."
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
bashio::log.info "NGinx ingress configured on ${ingress_interface}:${ingress_port}"

View File

@@ -1,96 +0,0 @@
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
font/woff woff;
font/woff2 woff2;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}

View File

@@ -1,14 +0,0 @@
proxy_http_version 1.1;
proxy_ignore_client_abort off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_max_temp_file_size 0;
proxy_set_header Accept-Encoding "";
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;

View File

@@ -1 +0,0 @@
resolver 127.0.0.11 ipv6=off;

View File

@@ -1,5 +0,0 @@
server_name $hostname;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;

View File

@@ -1,9 +0,0 @@
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;

View File

@@ -1,3 +0,0 @@
upstream backend {
server 127.0.0.1:6246;
}

View File

@@ -1,56 +0,0 @@
# Run nginx in foreground.
daemon off;
# This is run inside Docker.
user root;
# Pid storage location.
pid /var/run/nginx.pid;
# Set number of worker processes.
worker_processes 1;
# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;
# Write error log to Hass.io add-on log.
error_log /proc/1/fd/1 error;
# Load allowed environment vars
env HASSIO_TOKEN;
# Load dynamic modules.
include /etc/nginx/modules/*.conf;
# Max num of simultaneous connections by a worker process.
events {
worker_connections 512;
}
http {
include /etc/nginx/includes/mime.types;
log_format hassio '[$time_local] $status '
'$http_x_forwarded_for($remote_addr) '
'$request ($http_user_agent)';
access_log /proc/1/fd/1 hassio;
client_max_body_size 4G;
default_type application/octet-stream;
gzip on;
keepalive_timeout 65;
sendfile on;
server_tokens off;
tcp_nodelay on;
tcp_nopush on;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
include /etc/nginx/includes/resolver.conf;
include /etc/nginx/includes/upstream.conf;
include /etc/nginx/servers/*.conf;
}

View File

@@ -1,61 +0,0 @@
server {
listen %%interface%%:%%port%% default_server;
include /etc/nginx/includes/server_params.conf;
include /etc/nginx/includes/proxy_params.conf;
proxy_buffering off;
gzip_static off;
client_max_body_size 0;
# Based on https://docs.maintainerr.info/ReverseProxy/#nginx-subdomain
location / {
set $app '%%ingress_entry%%';
rewrite ^%%ingress_entry%%/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:6246;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_hide_header X-Powered-By;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
proxy_read_timeout 90;
add_header X-Frame-Options "SAMEORIGIN";
add_header 'Referrer-Policy' 'no-referrer';
# Redirect location headers
absolute_redirect off;
proxy_redirect / $app/;
# Sub filters to rewrite URLs in responses
sub_filter_once off;
sub_filter_types *;
# HTML attribute rewrites
sub_filter 'href="/"' 'href="%%ingress_entry%%/"';
sub_filter 'src="/' 'src="%%ingress_entry%%/';
sub_filter 'action="/' 'action="%%ingress_entry%%/';
# API path rewrites
sub_filter '"/api' '"%%ingress_entry%%/api';
sub_filter '`/api' '`%%ingress_entry%%/api';
sub_filter "'/api" "'%%ingress_entry%%/api";
# Vite asset rewrites
sub_filter '"/assets' '"%%ingress_entry%%/assets';
sub_filter '`/assets' '`%%ingress_entry%%/assets';
sub_filter "'/assets" "'%%ingress_entry%%/assets";
# Favicon and static files
sub_filter '"/favicon' '"%%ingress_entry%%/favicon';
sub_filter '"/logo' '"%%ingress_entry%%/logo';
# Root path references in JavaScript
sub_filter '"\/"' '"%%ingress_entry%%\/"';
}
}

View File

@@ -24,31 +24,11 @@ if [ -d /etc/cont-init.d ]; then
fi
# ─── Setup persistent data directory ─────────────────────────────────────────
# The upstream app hardcodes /opt/data for its database and logs
# (typeOrmConfig.ts → /opt/data/maintainerr.sqlite, logs → /opt/data/logs/).
# /opt/data is declared as a Docker VOLUME in the upstream image, which is NOT
# persistent across addon updates/reinstalls in HA.
# Redirect /opt/data → /config (persistent via addon_config:rw) with a symlink.
# /opt/data is a Docker VOLUME in the upstream image and cannot be removed.
# Maintainerr supports the DATA_DIR env var to redirect data storage.
DATA_DIR="/config"
echo "[Maintainerr] Setting up data directory: $DATA_DIR"
mkdir -p "$DATA_DIR" "$DATA_DIR/logs"
# Preserve any seed data from the Docker volume before replacing it.
# /opt/data is a Docker VOLUME mount and cannot be removed, so instead of
# replacing the directory with a symlink, we symlink each item inside it.
if [ -d /opt/data ] && [ ! -L /opt/data ]; then
cp -rn /opt/data/. "$DATA_DIR/" 2>/dev/null || true
# Remove contents inside /opt/data (the directory itself stays)
rm -rf /opt/data/*
fi
# Create symlinks for each item in $DATA_DIR inside /opt/data
for item in "$DATA_DIR"/*; do
[ -e "$item" ] || continue
name="$(basename "$item")"
ln -sfn "$item" "/opt/data/$name"
done
mkdir -p "$DATA_DIR"
# Only chown on first run to avoid slow startup on large directories
if [ ! -f "$DATA_DIR/.initialized" ]; then
chown -R node:node "$DATA_DIR"
@@ -59,4 +39,3 @@ export DATA_DIR
# ─── Start Maintainerr as unprivileged node user ─────────────────────────────
echo "[Maintainerr] Starting application on port ${UI_PORT:-6246}..."
exec gosu node /opt/app/start.sh
exec nginx

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Some files were not shown because too many files have changed in this diff Show More