From 81964000cf8838f6f2545fcb18a7b326ec1d46a0 Mon Sep 17 00:00:00 2001 From: alexbelgium Date: Sun, 1 Jun 2025 16:46:07 +0200 Subject: [PATCH] Try build https://github.com/alexbelgium/hassio-addons/issues/1764 --- immich_frame/CHANGELOG.md | 1 + immich_frame/Dockerfile | 131 ++++++++++++++++++ immich_frame/README.md | 3 + immich_frame/apparmor.txt | 66 +++++++++ immich_frame/build.json | 9 ++ immich_frame/config.json | 30 ++++ immich_frame/icon.png | Bin 0 -> 13337 bytes immich_frame/logo.png | Bin 0 -> 13337 bytes immich_frame/rootfs/etc/cont-init.d/99-run.sh | 8 ++ immich_frame/stats.png | Bin 0 -> 2117 bytes immich_frame/updater.json | 9 ++ 11 files changed, 257 insertions(+) create mode 100644 immich_frame/CHANGELOG.md create mode 100644 immich_frame/Dockerfile create mode 100644 immich_frame/README.md create mode 100644 immich_frame/apparmor.txt create mode 100644 immich_frame/build.json create mode 100644 immich_frame/config.json create mode 100644 immich_frame/icon.png create mode 100644 immich_frame/logo.png create mode 100755 immich_frame/rootfs/etc/cont-init.d/99-run.sh create mode 100644 immich_frame/stats.png create mode 100644 immich_frame/updater.json diff --git a/immich_frame/CHANGELOG.md b/immich_frame/CHANGELOG.md new file mode 100644 index 000000000..108d8df64 --- /dev/null +++ b/immich_frame/CHANGELOG.md @@ -0,0 +1 @@ +- First build diff --git a/immich_frame/Dockerfile b/immich_frame/Dockerfile new file mode 100644 index 000000000..b536e4a74 --- /dev/null +++ b/immich_frame/Dockerfile @@ -0,0 +1,131 @@ +#============================# +# 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 + +################## +# 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" + +# 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 + +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="3000" \ + HEALTH_URL="/" +HEALTHCHECK \ + --interval=5s \ + --retries=5 \ + --start-period=30s \ + --timeout=25s \ + CMD ! nc -z 127.0.0.1 -p ${HEALTH_PORT} &>/dev/null || exit 1 diff --git a/immich_frame/README.md b/immich_frame/README.md new file mode 100644 index 000000000..5cb68f5ea --- /dev/null +++ b/immich_frame/README.md @@ -0,0 +1,3 @@ +# Home assistant add-on: Immich Power Tools + +https://immichframe.online/ \ No newline at end of file diff --git a/immich_frame/apparmor.txt b/immich_frame/apparmor.txt new file mode 100644 index 000000000..d8a246fd1 --- /dev/null +++ b/immich_frame/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile db21ed7f_immich_frame 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_frame/build.json b/immich_frame/build.json new file mode 100644 index 000000000..bc6e5123e --- /dev/null +++ b/immich_frame/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "aarch64": "ghcr.io/immichframe/immichframe:latest", + "amd64": "ghcr.io/immichframe/immichframe:latest" + }, + "codenotary": { + "signer": "alexandrep.github@gmail.com" + } +} diff --git a/immich_frame/config.json b/immich_frame/config.json new file mode 100644 index 000000000..4b8c6f1cf --- /dev/null +++ b/immich_frame/config.json @@ -0,0 +1,30 @@ +{ + "arch": [ + "aarch64", + "amd64" + ], + "codenotary": "alexandrep.github@gmail.com", + "description": "Display your immich gallery as a digital photo frame", + "hassio_api": true, + "image": "ghcr.io/alexbelgium/immich_frame-{arch}", + "init": false, + "map": [ + "addon_config:rw" + ], + "name": "Immich Frame", + "ports": { + "8080/tcp": 8171 + }, + "ports_description": { + "8080/tcp": "Web UI port" + }, + "schema": { + "TZ": "str?", + "ImmichServerUrl": "str", + "ApiKey": "str" + }, + "slug": "immich_frame", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "1.0.26.2", + "webui": "http://[HOST]:[PORT:8080]" +} diff --git a/immich_frame/icon.png b/immich_frame/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac70964f671843a70b6a965874816df40a51791 GIT binary patch literal 13337 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 BHX{H4 literal 0 HcmV?d00001 diff --git a/immich_frame/logo.png b/immich_frame/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac70964f671843a70b6a965874816df40a51791 GIT binary patch literal 13337 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 BHX{H4 literal 0 HcmV?d00001 diff --git a/immich_frame/rootfs/etc/cont-init.d/99-run.sh b/immich_frame/rootfs/etc/cont-init.d/99-run.sh new file mode 100755 index 000000000..9e510d870 --- /dev/null +++ b/immich_frame/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bashio + +bashio::log.info "Starting Immich Frame" + +mkdir -p /config/config +ln -sf /app/Config /config/Config + +exec dotnet ImmichFrame.WebApi.dll diff --git a/immich_frame/stats.png b/immich_frame/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..8d808a917ac0cd0fdf07d876fa1f91c80e0c661f GIT binary patch literal 2117 zcmYk8e>l_Y8^=F>6c)>mQyORJpj0GWD&|+E{AgIANDfCwgjg1%31bmXR3eonbt)v3 zvaPkH;h-=@3Lj>Emd$6Uu?_R%e7d^6*Y*A5dG7nVujhX5_w~A;=eeF7oVS|>LJt7| zfQE;=>rntun1lUdRYiDyygIWNHfnhHKmq_Dn|}<2q8&(m08o*6xbE{y8kiYk<@X-j zw04A{31w^vrmMwnc08_GlfGR8ZQ+WrK)e5P1c&$=XJk>Hp1xmMTiayKl`+*bHn&6M zOJ8`;%G`Fmz+j@;-;;O?(xk5MkCZ~s?M_rk$E&!|m5e|IO$bmW0(|8E1@K=3crjv; zLzJ-*_y@UG(+DiTU=}hdo|wA18k@!-Oue_HiOff}AkCU@PS=DOS%2K8f*~XaO~I%V z&29+gO_oFDS|zb@!if!nhRj+2~O_K3l;^^lq1yPes-=^kBKN+<@6O`?6|khb!H3eqQM| zGB>d{X(y<#v1B&~9dO*Nc06|qcFy#$gn6SIk+Ni7gBeJ!Iit#F!wIP-4Z>*rT zMmRbV)nvWJN}*Xpwqy_IbmI+~!Ehlfka(=EgW*{|p^~1U_Z%m0#A$qwy|s+Nlq0G; zdxAuUyd?b^Lfj%(GrfO^AztbcSaO2tO7G8|6OCmGYJVH&ZwYNf5bqsvPMwvPIj^Gk zfStHCo1PR%oWRU+KH2x)>`t|9Ao-9ZePw!dxb+_YZoQqZ05~RqcOup}6!ZvVr~N~< zb?OWX;$C08AhZPEj_#(XD-_Kw`k8wVuONsn&)w8zod$fQyVR7z>_T4^9$qJVWT@VF{W@!% z^?`&mlU8Op&~9J_>I_e@33(n^mw-5fi}|I(V2Vyv>p&tO**rHsnWl3sLl^axQUwE@ zheAk!3Grv>cy4W@SjpwjknAw2?uN^^gqw#gPAw=H(YIuUZBK;YzP#^whrK6T5Cf7AbH2+5rE{acSn;x}Ri|y6%A4 zDKKMO;)D%_G*H4sRi)QBMAElfPO{5}IOy&ol^L+LVP?=$jf37>&OJ|dN}%gjHi?xQ za{}UGoj#bi8-!~Y!c_JRHd%&UZ0K6H2ED=*bCqB5Z<_I)#t_OJw6eWFhjk|*8O28` zQcv)QM>7?aU*Vm341I!%^5T7t<5|MaJ_SYUT6@_G1U4+A?*Q1lYD$F8G+7rLrnjF2 zP(8aqrsSpA-Ay!_~0-viX+*eOV_%Dg?~&C0A$nw`yKF-Vewm51m*m#8Q99HsAB z3>^u*EnAhA$!K%5K|56<-XS!k5Gd`dWxql0Xnql9LIq^!*vlCE zkI`#w`mQv(Nbt1nCOW(7kgzzbI^-;cbkp7(J|Ox1Y?Djmgc1v|CwEs)&M7i<{g>`2 zI`MQx&F@#D4aj(1r~|yq^jxbd^VJVbVe2vu5hh!&9(Gt?=}SUNt~+*@Feg;9D5oec zzsBc8yw$LmEf``OU3BwZs`0c2Y)`PA5!loc{Q|E$n%>3Y!=_P;kv$VI_UJ+Xw2~7N zAe+7u#$dukI({`RuZ57F6@U=d|7yk!$1(R_mplj z`qBmPWkg%_%nga(fU`=ps^mszkWai-QGVG7_xN`=>TF8qQEa>a=7Qk! z-@f!oMTydD>t7RIgoy>)0#f1~x9+Sj3gN!hLpZHlU`7sKu+H0-y7YIEpF~rS^nn&A zj(8VV^*U&>xuwM0Fzq2!8rac4Wy~mv#63C) zU76$DiZD+{#>8g=Z?&JAO&qnIX%4YEgW2=6geofDzGa{b<Y z>?!wWN{^U&5mejDX8Cs=CR0ai8*)PI4s0k4<`WO4>c}2m;e9( literal 0 HcmV?d00001 diff --git a/immich_frame/updater.json b/immich_frame/updater.json new file mode 100644 index 000000000..869134bf9 --- /dev/null +++ b/immich_frame/updater.json @@ -0,0 +1,9 @@ +{ + "github_beta": "false", + "last_update": "24-05-2025", + "repository": "alexbelgium/hassio-addons", + "slug": "immich_frame", + "source": "github", + "upstream_repo": "immichFrame/ImmichFrame", + "upstream_version": "1.0.26.2" +}