From 5b675ffc07e9238b02d0eaa73a5af00539c37361 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sun, 16 Feb 2025 15:27:43 +0100 Subject: [PATCH] builds --- immich_cuda/CHANGELOG.md | 337 +++++++++++++++++- immich_cuda/Dockerfile | 156 ++++++++ immich_cuda/README.md | 77 +++- immich_cuda/apparmor.txt | 67 +++- immich_cuda/config.json | 2 +- immich_cuda/icon.png | Bin 15 -> 16711 bytes immich_cuda/logo.png | Bin 15 -> 6866 bytes immich_cuda/rootfs | 1 - .../rootfs/etc/cont-init.d/01-migrate.sh | 22 ++ .../rootfs/etc/cont-init.d/20-folders.sh | 95 +++++ immich_cuda/rootfs/etc/cont-init.d/99-run.sh | 188 ++++++++++ immich_cuda/stats.png | Bin 16 -> 2743 bytes immich_cuda/updater.json | 10 +- immich_openvino/CHANGELOG.md | 337 +++++++++++++++++- immich_openvino/Dockerfile | 156 ++++++++ immich_openvino/README.md | 77 +++- immich_openvino/apparmor.txt | 67 +++- immich_openvino/config.json | 2 +- immich_openvino/icon.png | Bin 15 -> 16711 bytes immich_openvino/logo.png | Bin 15 -> 6866 bytes immich_openvino/rootfs | 1 - .../rootfs/etc/cont-init.d/01-migrate.sh | 22 ++ .../rootfs/etc/cont-init.d/20-folders.sh | 95 +++++ .../rootfs/etc/cont-init.d/99-run.sh | 188 ++++++++++ immich_openvino/stats.png | Bin 16 -> 2743 bytes immich_openvino/updater.json | 10 +- 26 files changed, 1898 insertions(+), 12 deletions(-) create mode 100644 immich_cuda/Dockerfile delete mode 120000 immich_cuda/rootfs create mode 100644 immich_cuda/rootfs/etc/cont-init.d/01-migrate.sh create mode 100644 immich_cuda/rootfs/etc/cont-init.d/20-folders.sh create mode 100644 immich_cuda/rootfs/etc/cont-init.d/99-run.sh create mode 100644 immich_openvino/Dockerfile delete mode 120000 immich_openvino/rootfs create mode 100644 immich_openvino/rootfs/etc/cont-init.d/01-migrate.sh create mode 100644 immich_openvino/rootfs/etc/cont-init.d/20-folders.sh create mode 100644 immich_openvino/rootfs/etc/cont-init.d/99-run.sh diff --git a/immich_cuda/CHANGELOG.md b/immich_cuda/CHANGELOG.md index a8ad6bf3e..87bc78676 120000 --- a/immich_cuda/CHANGELOG.md +++ b/immich_cuda/CHANGELOG.md @@ -1 +1,336 @@ -immich/CHANGELOG.md \ No newline at end of file +## 1.126.1-7 (16-02-2025) +- RISK OF BREAKING CHANGE : backup both immich & postgres before starting +- RISK OF BREAKING CHANGE : rewrite and improve database creation tool using addon options (overwritting manual database creation) +- SECURITY FIX : avoid hardcoding the postgres root password and change it if was already applied +- NEW FUNCTION : allow to define a library path outside of the data location. For example, if you specify /mnt/NAS/MyPictures as "library_location", and /mnt/NAS/Immich as "data_location", it will then create the whole structure in /mnt/NAS/Immich including the /mnt/NAS/Immich/library. However, this will just be a symlink to /mnt/NAS/MyPictures ; allowing people to still manage their hard drives in a more linear manner +- Ensure host is reachable before starting +- Autocorrect homeassistant.local to local ip +- Align configuration with /addon_configs +- Add gpu access + +## 1.126.1 (15-02-2025) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.125.7 (01-02-2025) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.125.2 (25-01-2025) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) +## 1.124.2-2 (11-01-2025) +- Minor bugs fixed + +## 1.124.2 (11-01-2025) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.123.0 (21-12-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.122.3 (14-12-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) +## 1.122.1-4 (10-12-2024) +- Fix compatibility with postgres 15 addon + +## 1.122.1-3 (08-12-2024) +- Fix healthcheck (thanks @red-avtovo) + +## 1.122.1-2 (08-12-2024) +- Minor bugs fixed + +## 1.122.1 (07-12-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.121.0 (23-11-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.120.2 (16-11-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.120.1 (09-11-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.119.1 (02-11-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.118.2 (19-10-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.117.0 (05-10-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.116.2 (28-09-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.115.0 (14-09-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.114.0 (07-09-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.113.0 (31-08-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.112.1 (17-08-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.111.0 (03-08-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.110.0 (27-07-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.109.2 (20-07-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.108.0 (13-07-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.107.2 (06-07-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) +## 1.106.4-3 (24-06-2024) +- Minor bugs fixed +## 1.106.4-2 (15-06-2024) +- Minor bugs fixed + +## 1.106.4 (15-06-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.105.1 (18-05-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.103.1 (04-05-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.102.3 (27-04-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.101.0 (06-04-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.100.0 (30-03-2024) +- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases) + +## 1.99.0 (23-03-2024) +- Update to latest version from imagegenius/docker-immich + +## 1.98.2 (16-03-2024) +- Update to latest version from imagegenius/docker-immich + +## 1.98.1 (09-03-2024) + +- Minor bugs fixed + +## 1.98.0 (09-03-2024) + +- Update to latest version from imagegenius/docker-immich + +## 1.97.0 (02-03-2024) + +- Update to latest version from imagegenius/docker-immich + +## 1.95.1 (24-02-2024) + +- Update to latest version from imagegenius/docker-immich + +## 1.94.1 (03-02-2024) + +- Update to latest version from imagegenius/docker-immich +- ⚠ PLEASE BACKUP before updating! Non reversible changes +- ⚠ BREAKING change : dependency on the update postgres image for vector.rs support, it will not work if you do not update postgres ! +- ⚠ Database location changed from /data to /addon_configs/xxx-postgres : no expected user impact other that all configuration files will also be located in this folder accessible with addons such as Filebrowser + +## 1.90.2 (09-12-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.89.0 (02-12-2023) + +- Update to latest version from imagegenius/docker-immich +## 1.88.2-3 (27-11-2023) + +- Minor bugs fixed +- Fix : add REVERSE_GEOCODING_DUMP_DIRECTORY in config environment + +## 1.88.2 (25-11-2023) + +- Update to latest version from imagegenius/docker-immich +## 1.88.1-7 (24-11-2023) + +- Minor bugs fixed +## 1.88.1-6 (23-11-2023) + +- Minor bugs fixed +## 1.88.1-5 (23-11-2023) + +- Minor bugs fixed +- Fixed REDIS error + +## 1.88.1 (21-11-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.87.0 (19-11-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.86.0 (18-11-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.85.0 (11-11-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.84.0 (04-11-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.82.1 (20-10-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.81.1 (07-10-2023) + +- Update to latest version from imagegenius/docker-immich +## 1.79.1-2 (24-09-2023) + +- Minor bugs fixed +- Feat : new optional settings for ML workers and timeout https://github.com/alexbelgium/hassio-addons/issues/996 + +## 1.79.1 (23-09-2023) + +- Update to latest version from imagegenius/docker-immich +## 1.78.1-6 (22-09-2023) + +- Minor bugs fixed +## 1.78.1-5 (21-09-2023) + +- Minor bugs fixed +- YOU WILL LOSE DATA : the upstream container has removed the embedded postgres (read more https://github.com/imagegenius/docker-immich/issues/90). You now need to install and configure the postgress add-on from this same repo, and reference it in the addon options. This means you will lose your current database, and will need to recreate it from scratch. Your previous database will still be exported to the file /config/addons_config/immich/old_database.gzip. However exporting it to the postgres container is quite complex and not supported. +- BREAKING CHANGE : referencing the postgres options is now required. You can either install the postgres add-on from my repo, or this one for example : https://github.com/Expaso/hassos-addons/tree/master/timescaledb +- Switch from jammy branch to latest due to deprecation + +## 1.78.1 (16-09-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.77.0 (09-09-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.75.2 (27-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.75.0 (26-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.74.0 (26-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.73.0 (19-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.72.2 (12-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.71.0 (05-08-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.70.0 (29-07-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.68.0 (22-07-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.67.2 (15-07-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.66.1 (08-07-2023) + +- Update to latest version from imagegenius/docker-immich +- Beware that using the built-in Postgres 14 will likely fail at some point. It is recommended to upgrade to an external Postgres 15 database. A solution is the specific addon I've built. See https://github.com/imagegenius/docker-immich/issues/90 + +## 1.57.1-jammy (27-05-2023) + +- Minor bugs fixed +- Switch to jammy branch (new features could break but is required until a separate Postgres addon is made) + +## 1.57.1 (27-05-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.56.1 (19-05-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.55.1 (13-05-2023) + +- Update to latest version from imagegenius/docker-immich +- Feat : cifsdomain added + +## 1.54.1 (23-04-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.54.0 (21-04-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.53.0-2 (18-04-2023) + +- Minor bugs fixed +- Fix : add option `TYPESENSE_ENABLED` https://github.com/alexbelgium/hassio-addons/issues/802 + +## 1.53.0 (08-04-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.52.1 (31-03-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.51.2 (24-03-2023) + +- Update to latest version from imagegenius/docker-immich +- Implemented healthcheck + +## 1.50.1 (04-03-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.49.0 (25-02-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.47.3 (19-02-2023) + +- Update to latest version from imagegenius/docker-immich + +## 1.45.0 (04-02-2023) + +- Update to latest version from immich-app/immich + +## 1.43.1 (28-01-2023) + +- Update to latest version from immich-app/immich + +## 1.43.0 (28-01-2023) + +- Update to latest version from immich-app/immich + +## 1.42.0 (21-01-2023) + +- Update to latest version from immich-app/immich + +## 1.41.1 (14-01-2023) + +- Update to latest version from immich-app/immich +- Initial version diff --git a/immich_cuda/Dockerfile b/immich_cuda/Dockerfile new file mode 100644 index 000000000..d30c27ac4 --- /dev/null +++ b/immich_cuda/Dockerfile @@ -0,0 +1,156 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# d '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_VERSION +ARG BUILD_FROM +FROM $BUILD_FROM + +################## +# 2 Modify Image # +################## + +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=1 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 + +USER root + +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/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="" + +################## +# 3 Install apps # +################## + +# Add rootfs +COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-global_var.sh 00-local_mounts.sh 00-smb_mounts.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/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" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh + +RUN sed -i "s|postgresql-16|postgresql-15|g" /etc/s6-overlay/s6-rc.d/init-test-run/run + +# Install dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + lsb-release \ + wget \ + gnupg && \ + echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ + wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \ + apt-get update && \ + apt-get install -y --no-install-recommends postgresql-client-15 + +#ENTRYPOINT [ "/usr/bin/env" ] +#CMD [ "/ha_entrypoint.sh" ] + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +ENV BUILD_VERSION="${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} + +################# +# 6 Healthcheck # +################# + +# Avoid spamming logs +# hadolint ignore=SC2016 +RUN \ + # Handle Apache configuration + if [ -d /etc/apache2/sites-available ]; then \ + for file in /etc/apache2/sites-*/*.conf; do \ + sed -i '/ /etc/nginx/nginx.conf.new && \ + mv /etc/nginx/nginx.conf.new /etc/nginx/nginx.conf; \ + fi + +ENV HEALTH_PORT="8080" \ + HEALTH_URL="/api/server/ping" +HEALTHCHECK \ + --interval=5s \ + --retries=5 \ + --start-period=30s \ + --timeout=25s \ + CMD curl -A "HealthCheck: Docker/1.0" -s -f "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1 diff --git a/immich_cuda/README.md b/immich_cuda/README.md index 7badf13f4..dcbe9e65d 120000 --- a/immich_cuda/README.md +++ b/immich_cuda/README.md @@ -1 +1,76 @@ -immich/README.md \ No newline at end of file +## ⚠ Open Issue : [🐛 [Immich] Freshly installed addon not starting. (opened 2024-12-19)](https://github.com/alexbelgium/hassio-addons/issues/1676) by [@CForChrisProooo](https://github.com/CForChrisProooo) +## ⚠ Open Request : [✨ [REQUEST] Immich Frame (opened 2025-02-13)](https://github.com/alexbelgium/hassio-addons/issues/1764) by [@NickBootOne](https://github.com/NickBootOne) +# Home assistant add-on: immich + +⚠️ The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos! (from the developer) + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) +[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/weekly-supelinter.yaml?label=Lint%20code%20base)](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml) +[![Builder](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/onpush_builder.yaml?label=Builder)](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20(no%20paypal)-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white +[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20with%20Paypal-0070BA?logo=paypal&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.github/stars2.svg)](https://github.com/alexbelgium/hassio-addons/stargazers) + +![downloads evolution](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/immich/stats.png) + +## About + +Web based files browser. +This addon is based on the [docker image](https://github.com/imagegenius/docker-immich) from imagegenius. + +## Configuration + +Postgresql can be either internal or external + +```yaml + "PGID": "int", + "PUID": "int", + "TZ": "str?", + "cifsdomain": "str?", + "cifspassword": "str?", + "cifsusername": "str?", + "data_location": "str", + "localdisks": "str?", + "networkdisks": "str?", + "DB_HOSTNAME": "str?", + "DB_USERNAME": "str?", + "DB_PORT": "int?", + "DB_PASSWORD": "str?", + "DB_DATABASE_NAME": "str?", + "JWT_SECRET": "str?" +``` + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Carefully configure the add-on to your preferences, see the official documentation for for that. + +Beware that you need to install a separate postgres addon to be able to connect the database. You can install the postgres addon already in my repository. +Beware to change the password BEFORE starting it ; it won't change afterwards + +## Support + +Create an issue on github, or ask on the [home assistant thread](https://community.home-assistant.io/t/home-assistant-addon-immich/282108/3) + +[repository]: https://github.com/alexbelgium/hassio-addons +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/immich_cuda/apparmor.txt b/immich_cuda/apparmor.txt index c6494bdb1..98e97c11d 120000 --- a/immich_cuda/apparmor.txt +++ b/immich_cuda/apparmor.txt @@ -1 +1,66 @@ -immich/apparmor.txt \ No newline at end of file +#include + +profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + network unix dgram, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /init ix, + /run/{s6,s6-rc*,service}/** ix, + /package/** ix, + /command/** ix, + /run/{,**} rwk, + /dev/tty rw, + /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/fuse mrwkl, + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/nvme0 mrwkl, + /dev/nvme1 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/immich_cuda/config.json b/immich_cuda/config.json index e7828a998..8013fd7e2 100644 --- a/immich_cuda/config.json +++ b/immich_cuda/config.json @@ -144,7 +144,7 @@ "udev": true, "url": "https://github.com/alexbelgium/hassio-addons", "usb": true, - "version": "1.126.1-7", + "version": "1.126.1-8", "video": true, "webui": "http://[HOST]:[PORT:8080]" } diff --git a/immich_cuda/icon.png b/immich_cuda/icon.png index 01c7d526f3000891a26867aca66e89ba44c744b1..1e4d13669bcba135fca9ff1c4838412b648a57db 120000 GIT binary patch literal 16711 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 HGY|X^Xtc}t literal 15 Wcmd1I&CN{C(9g+F&(|x+O9uch;swh9 diff --git a/immich_cuda/rootfs b/immich_cuda/rootfs deleted file mode 120000 index c8af0bf7e..000000000 --- a/immich_cuda/rootfs +++ /dev/null @@ -1 +0,0 @@ -immich/rootfs \ No newline at end of file diff --git a/immich_cuda/rootfs/etc/cont-init.d/01-migrate.sh b/immich_cuda/rootfs/etc/cont-init.d/01-migrate.sh new file mode 100644 index 000000000..c6d381053 --- /dev/null +++ b/immich_cuda/rootfs/etc/cont-init.d/01-migrate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash + +MIGRATED="" +PREVIOUS_FOLDER="immich" + +# Move main folder +if [ -f /homeassistant/addons_config/"$PREVIOUS_FOLDER"/config.yaml ]; then + bashio::log.warning "----------------------------------------" + bashio::log.warning "Migrating configuration to the new addon" + bashio::log.warning "----------------------------------------" + cp -rnp /homeassistant/addons_config/"$PREVIOUS_FOLDER"/ /config/ + mv /homeassistant/addons_config/"$PREVIOUS_FOLDER" "$PREVIOUS_FOLDER"_migrated + if [ -d /config/addons_config ]; then rm -r /config/addons_config; fi + echo "Files moved to /addon_configs/$HOSTNAME" +fi + +# Move autoscript +if [ -f /homeassistant/addons_autoscrips/immich.sh ]; then + cp -rnf /homeassistant/addons_autoscrips/"$PREVIOUS_FOLDER".sh /config/ &>/dev/null || true + bashio::log.yellow "... moved "$PREVIOUS_FOLDER".sh from /config/addons_autoscripts to /addon_configs/$HOSTNAME" +fi diff --git a/immich_cuda/rootfs/etc/cont-init.d/20-folders.sh b/immich_cuda/rootfs/etc/cont-init.d/20-folders.sh new file mode 100644 index 000000000..43c887952 --- /dev/null +++ b/immich_cuda/rootfs/etc/cont-init.d/20-folders.sh @@ -0,0 +1,95 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +###################### +# GENERAL PARAMETERS # +###################### + +if bashio::config.has_value "PUID"; then + PUID="$(bashio::config 'PUID')" +else + PUID=0 +fi +if bashio::config.has_value "PGID"; then + PGID="$(bashio::config 'PGID')" +else + PGID=0 +fi + +########################## +# MIGRATIONS AND UPDATES # +########################## + +# Clean typesense +if [ -d /data/typesense ]; then + rm -r /data/typesense +fi + +################# +# DATA_LOCATION # +################# + +bashio::log.info "Setting data location" +DATA_LOCATION="$(bashio::config 'data_location')" +export IMMICH_MEDIA_LOCATION="$DATA_LOCATION" +if [ -d /var/run/s6/container_environment ]; then + printf "%s" "$DATA_LOCATION" > /var/run/s6/container_environment/IMMICH_MEDIA_LOCATION +fi +printf "%s\n" "IMMICH_MEDIA_LOCATION=\"$DATA_LOCATION\"" >> ~/.bashrc + +echo "... check $DATA_LOCATION folder exists" +mkdir -p "$DATA_LOCATION" + +echo "... setting permissions" +chown -R "$PUID":"$PGID" "$DATA_LOCATION" + +echo "... correcting official script" +# shellcheck disable=SC2013 +for file in $(grep -sril '/photos' /etc); do sed -i "s|/photos|$DATA_LOCATION|g" "$file"; done +if [ -f /photos ]; then rm -r /photos; fi +ln -sf "$DATA_LOCATION" /photos +chown "$PUID":"$PGID" /photos + +mkdir -p "$MACHINE_LEARNING_CACHE_FOLDER" +mkdir -p "$REVERSE_GEOCODING_DUMP_DIRECTORY" +chown -R "$PUID":"$PGID" "$MACHINE_LEARNING_CACHE_FOLDER" +chown -R "$PUID":"$PGID" "$REVERSE_GEOCODING_DUMP_DIRECTORY" +chown -R "$PUID":"$PGID" /data +chmod 777 /data + +#################### +# LIBRARY LOCATION # +#################### + +if bashio::config.has_value "library_location"; then + LIBRARY_LOCATION="$(bashio::config 'library_location')" + bashio::log.info "Setting library location to $LIBRARY_LOCATION. This will not move any of your files, you'll need to do this manually" + mkdir -p "$LIBRARY_LOCATION" + chown -R "$PUID":"$PGID" "$LIBRARY_LOCATION" + + # Check if the existing library is a directory and not a symlink and has contents + if [ -d "$DATA_LOCATION/library" ] && [ ! -L "$DATA_LOCATION/library" ] && [ "$(ls -A "$DATA_LOCATION/library")" ]; then + bashio::log.yellow "-------------------------------" + bashio::log.warning "Library folder in $DATA_LOCATION/library already exists, is a real folder, and is not empty. Moving to $DATA_LOCATION/library_old" + bashio::log.yellow "-------------------------------" + mv "$DATA_LOCATION/library" "$DATA_LOCATION/library_old" + sleep 5 + fi + + # Create symbolic link only if it doesn't already exist or is incorrect + if [ ! -L "$DATA_LOCATION/library" ] || [ "$(readlink -f "$DATA_LOCATION/library")" != "$LIBRARY_LOCATION" ]; then + ln -sf "$LIBRARY_LOCATION" "$DATA_LOCATION/library" + fi +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 +chmod 777 /data/redis +chmod 777 /data/log diff --git a/immich_cuda/rootfs/etc/cont-init.d/99-run.sh b/immich_cuda/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..93229925d --- /dev/null +++ b/immich_cuda/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,188 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash +# shellcheck disable=SC2155,SC2016 +set -e + +# Function to export options from JSON to env variables +export_options() { + local json_source="/data/options.json" + bashio::log.info "Exporting addon options from ${json_source}" + + # Get all keys and export their raw values + mapfile -t keys < <(jq -r 'keys[]' "${json_source}") + for key in "${keys[@]}"; do + local value + value=$(jq -r ".${key}" "${json_source}") + if bashio::config.false "verbose" || [[ "$key" == *"PASS"* ]]; then + bashio::log.blue "${key}=******" + else + bashio::log.blue "${key}='${value}'" + fi + export "${key}=${value}" + done +} + +# Function to check and adjust DB_HOSTNAME if necessary +check_db_hostname() { + if [[ "$DB_HOSTNAME" == "homeassistant.local" ]]; then + local host_ip + host_ip=$(bashio::network.ipv4_address) + host_ip=${host_ip%/*} + export DB_HOSTNAME="$host_ip" + bashio::log.warning "DB_HOSTNAME was set to homeassistant.local. Using detected IP: $DB_HOSTNAME" + fi + + if ! ping -c 1 -W 3 "$DB_HOSTNAME" >/dev/null 2>&1; then + bashio::log.warning "------------------------------------" + bashio::log.warning "DB_HOSTNAME ($DB_HOSTNAME) is not reachable." + bashio::log.warning "Please set it to the IP address of your database." + bashio::log.warning "The addon will stop until this is fixed." + bashio::log.warning "------------------------------------" + sleep 30 + bashio::addon.stop + else + echo "$DB_HOSTNAME is reachable." + fi +} + +# Function to migrate internal database to external storage if needed +migrate_database() { + if [ -f /share/postgresql_immich.tar.gz ]; then + bashio::log.warning "Previous database export found at /share/postgresql_immich.tar.gz" + elif [ -d /data/postgresql ]; then + bashio::log.warning "Internal Postgres database detected. Migrating to /share/postgresql_immich.tar.gz" + tar -zcvf /share/postgresql_immich.tar.gz /data/postgresql + rm -rf /data/postgresql + fi +} + +# Function to validate required configuration values +validate_config() { + local missing=false + for var in DB_USERNAME DB_HOSTNAME DB_PASSWORD DB_DATABASE_NAME DB_PORT JWT_SECRET; do + if ! bashio::config.has_value "${var}"; then + bashio::log.error "Missing required configuration: ${var}" + missing=true + fi + done + if [ "$missing" = true ]; then + bashio::exit.nok "Please ensure all required options are set." + fi +} + +# Function to export DB variables to s6 environment if applicable +export_db_env() { + if [ -d /var/run/s6/container_environment ]; then + for var in DB_USERNAME DB_PASSWORD DB_DATABASE_NAME DB_PORT DB_HOSTNAME JWT_SECRET; do + printf "%s" "${!var}" > "/var/run/s6/container_environment/${var}" + done + fi +} + +# Function to set up the root user with a secure password +setup_root_user() { + # Generate DB_ROOT_PASSWORD if not set (12-character alphanumeric). + if bashio::config.has_value "DB_ROOT_PASSWORD"; then + export DB_ROOT_PASSWORD="$(bashio::config 'DB_ROOT_PASSWORD')" + else + bashio::log.warning "DB_ROOT_PASSWORD not set. Generating a random 12-character alphanumeric password and storing it in the addon options." + export DB_ROOT_PASSWORD="$(tr -dc 'A-Za-z0-9' "/var/run/s6/container_environment/DB_ROOT_PASSWORD" + fi + fi + + # Try to connect as root using the default insecure password. + if psql "postgres://root:securepassword@${DB_HOSTNAME}:${DB_PORT}/postgres" -c '\q' 2>/dev/null; then + bashio::log.info "Detected root user with default password. Updating to new DB_ROOT_PASSWORD..." + psql "postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}" <x3{x) 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 VQ(F{fN.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# d '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_VERSION +ARG BUILD_FROM +FROM $BUILD_FROM + +################## +# 2 Modify Image # +################## + +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=1 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 + +USER root + +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/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="" + +################## +# 3 Install apps # +################## + +# Add rootfs +COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-global_var.sh 00-local_mounts.sh 00-smb_mounts.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/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" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh + +RUN sed -i "s|postgresql-16|postgresql-15|g" /etc/s6-overlay/s6-rc.d/init-test-run/run + +# Install dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + lsb-release \ + wget \ + gnupg && \ + echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ + wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \ + apt-get update && \ + apt-get install -y --no-install-recommends postgresql-client-15 + +#ENTRYPOINT [ "/usr/bin/env" ] +#CMD [ "/ha_entrypoint.sh" ] + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +ENV BUILD_VERSION="${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} + +################# +# 6 Healthcheck # +################# + +# Avoid spamming logs +# hadolint ignore=SC2016 +RUN \ + # Handle Apache configuration + if [ -d /etc/apache2/sites-available ]; then \ + for file in /etc/apache2/sites-*/*.conf; do \ + sed -i '/ /etc/nginx/nginx.conf.new && \ + mv /etc/nginx/nginx.conf.new /etc/nginx/nginx.conf; \ + fi + +ENV HEALTH_PORT="8080" \ + HEALTH_URL="/api/server/ping" +HEALTHCHECK \ + --interval=5s \ + --retries=5 \ + --start-period=30s \ + --timeout=25s \ + CMD curl -A "HealthCheck: Docker/1.0" -s -f "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1 diff --git a/immich_openvino/README.md b/immich_openvino/README.md index 7badf13f4..dcbe9e65d 120000 --- a/immich_openvino/README.md +++ b/immich_openvino/README.md @@ -1 +1,76 @@ -immich/README.md \ No newline at end of file +## ⚠ Open Issue : [🐛 [Immich] Freshly installed addon not starting. (opened 2024-12-19)](https://github.com/alexbelgium/hassio-addons/issues/1676) by [@CForChrisProooo](https://github.com/CForChrisProooo) +## ⚠ Open Request : [✨ [REQUEST] Immich Frame (opened 2025-02-13)](https://github.com/alexbelgium/hassio-addons/issues/1764) by [@NickBootOne](https://github.com/NickBootOne) +# Home assistant add-on: immich + +⚠️ The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos! (from the developer) + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) +[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fimmich%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/weekly-supelinter.yaml?label=Lint%20code%20base)](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml) +[![Builder](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/onpush_builder.yaml?label=Builder)](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20(no%20paypal)-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white +[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20with%20Paypal-0070BA?logo=paypal&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.github/stars2.svg)](https://github.com/alexbelgium/hassio-addons/stargazers) + +![downloads evolution](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/immich/stats.png) + +## About + +Web based files browser. +This addon is based on the [docker image](https://github.com/imagegenius/docker-immich) from imagegenius. + +## Configuration + +Postgresql can be either internal or external + +```yaml + "PGID": "int", + "PUID": "int", + "TZ": "str?", + "cifsdomain": "str?", + "cifspassword": "str?", + "cifsusername": "str?", + "data_location": "str", + "localdisks": "str?", + "networkdisks": "str?", + "DB_HOSTNAME": "str?", + "DB_USERNAME": "str?", + "DB_PORT": "int?", + "DB_PASSWORD": "str?", + "DB_DATABASE_NAME": "str?", + "JWT_SECRET": "str?" +``` + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Carefully configure the add-on to your preferences, see the official documentation for for that. + +Beware that you need to install a separate postgres addon to be able to connect the database. You can install the postgres addon already in my repository. +Beware to change the password BEFORE starting it ; it won't change afterwards + +## Support + +Create an issue on github, or ask on the [home assistant thread](https://community.home-assistant.io/t/home-assistant-addon-immich/282108/3) + +[repository]: https://github.com/alexbelgium/hassio-addons +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/immich_openvino/apparmor.txt b/immich_openvino/apparmor.txt index c6494bdb1..98e97c11d 120000 --- a/immich_openvino/apparmor.txt +++ b/immich_openvino/apparmor.txt @@ -1 +1,66 @@ -immich/apparmor.txt \ No newline at end of file +#include + +profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + network unix dgram, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /init ix, + /run/{s6,s6-rc*,service}/** ix, + /package/** ix, + /command/** ix, + /run/{,**} rwk, + /dev/tty rw, + /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/fuse mrwkl, + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/nvme0 mrwkl, + /dev/nvme1 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/immich_openvino/config.json b/immich_openvino/config.json index 0926e803c..0b56edc5e 100644 --- a/immich_openvino/config.json +++ b/immich_openvino/config.json @@ -144,7 +144,7 @@ "udev": true, "url": "https://github.com/alexbelgium/hassio-addons", "usb": true, - "version": "1.126.1-7", + "version": "1.126.1-8", "video": true, "webui": "http://[HOST]:[PORT:8080]" } diff --git a/immich_openvino/icon.png b/immich_openvino/icon.png index 01c7d526f3000891a26867aca66e89ba44c744b1..1e4d13669bcba135fca9ff1c4838412b648a57db 120000 GIT binary patch literal 16711 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 HGY|X^Xtc}t literal 15 Wcmd1I&CN{C(9g+F&(|x+O9uch;swh9 diff --git a/immich_openvino/rootfs b/immich_openvino/rootfs deleted file mode 120000 index c8af0bf7e..000000000 --- a/immich_openvino/rootfs +++ /dev/null @@ -1 +0,0 @@ -immich/rootfs \ No newline at end of file diff --git a/immich_openvino/rootfs/etc/cont-init.d/01-migrate.sh b/immich_openvino/rootfs/etc/cont-init.d/01-migrate.sh new file mode 100644 index 000000000..c6d381053 --- /dev/null +++ b/immich_openvino/rootfs/etc/cont-init.d/01-migrate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash + +MIGRATED="" +PREVIOUS_FOLDER="immich" + +# Move main folder +if [ -f /homeassistant/addons_config/"$PREVIOUS_FOLDER"/config.yaml ]; then + bashio::log.warning "----------------------------------------" + bashio::log.warning "Migrating configuration to the new addon" + bashio::log.warning "----------------------------------------" + cp -rnp /homeassistant/addons_config/"$PREVIOUS_FOLDER"/ /config/ + mv /homeassistant/addons_config/"$PREVIOUS_FOLDER" "$PREVIOUS_FOLDER"_migrated + if [ -d /config/addons_config ]; then rm -r /config/addons_config; fi + echo "Files moved to /addon_configs/$HOSTNAME" +fi + +# Move autoscript +if [ -f /homeassistant/addons_autoscrips/immich.sh ]; then + cp -rnf /homeassistant/addons_autoscrips/"$PREVIOUS_FOLDER".sh /config/ &>/dev/null || true + bashio::log.yellow "... moved "$PREVIOUS_FOLDER".sh from /config/addons_autoscripts to /addon_configs/$HOSTNAME" +fi diff --git a/immich_openvino/rootfs/etc/cont-init.d/20-folders.sh b/immich_openvino/rootfs/etc/cont-init.d/20-folders.sh new file mode 100644 index 000000000..43c887952 --- /dev/null +++ b/immich_openvino/rootfs/etc/cont-init.d/20-folders.sh @@ -0,0 +1,95 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +###################### +# GENERAL PARAMETERS # +###################### + +if bashio::config.has_value "PUID"; then + PUID="$(bashio::config 'PUID')" +else + PUID=0 +fi +if bashio::config.has_value "PGID"; then + PGID="$(bashio::config 'PGID')" +else + PGID=0 +fi + +########################## +# MIGRATIONS AND UPDATES # +########################## + +# Clean typesense +if [ -d /data/typesense ]; then + rm -r /data/typesense +fi + +################# +# DATA_LOCATION # +################# + +bashio::log.info "Setting data location" +DATA_LOCATION="$(bashio::config 'data_location')" +export IMMICH_MEDIA_LOCATION="$DATA_LOCATION" +if [ -d /var/run/s6/container_environment ]; then + printf "%s" "$DATA_LOCATION" > /var/run/s6/container_environment/IMMICH_MEDIA_LOCATION +fi +printf "%s\n" "IMMICH_MEDIA_LOCATION=\"$DATA_LOCATION\"" >> ~/.bashrc + +echo "... check $DATA_LOCATION folder exists" +mkdir -p "$DATA_LOCATION" + +echo "... setting permissions" +chown -R "$PUID":"$PGID" "$DATA_LOCATION" + +echo "... correcting official script" +# shellcheck disable=SC2013 +for file in $(grep -sril '/photos' /etc); do sed -i "s|/photos|$DATA_LOCATION|g" "$file"; done +if [ -f /photos ]; then rm -r /photos; fi +ln -sf "$DATA_LOCATION" /photos +chown "$PUID":"$PGID" /photos + +mkdir -p "$MACHINE_LEARNING_CACHE_FOLDER" +mkdir -p "$REVERSE_GEOCODING_DUMP_DIRECTORY" +chown -R "$PUID":"$PGID" "$MACHINE_LEARNING_CACHE_FOLDER" +chown -R "$PUID":"$PGID" "$REVERSE_GEOCODING_DUMP_DIRECTORY" +chown -R "$PUID":"$PGID" /data +chmod 777 /data + +#################### +# LIBRARY LOCATION # +#################### + +if bashio::config.has_value "library_location"; then + LIBRARY_LOCATION="$(bashio::config 'library_location')" + bashio::log.info "Setting library location to $LIBRARY_LOCATION. This will not move any of your files, you'll need to do this manually" + mkdir -p "$LIBRARY_LOCATION" + chown -R "$PUID":"$PGID" "$LIBRARY_LOCATION" + + # Check if the existing library is a directory and not a symlink and has contents + if [ -d "$DATA_LOCATION/library" ] && [ ! -L "$DATA_LOCATION/library" ] && [ "$(ls -A "$DATA_LOCATION/library")" ]; then + bashio::log.yellow "-------------------------------" + bashio::log.warning "Library folder in $DATA_LOCATION/library already exists, is a real folder, and is not empty. Moving to $DATA_LOCATION/library_old" + bashio::log.yellow "-------------------------------" + mv "$DATA_LOCATION/library" "$DATA_LOCATION/library_old" + sleep 5 + fi + + # Create symbolic link only if it doesn't already exist or is incorrect + if [ ! -L "$DATA_LOCATION/library" ] || [ "$(readlink -f "$DATA_LOCATION/library")" != "$LIBRARY_LOCATION" ]; then + ln -sf "$LIBRARY_LOCATION" "$DATA_LOCATION/library" + fi +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 +chmod 777 /data/redis +chmod 777 /data/log diff --git a/immich_openvino/rootfs/etc/cont-init.d/99-run.sh b/immich_openvino/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..93229925d --- /dev/null +++ b/immich_openvino/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,188 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash +# shellcheck disable=SC2155,SC2016 +set -e + +# Function to export options from JSON to env variables +export_options() { + local json_source="/data/options.json" + bashio::log.info "Exporting addon options from ${json_source}" + + # Get all keys and export their raw values + mapfile -t keys < <(jq -r 'keys[]' "${json_source}") + for key in "${keys[@]}"; do + local value + value=$(jq -r ".${key}" "${json_source}") + if bashio::config.false "verbose" || [[ "$key" == *"PASS"* ]]; then + bashio::log.blue "${key}=******" + else + bashio::log.blue "${key}='${value}'" + fi + export "${key}=${value}" + done +} + +# Function to check and adjust DB_HOSTNAME if necessary +check_db_hostname() { + if [[ "$DB_HOSTNAME" == "homeassistant.local" ]]; then + local host_ip + host_ip=$(bashio::network.ipv4_address) + host_ip=${host_ip%/*} + export DB_HOSTNAME="$host_ip" + bashio::log.warning "DB_HOSTNAME was set to homeassistant.local. Using detected IP: $DB_HOSTNAME" + fi + + if ! ping -c 1 -W 3 "$DB_HOSTNAME" >/dev/null 2>&1; then + bashio::log.warning "------------------------------------" + bashio::log.warning "DB_HOSTNAME ($DB_HOSTNAME) is not reachable." + bashio::log.warning "Please set it to the IP address of your database." + bashio::log.warning "The addon will stop until this is fixed." + bashio::log.warning "------------------------------------" + sleep 30 + bashio::addon.stop + else + echo "$DB_HOSTNAME is reachable." + fi +} + +# Function to migrate internal database to external storage if needed +migrate_database() { + if [ -f /share/postgresql_immich.tar.gz ]; then + bashio::log.warning "Previous database export found at /share/postgresql_immich.tar.gz" + elif [ -d /data/postgresql ]; then + bashio::log.warning "Internal Postgres database detected. Migrating to /share/postgresql_immich.tar.gz" + tar -zcvf /share/postgresql_immich.tar.gz /data/postgresql + rm -rf /data/postgresql + fi +} + +# Function to validate required configuration values +validate_config() { + local missing=false + for var in DB_USERNAME DB_HOSTNAME DB_PASSWORD DB_DATABASE_NAME DB_PORT JWT_SECRET; do + if ! bashio::config.has_value "${var}"; then + bashio::log.error "Missing required configuration: ${var}" + missing=true + fi + done + if [ "$missing" = true ]; then + bashio::exit.nok "Please ensure all required options are set." + fi +} + +# Function to export DB variables to s6 environment if applicable +export_db_env() { + if [ -d /var/run/s6/container_environment ]; then + for var in DB_USERNAME DB_PASSWORD DB_DATABASE_NAME DB_PORT DB_HOSTNAME JWT_SECRET; do + printf "%s" "${!var}" > "/var/run/s6/container_environment/${var}" + done + fi +} + +# Function to set up the root user with a secure password +setup_root_user() { + # Generate DB_ROOT_PASSWORD if not set (12-character alphanumeric). + if bashio::config.has_value "DB_ROOT_PASSWORD"; then + export DB_ROOT_PASSWORD="$(bashio::config 'DB_ROOT_PASSWORD')" + else + bashio::log.warning "DB_ROOT_PASSWORD not set. Generating a random 12-character alphanumeric password and storing it in the addon options." + export DB_ROOT_PASSWORD="$(tr -dc 'A-Za-z0-9' "/var/run/s6/container_environment/DB_ROOT_PASSWORD" + fi + fi + + # Try to connect as root using the default insecure password. + if psql "postgres://root:securepassword@${DB_HOSTNAME}:${DB_PORT}/postgres" -c '\q' 2>/dev/null; then + bashio::log.info "Detected root user with default password. Updating to new DB_ROOT_PASSWORD..." + psql "postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOSTNAME}:${DB_PORT}" <x3{x) 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 VQ(F{fN