From 3ea2070bd772142ba6b6c0b607fb24839a2ef43b Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 22 Apr 2025 11:13:09 +0200 Subject: [PATCH] emby stable --- emby/CHANGELOG.md | 613 ++++++++++++++++++ emby/Dockerfile | 131 ++++ emby/README.md | 58 ++ emby/apparmor.txt | 66 ++ emby/icon.png | Bin 0 -> 2667 bytes emby/logo.png | Bin 0 -> 2667 bytes emby/rootfs/etc/cont-init.d/20-folders.sh | 56 ++ emby/rootfs/etc/cont-init.d/32-nginx.sh | 21 + emby/rootfs/etc/cont-init.d/91-silent.sh | 13 + emby/rootfs/etc/nginx/includes/mime.types | 96 +++ .../etc/nginx/includes/proxy_params.conf | 16 + emby/rootfs/etc/nginx/includes/resolver.conf | 1 + .../etc/nginx/includes/server_params.conf | 6 + .../rootfs/etc/nginx/includes/ssl_params.conf | 9 + emby/rootfs/etc/nginx/includes/upstream.conf | 3 + emby/rootfs/etc/nginx/nginx.conf | 78 +++ emby/rootfs/etc/nginx/servers/ingress.conf | 30 + emby/rootfs/etc/services.d/nginx/finish | 8 + emby/rootfs/etc/services.d/nginx/run | 11 + 19 files changed, 1216 insertions(+) create mode 100644 emby/CHANGELOG.md create mode 100644 emby/Dockerfile create mode 100644 emby/README.md create mode 100644 emby/apparmor.txt create mode 100644 emby/icon.png create mode 100644 emby/logo.png create mode 100644 emby/rootfs/etc/cont-init.d/20-folders.sh create mode 100644 emby/rootfs/etc/cont-init.d/32-nginx.sh create mode 100644 emby/rootfs/etc/cont-init.d/91-silent.sh create mode 100644 emby/rootfs/etc/nginx/includes/mime.types create mode 100644 emby/rootfs/etc/nginx/includes/proxy_params.conf create mode 100644 emby/rootfs/etc/nginx/includes/resolver.conf create mode 100644 emby/rootfs/etc/nginx/includes/server_params.conf create mode 100644 emby/rootfs/etc/nginx/includes/ssl_params.conf create mode 100644 emby/rootfs/etc/nginx/includes/upstream.conf create mode 100644 emby/rootfs/etc/nginx/nginx.conf create mode 100644 emby/rootfs/etc/nginx/servers/ingress.conf create mode 100644 emby/rootfs/etc/services.d/nginx/finish create mode 100644 emby/rootfs/etc/services.d/nginx/run diff --git a/emby/CHANGELOG.md b/emby/CHANGELOG.md new file mode 100644 index 000000000..95b95d0c2 --- /dev/null +++ b/emby/CHANGELOG.md @@ -0,0 +1,613 @@ +- WARNING : migration of config to addon_config instead of homeassistant config folder. Allows automatic backups. The location of the database however is not changed. + +## 4.9.0.48 (19-04-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.43-3 (05-04-2025) +- Minor bugs fixed + +## 4.9.0.43 (05-04-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.42 (15-03-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.41 (08-03-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.40 (01-03-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.38 (08-02-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.37 (25-01-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.35 (11-01-2025) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.34 (28-12-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.33 (14-12-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.32 (23-11-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.31 (09-11-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.30 (31-08-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.29 (10-08-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.28 (27-07-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.27 (20-07-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.26 (29-06-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.25 (22-06-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.24 (15-06-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.23 (08-06-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.22 (01-06-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.21 (25-05-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.19 (18-05-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.18 (11-05-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.16 (04-05-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.15 (27-04-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.14 (20-04-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.13 (13-04-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.12 (30-03-2024) +- Update to latest version from linuxserver/docker-emby (changelog : https://github.com/linuxserver/docker-emby/releases) + +## 4.9.0.11 (23-03-2024) +- Update to latest version from linuxserver/docker-emby + +## 4.9.0.10 (16-03-2024) +- Update to latest version from linuxserver/docker-emby + +## 4.9.0.8 (02-03-2024) + +- Update to latest version from linuxserver/docker-emby +## 4.9.0.5-5 (27-02-2024) + +- Minor bugs fixed +## 4.9.0.5-4 (26-02-2024) + +- Minor bugs fixed +## 4.9.0.5-3 (26-02-2024) + +- Minor bugs fixed +## 4.9.0.5-2 (26-02-2024) + +- Minor bugs fixed + +## 4.9.0.5 (24-02-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.9.0.4 (17-02-2024) + +- Update to latest version from linuxserver/docker-emby +## 4.9.0.1-2 (13-02-2024) + +- Minor bugs fixed + +## 4.9.0.1 (10-02-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.80 (03-02-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.75 (27-01-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.73 (20-01-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.67 (13-01-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.66 (06-01-2024) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.65 (30-12-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.64 (30-12-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.63 (23-12-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.62 (16-12-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.61 (02-12-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.60 (21-11-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.59 (18-11-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.58 (11-11-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.57 (04-11-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.56 (28-10-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.55 (20-10-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.53 (14-10-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.52 (13-10-2023) + +- Update to latest version from linuxserver/docker-emby +## 4.8.0.49-6 (05-10-2023) + +- Minor bugs fixed +## 4.8.0.49-5 (05-10-2023) + +- Minor bugs fixed +## 4.8.0.49-4 (05-10-2023) + +- Minor bugs fixed +## 4.8.0.49-3 (05-10-2023) + +- Minor bugs fixed +## 4.8.0.49-2 (04-10-2023) + +- Minor bugs fixed +- Robust SMB & local mounts code + +## 4.8.0.49 (03-10-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.48 (30-09-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.47 (23-09-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.46 (16-09-2023) + +- Update to latest version from linuxserver/docker-emby +## 4.8.0.45-2 (09-09-2023) + +- Minor bugs fixed + +## 4.8.0.45 (09-09-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.44 (02-09-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.43 (26-08-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.42 (19-08-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.41 (12-08-2023) + +- Update to latest version from linuxserver/docker-emby +- Arm32v7 discontinued by linuxserver, latest working version pinned + +## 4.8.0.39 (10-06-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.37 (27-05-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.36 (19-05-2023) + +- Update to latest version from linuxserver/docker-emby +- Feat : cifsdomain added + +## 4.8.0.34 (06-05-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.32 (29-04-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.30 (22-04-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.29-4 (15-04-2023) + +- Minor bugs fixed +- Fix issue with smb + +## 4.8.0.29 (08-04-2023) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.28 (31-03-2023) + +- Update to latest version from linuxserver/docker-emby +- Implemented healthcheck + +## 4.8.0.21 (13-12-2022) + +- Update to latest version from linuxserver/docker-emby +- WARNING : update to supervisor 2022.11 before installing + +## 4.8.0.19 (22-11-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.17 (19-11-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.16 (05-11-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.15 (29-10-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.13 (22-10-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.12 (15-10-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.10 (30-09-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.9 (24-09-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.8 (16-08-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.7 (26-07-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.6 (17-07-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.5 (14-07-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.3 (25-06-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.2 (21-06-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.1 (18-06-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.8.0.0 (24-05-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.60 (19-05-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.39 (14-05-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.38 (07-05-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.37 (05-05-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.36 (26-04-2022) + +- Update to latest version from linuxserver/docker-emby +- Beta: inclusion of Ingress (please report issues) + +## 4.7.0.35 (16-04-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.34 (12-04-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.33 (07-04-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.32 (23-03-2022) + +- Update to latest version from linuxserver/docker-emby +- Add codenotary sign + +## 4.7.0.31 (17-03-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.30 (10-03-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.29 (05-03-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.28 (03-03-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.26 (27-02-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.25 (24-02-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.24 (19-02-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.23 (08-02-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.22 (28-01-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.21 (27-01-2022) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.20 (12-01-2022) + +- Update to latest version from linuxserver/docker-emby +- "host_network": true to enable UPNP, chromecast, ... + +## 4.7.0.19-1 + +- Changed local config location + +## 4.7.0.19 (14-12-2021) + +- Update to latest version from linuxserver/docker-emby +- New standardized logic for Dockerfile build and packages installation + +## 4.7.0.18 (20-11-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.17 (08-11-2021) + +- Update to latest version from linuxserver/docker-emby +- Allow mounting local drives by label. Just pust the label instead of sda1 for example +- SMB : accepts several disks separated by commas mounted in /mnt/$sharename + +## 4.7.0.15 (23-10-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.14 (15-10-2021) + +- Update to latest version from linuxserver/docker-emby +- Added watchdog feature + +## 4.7.0.13 (02-10-2021) + +- Update to latest version from linuxserver/docker-emby +- Allow optional silent emby output +- Allow mounting disks > sdb1 +- Allow hardware acceleration + +## 4.7.0.12 (21-09-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.11 (12-09-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.10 (10-09-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.7.0.9 (04-09-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.4.0 (02-07-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.3.0 (19-06-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.2.0 (04-06-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.1.0 (25-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.51 (23-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.50 (20-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.48 (19-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.47 (18-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.46 (15-05-2021) + +- Update to latest version from linuxserver/docker-emby +- Add banner to log + +## 4.6.0.45 (13-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.44 (12-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.43 (04-05-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.41 (28-04-2021) + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.40 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.39 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.38 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.37 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.36 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.35 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.34 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.33 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.32 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.31 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.30 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.29 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.28 + +- Update to latest version from linuxserver/docker-emby + +## 4.6.0.26 + +- Update to latest version from linuxserver/docker-emby +- Enables PUID/PGID options +- New feature : mount smb share in protected mode +- New feature : mount multiple smb shares +- New config/feature : mount smbv1 +- Changed path : changed smb mount path from /storage/externalcifs to /mnt/$NAS name +- Removed feature : ability to remove protection and mount local hdd, to increase the addon score diff --git a/emby/Dockerfile b/emby/Dockerfile new file mode 100644 index 000000000..22daf57ea --- /dev/null +++ b/emby/Dockerfile @@ -0,0 +1,131 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +ARG BUILD_UPSTREAM="4.9.0.48" +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 + +# Global LSIO modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh" +ARG CONFIGLOCATION="/emby" +RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh + +################## +# 3 Install apps # +################## +# Copy local files +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-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="nginx" + +# 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 + +############ +# 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="8096" \ + HEALTH_URL="/emby/system/info/public?format=json" +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/emby/README.md b/emby/README.md new file mode 100644 index 000000000..33b7fe449 --- /dev/null +++ b/emby/README.md @@ -0,0 +1,58 @@ +# Home assistant add-on: emby + +[![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%2Femby%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%2Femby%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%2Femby%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/emby/stats.png) + +## About + +[emby](https://emby.media/) organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. + +This addon is based on the [docker image](https://github.com/linuxserver/docker-emby) from linuxserver.io. +Inital addon version : https://github.com/petersendev/hassio-addons + +## Configuration + +Webui can be found at `:8096`, or within Home Assistant through Ingress. + +```yaml +PGID: user +GPID: user +TZ: timezone +localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. ex. sda1, sdb1, MYNAS... +networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas +cifsusername: "username" # optional, smb username, same for all smb shares +cifspassword: "password" # optional, smb password +cifsdomain: "domain" # optional, allow setting the domain for the smb share +silent: true #suppresses debug messages +``` + +## 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. + +[repository]: https://github.com/alexbelgium/hassio-addons diff --git a/emby/apparmor.txt b/emby/apparmor.txt new file mode 100644 index 000000000..a7ea8b4fd --- /dev/null +++ b/emby/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile addon_db21ed7f_emby_nas 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/ttyUSB0 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/emby/icon.png b/emby/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4a9f19c5ba2bb020f4b17523180e4fbb050ccf GIT binary patch literal 2667 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 Bpoahe literal 0 HcmV?d00001 diff --git a/emby/logo.png b/emby/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4a9f19c5ba2bb020f4b17523180e4fbb050ccf GIT binary patch literal 2667 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 Bpoahe literal 0 HcmV?d00001 diff --git a/emby/rootfs/etc/cont-init.d/20-folders.sh b/emby/rootfs/etc/cont-init.d/20-folders.sh new file mode 100644 index 000000000..d40e82ba2 --- /dev/null +++ b/emby/rootfs/etc/cont-init.d/20-folders.sh @@ -0,0 +1,56 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +data_location="${data_location:-/share/emby}" +config_location="/config/emby" +log() { + bashio::log.info "$1" +} + +log "Updating folder structure and permission : data stored in $data_location" + +declare -A directories=( + ["/emby"]="" + ["/share/storage/tv"]="" + ["/share/storage/movies"]="" + ["$data_location"]="" + ["$config_location"]="" +) + +for dir in "${!directories[@]}"; do + log "Creating directory: $dir" + mkdir -p "$dir" + chown -R "$PUID:$PGID" "$dir" +done + +if [ -d /homeassistant/emby ]; then + log "Migrate previous config location" + cp -rf /homeassistant/emby/* "$config_location"/ + mv /homeassistant/emby /homeassistant/emby_migrated + chown -R "$PUID:$PGID" "$config_location" +fi + +if [ -f /homeassistant/addons_autoscripts/emby-nas.sh ]; then + cp -rf /homeassistant/addons_autoscripts/emby-nas.sh "$config_location"/ + mv /homeassistant/addons_autoscripts/emby-nas.sh /homeassistant/addons_autoscripts/emby-nas_migrated.sh +fi + +declare -A links=( + ["/emby/cache"]="$data_location/cache" + ["/emby/config"]="$config_location" + ["/emby/data"]="$data_location/data" + ["/emby/logs"]="$data_location/logs" + ["/emby/metadata"]="$data_location/metadata" + ["/emby/plugins"]="$data_location/plugins" + ["/emby/root"]="$data_location/root" +) + +for link in "${!links[@]}"; do + if [ ! -d "$link" ]; then + log "Creating link for $link" + mkdir -p "${links[$link]}" + chown -R "$PUID:$PGID" "${links[$link]}" + ln -s "${links[$link]}" "$link" + fi +done diff --git a/emby/rootfs/etc/cont-init.d/32-nginx.sh b/emby/rootfs/etc/cont-init.d/32-nginx.sh new file mode 100644 index 000000000..63dc23209 --- /dev/null +++ b/emby/rootfs/etc/cont-init.d/32-nginx.sh @@ -0,0 +1,21 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +################# +# NGINX SETTING # +################# + +declare ingress_interface +declare ingress_port + +echo "Adapting for ingress" +ingress_port=$(bashio::addon.ingress_port) +ingress_interface=$(bashio::addon.ip_address) +sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf +sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf + +# Allow uppercase url +echo "Allowing case sensitive url" +grep -rl toLowerCase /app/emby/system/dashboard-ui/app.js | xargs sed -i 's/toLowerCase()/toString()/g' +grep -rl toLowerCase /app/emby/system/dashboard-ui/network | xargs sed -i 's/toLowerCase()/toString()/g' diff --git a/emby/rootfs/etc/cont-init.d/91-silent.sh b/emby/rootfs/etc/cont-init.d/91-silent.sh new file mode 100644 index 000000000..d9d6c4a86 --- /dev/null +++ b/emby/rootfs/etc/cont-init.d/91-silent.sh @@ -0,0 +1,13 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +############### +# SILENT MODE # +############### + +if bashio::config.true 'silent'; then + APPEND=' >/dev/null' + sed -i '$s|$|'"$APPEND"'|' /etc/s6-overlay/s6-rc.d/svc-emby/run + bashio::log.info 'Silent mode activated, all logs from emby server are hidden. Disable this option if you need to troubleshoot the addon.' +fi diff --git a/emby/rootfs/etc/nginx/includes/mime.types b/emby/rootfs/etc/nginx/includes/mime.types new file mode 100644 index 000000000..7c7cdef2d --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/mime.types @@ -0,0 +1,96 @@ +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; +} diff --git a/emby/rootfs/etc/nginx/includes/proxy_params.conf b/emby/rootfs/etc/nginx/includes/proxy_params.conf new file mode 100644 index 000000000..924ba949e --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/proxy_params.conf @@ -0,0 +1,16 @@ +proxy_http_version 1.1; +proxy_ignore_client_abort off; +proxy_read_timeout 86400s; +proxy_redirect off; +proxy_send_timeout 86400s; +proxy_max_temp_file_size 0; + +proxy_hide_header X-Frame-Options; +proxy_set_header Accept-Encoding ""; +proxy_set_header Connection $connection_upgrade; +proxy_set_header Upgrade $http_upgrade; +proxy_set_header Host $http_host; +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; diff --git a/emby/rootfs/etc/nginx/includes/resolver.conf b/emby/rootfs/etc/nginx/includes/resolver.conf new file mode 100644 index 000000000..70f4982b9 --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/resolver.conf @@ -0,0 +1 @@ +resolver 127.0.0.11 ipv6=off; diff --git a/emby/rootfs/etc/nginx/includes/server_params.conf b/emby/rootfs/etc/nginx/includes/server_params.conf new file mode 100644 index 000000000..09c06543e --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/server_params.conf @@ -0,0 +1,6 @@ +root /dev/null; +server_name $hostname; + +add_header X-Content-Type-Options nosniff; +add_header X-XSS-Protection "1; mode=block"; +add_header X-Robots-Tag none; diff --git a/emby/rootfs/etc/nginx/includes/ssl_params.conf b/emby/rootfs/etc/nginx/includes/ssl_params.conf new file mode 100644 index 000000000..6f1500599 --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/ssl_params.conf @@ -0,0 +1,9 @@ +ssl_protocols TLSv1.2; +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; diff --git a/emby/rootfs/etc/nginx/includes/upstream.conf b/emby/rootfs/etc/nginx/includes/upstream.conf new file mode 100644 index 000000000..a640ef18c --- /dev/null +++ b/emby/rootfs/etc/nginx/includes/upstream.conf @@ -0,0 +1,3 @@ +upstream backend { + server 127.0.0.1:8096; +} diff --git a/emby/rootfs/etc/nginx/nginx.conf b/emby/rootfs/etc/nginx/nginx.conf new file mode 100644 index 000000000..fb597811c --- /dev/null +++ b/emby/rootfs/etc/nginx/nginx.conf @@ -0,0 +1,78 @@ + +# 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 auto; + +# 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 8192; +} + +http { + include /etc/nginx/includes/mime.types; + + # https://emby.media/community/index.php?/topic/93074-how-to-emby-with-nginx-with-windows-specific-tips-and-csp-options/ + server_names_hash_bucket_size 64; + gzip_disable "msie6"; + gzip_comp_level 6; + gzip_min_length 1100; + gzip_buffers 16 8k; + gzip_proxied any; + gzip_types + text/plain + text/css + text/js + text/xml + text/javascript + application/javascript + application/x-javascript + application/json + application/xml + application/rss+xml + image/svg+xml; + proxy_connect_timeout 1h; + + 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; +} diff --git a/emby/rootfs/etc/nginx/servers/ingress.conf b/emby/rootfs/etc/nginx/servers/ingress.conf new file mode 100644 index 000000000..12db2aca1 --- /dev/null +++ b/emby/rootfs/etc/nginx/servers/ingress.conf @@ -0,0 +1,30 @@ + server { + listen %%interface%%:%%port%% default_server; + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + # https://emby.media/community/index.php?/topic/104238-playback-error-no-compatible-streams-are-currently-available/&do=findComment&comment=1097946 + proxy_buffering off; + + location / { + # Proxy pass + proxy_pass http://127.0.0.1:8096; + + # Allow downloading fragments + proxy_set_header Range $http_range; + proxy_set_header If-Range $http_if_range; + + # Next three lines allow websockets + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_hide_header X-Powered-By; + add_header X-Xss-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + add_header Strict-Transport-Security "max-age=2592000; includeSubdomains"; + add_header X-Frame-Options "SAMEORIGIN"; + add_header 'Referrer-Policy' 'no-referrer'; + } + +} diff --git a/emby/rootfs/etc/services.d/nginx/finish b/emby/rootfs/etc/services.d/nginx/finish new file mode 100644 index 000000000..444240135 --- /dev/null +++ b/emby/rootfs/etc/services.d/nginx/finish @@ -0,0 +1,8 @@ +#!/usr/bin/execlineb -S0 +# ============================================================================== +# Take down the S6 supervision tree when Nginx fails +# ============================================================================== +if { s6-test ${1} -ne 0 } +if { s6-test ${1} -ne 256 } + +s6-svscanctl -t /var/run/s6/services diff --git a/emby/rootfs/etc/services.d/nginx/run b/emby/rootfs/etc/services.d/nginx/run new file mode 100644 index 000000000..e01a4fa99 --- /dev/null +++ b/emby/rootfs/etc/services.d/nginx/run @@ -0,0 +1,11 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e +# ============================================================================== + +# Wait for app to become available +bashio::net.wait_for 8096 localhost 900 + +bashio::log.info "Starting NGinx..." + +exec nginx