77 Commits

Author SHA1 Message Date
Alexandre
9bd179796e Fix Joplin migration lock handling 2025-12-28 13:45:18 +01:00
Alexandre
27aadbee17 nobuild 2025-12-28 09:18:06 +01:00
Alexandre
aa76b99160 icons 2025-12-28 09:14:31 +01:00
Alexandre
7636632cb9 Update README to remove obsolete options
Removed several SSL and authentication options from the README.
2025-12-28 09:12:47 +01:00
Alexandre
c76cf786a2 Update config.yaml with auth_method options
Add authentication method options to configuration.
2025-12-28 09:11:30 +01:00
Alexandre
c228ab8483 Simplify config.yaml by removing unused options
Removed various configuration options and schema definitions for simplification.
2025-12-28 09:06:22 +01:00
Alexandre
9d9d65adcc Update build matrix to exclude 'armv7' architecture
Removed 'armv7' architecture from the build matrix.
2025-12-28 08:59:52 +01:00
Alexandre
c0c661eeeb Update config.yaml 2025-12-28 08:58:15 +01:00
Alexandre
2fd098e2d7 Merge pull request #2309 from alexbelgium/codex/duplicate-and-adapt-filebrowser-addon
Fix FileBrowser Quantum startup path and remove missing README image
2025-12-28 08:54:28 +01:00
Alexandre
33cb52f76a Merge branch 'master' into codex/duplicate-and-adapt-filebrowser-addon 2025-12-28 08:54:21 +01:00
Alexandre
7b83bbae3e Fix FileBrowser Quantum startup path 2025-12-28 08:53:17 +01:00
Alexandre
6f1cb01b46 Merge pull request #2308 from alexbelgium/codex/duplicate-and-adapt-filebrowser-addon
Remove FileBrowser Quantum binary assets
2025-12-28 08:32:23 +01:00
Alexandre
9a076663d7 Remove FileBrowser Quantum binary assets 2025-12-28 08:30:09 +01:00
github-actions[bot]
8df18fd71f Update stargazer map & cache 2025-12-28 01:09:26 +00:00
github-actions
ec1785b06e GitHub bot: changelog 2025-12-27 19:43:54 +00:00
Alexandre
a6f0b0c80b Bump version to 0.1.0-5 2025-12-27 20:40:36 +01:00
Alexandre
69efb6bccf Fix permissions for entrypoint.sh 2025-12-27 20:40:17 +01:00
github-actions
eec17f8225 GitHub bot: changelog 2025-12-27 19:06:48 +00:00
Alexandre
9f246feb94 Merge pull request #2305 from alexbelgium/codex/use-gosu-for-next.js-entrypoint
Add gosu dependency, enable ha_entrypoint and bump social_to_mealie version
2025-12-27 20:03:30 +01:00
Alexandre
9e6bf099a6 Add gosu dependency and bump social_to_mealie version 2025-12-27 20:03:12 +01:00
github-actions
01be16c677 GitHub bot : README updated 2025-12-27 17:03:44 +00:00
github-actions
92d7c82ab4 GitHub bot: changelog 2025-12-27 09:21:23 +00:00
Alexandre
062fa1790f Bump version to 0.1.0-3 2025-12-27 10:17:53 +01:00
Alexandre
dd52847d1b Merge pull request #2304 from alexbelgium/codex/create-and-populate-.env-file
Initialize generated /.env in env export templates
2025-12-27 10:17:23 +01:00
Alexandre
ea25783a73 Initialize .env in env export templates 2025-12-27 10:16:44 +01:00
github-actions
54ec5df87d GitHub bot: changelog 2025-12-27 08:48:55 +00:00
Alexandre
a8f6a8a5f3 Update config.yaml 2025-12-27 09:45:12 +01:00
Alexandre
05c4f09e5f Update 99-run.sh 2025-12-27 09:44:57 +01:00
Alexandre
7f10535477 Export environment variables to entrypoint scripts
Add export command for environment variables to entrypoint scripts
2025-12-27 09:44:09 +01:00
Alexandre
8945d624f5 Update 00-global_var.sh 2025-12-27 09:42:11 +01:00
Alexandre
5b44e1c234 Update 99-run.sh to export variables to entrypoint.sh
Added export commands to entrypoint.sh for required and optional variables.
2025-12-27 09:40:17 +01:00
GitHub Actions
73264f37c8 Revert 'Update config.yaml' [nobuild] 2025-12-27 08:37:17 +00:00
Alexandre
e9264f8c06 Refactor config.yaml by cleaning up device entries
Removed unnecessary device mappings and updated MEALIE_URL.
2025-12-27 09:29:37 +01:00
GitHub Actions
e13186982d Revert 'Update config.yaml to modify device mappings and settings' [nobuild] 2025-12-27 08:29:06 +00:00
Alexandre
2f7c7a9caa Update Dockerfile 2025-12-27 09:28:45 +01:00
Alexandre
d080826869 Update config.yaml to modify device mappings and settings 2025-12-27 09:25:22 +01:00
Alexandre
2d5ee9e394 Merge pull request #2303 from alexbelgium/codex/create-addon-based-on-existing-templates
Remove Social to Mealie binary assets
2025-12-27 09:22:49 +01:00
Alexandre
843da44ac7 new addon 2025-12-27 09:22:26 +01:00
github-actions
f129d5e6cc GitHub bot: changelog 2025-12-27 08:21:01 +00:00
Alexandre
0ff3975de3 Remove social_to_mealie binary assets 2025-12-27 09:20:19 +01:00
Alexandre
eec82176b0 Add disk space cleanup and reduce retry wait time
Updated the workflow to include disk space cleanup and adjusted retry wait time.
2025-12-27 09:20:03 +01:00
Alexandre
4494a9e984 Update config.yaml 2025-12-27 09:16:10 +01:00
Alexandre
b2f13a9650 Update onpush_builder.yaml 2025-12-27 09:14:10 +01:00
GitHub Actions
8d429be0f9 Revert 'Update config.yaml' [nobuild] 2025-12-27 08:02:16 +00:00
Alexandre
33244b571f Update config.yaml 2025-12-27 08:58:39 +01:00
Alexandre
831ae97abb Update Dockerfile to install Rust and wasm-pack
Set up Rust environment and install wasm-pack.
2025-12-27 08:58:27 +01:00
Alexandre
ceb7eb2176 Update config.yaml 2025-12-27 08:57:42 +01:00
Alexandre
861a447de2 Enhance retry logic with cleanup commands
Added cleanup steps before retrying the build process.
2025-12-27 08:56:22 +01:00
Alexandre
18c93fc88f Update config.yaml 2025-12-27 08:52:14 +01:00
Alexandre
14d42dcf0f Add no-cache option to build args in workflow 2025-12-27 08:51:58 +01:00
Alexandre
1c00b0105b Update updater.json 2025-12-27 08:50:15 +01:00
Alexandre
f55b6a1235 Update Dockerfile 2025-12-27 08:49:51 +01:00
GitHub Actions
a02359cbe9 Revert 'Updater bot : immich_cuda updated to 2.4.1' [nobuild] 2025-12-27 07:39:29 +00:00
GitHub Actions
be717f1b13 Revert 'Updater bot : seafile updated to 12.0.14' [nobuild] 2025-12-27 07:38:39 +00:00
GitHub Actions
780b390166 Revert 'Updater bot : omada_v3 updated to 5.3-amd64-2025-11-09' [nobuild] 2025-12-27 07:36:45 +00:00
GitHub Actions
aecc0847e4 Revert 'Updater bot : ente updated to 4.4.15' [nobuild] 2025-12-27 07:36:43 +00:00
alexbelgium
846c9e6619 Updater bot : seafile updated to 12.0.14 2025-12-27 08:32:01 +01:00
alexbelgium
6b906a0407 Updater bot : organizr updated to 1.601 2025-12-27 08:31:19 +01:00
alexbelgium
a1f85eb1e5 Updater bot : omada_v3 updated to 5.3-amd64-2025-11-09 2025-12-27 08:31:08 +01:00
alexbelgium
6e6c90b039 Updater bot : monica updated to 5.0.0b5 2025-12-27 08:30:50 +01:00
alexbelgium
91e5dd9f5f Updater bot : jackett updated to 0.24.569 2025-12-27 08:30:21 +01:00
alexbelgium
5a406035dc Updater bot : immich_cuda updated to 2.4.1 2025-12-27 08:30:06 +01:00
alexbelgium
de67d8e1aa Updater bot : ente updated to 4.4.15 2025-12-27 08:29:32 +01:00
Alexandre
71d986150e Update updater.json 2025-12-27 08:27:32 +01:00
Alexandre
6b7c64cf38 Update updater.json 2025-12-27 08:26:39 +01:00
Alexandre
c526cacd60 Add Rust and Cargo to Dockerfile dependencies 2025-12-27 08:25:01 +01:00
Alexandre
ae06f7809c Update updater.json 2025-12-27 08:23:56 +01:00
Alexandre
297f973a15 Implement retry logic for add-on build process
Added a retry mechanism for building the add-on in case of failure, with a wait time of 3 minutes before the second attempt.
2025-12-27 08:22:21 +01:00
Alexandre
cad5bbbc2c Check for init-adduser run file before sed commands
Add conditional check before modifying init-adduser run script.
2025-12-27 08:19:40 +01:00
Alexandre
d686f2671d Fix environment variable name for packages in Dockerfile 2025-12-27 08:13:05 +01:00
github-actions
ed601536c9 GitHub bot: changelog 2025-12-27 07:10:02 +00:00
Alexandre
cbbfd847e5 Update config.yaml 2025-12-27 08:09:02 +01:00
Alexandre
def0666c98 Add github_beta field to updater.json 2025-12-27 08:03:39 +01:00
Alexandre
1f5c0b54ea Add ingress_entry 2025-12-27 08:00:29 +01:00
Alexandre
3f91cd3811 nobuild 2025-12-27 07:53:43 +01:00
Alexandre
5e0934aa20 nobuild 2025-12-27 07:53:06 +01:00
Alexandre
b8aa2292f5 Update sub_filter directives in ingress.conf 2025-12-27 07:52:37 +01:00
57 changed files with 1397 additions and 42 deletions

View File

@@ -529,6 +529,7 @@ Romain7495,France
RooomKL,
Rosemajor,
Rosscoer,
RosutoHane,
Roth-Development,
RouNNdeL,Poland
RubenKelevra,Germany
@@ -1242,10 +1243,12 @@ glgghit,Italy
gli-james-roland,
glxzander,
gmariotti,Germany
gmeinerc,
gnusma,
goetzc,United States
goldendatahub,
goliat931,
golichwer,Poland
gonghailink,
gooman69,
goooroooX,
@@ -1273,6 +1276,7 @@ hAxxelS,
ha48653,
habiwan,
habuild,
hafstaf,
hank-droid,
hankalf,
hans99,Sweden
@@ -1385,6 +1389,7 @@ jfields87,
jfroy,United States
jgoakley,United States
jhhbe,
jhron,
jiadongjiang,
jimmyang1992,
jine,Sweden
@@ -1631,6 +1636,7 @@ michaeljvirkus-commits,
michaelkuty,Czechia
michaelomm,Australia
michalgabor,
michalklabnik,
michelangelonz,
michele84,
micsco,United Kingdom
@@ -1697,6 +1703,7 @@ mytire,United States
nacbooth,United Kingdom
najdias,Portugal
nalditopr,
nana4rider,Japan
naor1,Israel
nate-marshall,
nduest,Germany
@@ -1787,6 +1794,7 @@ paszczaq,Poland
patpadgett,United States
patrickcarmichael,United States
patricklucescu,
paulcgt,South Africa
pavelekpl,
pax,
paxlo,
1 username country
529 RooomKL
530 Rosemajor
531 Rosscoer
532 RosutoHane
533 Roth-Development
534 RouNNdeL Poland
535 RubenKelevra Germany
1243 gli-james-roland
1244 glxzander
1245 gmariotti Germany
1246 gmeinerc
1247 gnusma
1248 goetzc United States
1249 goldendatahub
1250 goliat931
1251 golichwer Poland
1252 gonghailink
1253 gooman69
1254 goooroooX
1276 ha48653
1277 habiwan
1278 habuild
1279 hafstaf
1280 hank-droid
1281 hankalf
1282 hans99 Sweden
1389 jfroy United States
1390 jgoakley United States
1391 jhhbe
1392 jhron
1393 jiadongjiang
1394 jimmyang1992
1395 jine Sweden
1636 michaelkuty Czechia
1637 michaelomm Australia
1638 michalgabor
1639 michalklabnik
1640 michelangelonz
1641 michele84
1642 micsco United Kingdom
1703 nacbooth United Kingdom
1704 najdias Portugal
1705 nalditopr
1706 nana4rider Japan
1707 naor1 Israel
1708 nate-marshall
1709 nduest Germany
1794 patpadgett United States
1795 patrickcarmichael United States
1796 patricklucescu
1797 paulcgt South Africa
1798 pavelekpl
1799 pax
1800 paxlo

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 330 KiB

View File

@@ -115,7 +115,7 @@ jobs:
strategy:
matrix:
addon: ${{ fromJSON(needs.detect-changed-addons.outputs.changedAddons) }}
arch: ["aarch64", "amd64", "armv7"]
arch: ["aarch64", "amd64"]
steps:
- uses: actions/checkout@v6
- name: Resolve Symlinks (in repo)
@@ -170,9 +170,20 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build ${{ matrix.addon }} add-on
id: builderstep
- name: Free disk space (runner)
uses: endersonmenezes/free-disk-space@v3
with:
remove_android: true
remove_dotnet: true
remove_haskell: true
remove_tool_cache: true
remove_swap: true
rm_cmd: "rmz"
rmz_version: "3.1.1"
- name: Build ${{ matrix.addon }} add-on (attempt 1)
id: builderstep1
if: steps.check.outputs.build_arch == 'true' && steps.dockerfile_check.outputs.has_dockerfile == 'true'
continue-on-error: true
uses: home-assistant/builder@2025.11.0
env:
CAS_API_KEY: ${{ secrets.CAS_API_KEY }}
@@ -185,6 +196,26 @@ jobs:
--docker-hub "ghcr.io/${{ github.repository_owner }}" \
--addon
- name: Wait 1 minute before retry
if: steps.check.outputs.build_arch == 'true' && steps.dockerfile_check.outputs.has_dockerfile == 'true' && steps.builderstep1.outcome == 'failure'
run: |
sleep 60
- name: Build ${{ matrix.addon }} add-on (attempt 2)
if: steps.check.outputs.build_arch == 'true' && steps.dockerfile_check.outputs.has_dockerfile == 'true' && steps.builderstep1.outcome == 'failure'
uses: home-assistant/builder@2025.11.0
env:
CAS_API_KEY: ${{ secrets.CAS_API_KEY }}
with:
args: |
${{ env.BUILD_ARGS }} \
--no-cache \
--${{ matrix.arch }} \
--target "/data/${{ matrix.addon }}" \
--image "${{ steps.check.outputs.image }}" \
--docker-hub "ghcr.io/${{ github.repository_owner }}" \
--addon
# 5. Update changelog if needed (for each changed add-on)
make-changelog:
if: ${{ needs.detect-changed-addons.outputs.changedAddons != '' && needs.detect-changed-addons.outputs.changedAddons != '[]' }}

View File

@@ -14,6 +14,11 @@ bashio::log.notice "Additional informations : https://github.com/alexbelgium/has
echo ""
JSONSOURCE="/data/options.json"
ENV_FILE="/.env"
if [[ ! -f "$ENV_FILE" ]]; then
printf '# Generated by 00-global_var.sh from %s\n' "$JSONSOURCE" > "$ENV_FILE"
fi
# Define secrets location (optional)
SECRETSOURCE=""
@@ -189,7 +194,7 @@ update_scripts_with_block() {
shopt -s nullglob
# Added /etc/s6-overlay/s6-rc.d/*/run for newer S6 implementation (optional)
for f in /etc/services.d/*/run /etc/services.d/*/*run* /etc/cont-init.d/*.sh /etc/s6-overlay/s6-rc.d/*/run; do
for f in /etc/services.d/*/run /etc/services.d/*/*run* /etc/cont-init.d/*.sh /etc/s6-overlay/s6-rc.d/*/run /*/entrypoint.sh /entrypoint.sh; do
[[ -f "$f" ]] || continue
[[ -n "${seen[$f]:-}" ]] && continue
seen["$f"]=1
@@ -233,7 +238,7 @@ export_option() {
printf '%s' "${value}" > "/var/run/s6/container_environment/${key}"
fi
echo "${key}=$(dotenv_quote "$value")" >> "/.env" 2>/dev/null || true
echo "${key}=$(dotenv_quote "$value")" >> "$ENV_FILE" 2>/dev/null || true
mkdir -p /etc
echo "${key}=$(dotenv_quote "$value")" >> /etc/environment 2>/dev/null || true

View File

@@ -74,6 +74,11 @@ if [[ "$CONFIGSOURCE" != *".yaml" ]]; then
exit 1
fi
ENV_FILE="/.env"
if [[ ! -f "$ENV_FILE" ]]; then
printf '# Generated by 01-config_yaml.sh from %s\n' "$CONFIGSOURCE" > "$ENV_FILE"
fi
# Permissions only if the config file already exists
if [[ "$CONFIGSOURCE" == *".yaml" ]] && [ -f "$CONFIGSOURCE" ]; then
echo "Setting permissions for the config.yaml directory"
@@ -174,10 +179,13 @@ while IFS= read -r line; do
python3 /env.py
fi
# set .env
echo "$line" >> /.env
echo "$line" >> "$ENV_FILE"
# set environment
mkdir -p /etc
echo "$line" >> /etc/environment
# Export to entrypoint
if [ -f /entrypoint.sh ]; then sed -i "1a export $line" /entrypoint.sh 2> /dev/null; fi
if [ -f /*/entrypoint.sh ]; then sed -i "1a export $line" /*/entrypoint.sh 2> /dev/null; fi
# Export to scripts
if cat /etc/services.d/*/*run* &> /dev/null; then sed -i "1a export $line" /etc/services.d/*/*run* 2> /dev/null; fi
if cat /etc/cont-init.d/*run* &> /dev/null; then sed -i "1a export $line" /etc/cont-init.d/*run* 2> /dev/null; fi

View File

@@ -57,8 +57,10 @@ for file in $(grep -srl "/usr/bin" /etc/cont-init.d /etc/s6-overlay/s6-rc.d); do
done
# Allow running abc as user 1
sed -i '/usermod/ s/$/ 2>\/dev\/null || true/' /etc/s6-overlay/s6-rc.d/init-adduser/run
sed -i '/groupmod/ s/$/ 2>\/dev\/null || true/' /etc/s6-overlay/s6-rc.d/init-adduser/run
if [ -f /etc/s6-overlay/s6-rc.d/init-adduser/run ]; then
sed -i '/usermod/ s/$/ 2>\/dev\/null || true/' /etc/s6-overlay/s6-rc.d/init-adduser/run
sed -i '/groupmod/ s/$/ 2>\/dev\/null || true/' /etc/s6-overlay/s6-rc.d/init-adduser/run
fi
# Replace lsiown if not found
if [ ! -f /usr/bin/lsiown ]; then

View File

@@ -56,7 +56,7 @@ If you want to do add the repository manually, please follow the procedure highl
### Number of addons
- In the repository : 116
- In the repository : 117
- Installed : 76650
### Top 3
@@ -728,6 +728,13 @@ If you want to do add the repository manually, please follow the procedure highl
![aarch64][aarch64-badge]
![amd64][amd64-badge]
✓ [Social to Mealie](social_to_mealie/) : Import recipes from social media directly into Mealie
  ![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsocial_to_mealie%2Fconfig.yaml)
![Update](https://img.shields.io/badge/dynamic/json?label=Updated&query=%24.last_update&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsocial_to_mealie%2Fupdater.json)
![aarch64][aarch64-badge]
![amd64][amd64-badge]
✓ ![image](https://api.iconify.design/mdi/television-classic.svg) [Sonarr](sonarr/) : Can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them
  ![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsonarr%2Fconfig.yaml)

View File

@@ -1,3 +1,5 @@
## nightly-20251223-2 (27-12-2025)
- Minor bugs fixed
## nightly-20251224 (24-12-2025)
- Minor bugs fixed

View File

@@ -75,6 +75,7 @@ environment:
BIRDNET_UID: "0"
image: ghcr.io/alexbelgium/birdnet-go-{arch}
ingress: true
ingress_entry: ui
ingress_stream: true
init: false
map:
@@ -117,4 +118,4 @@ slug: birdnet-go
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-go
usb: true
version: nightly-20251214
version: nightly-20251223-2

View File

@@ -45,15 +45,15 @@ server {
sub_filter action=\"/ action=\"%%ingress_entry%%/;
sub_filter EventSource('/ EventSource('%%ingress_entry%%/;
sub_filter fetch('/ fetch('%%ingress_entry%%/;
sub_filter `/api/v2 `%%ingress_entry%%/api/v2;
sub_filter "'/api/v2" "'%%ingress_entry%%/api/v2";
sub_filter \"/api/v2 \"%%ingress_entry%%/api/v2;
sub_filter `/ui `%%ingress_entry%%/ui;
sub_filter "'/ui" "'%%ingress_entry%%/ui";
sub_filter \"/ui \"%%ingress_entry%%/ui;
sub_filter `/assets `%%ingress_entry%%/assets;
sub_filter "'/assets" "'%%ingress_entry%%/assets";
sub_filter \"/assets \"%%ingress_entry%%/assets;
sub_filter `/api/v `%%ingress_entry%%/api/v;
sub_filter "'/api/v" "'%%ingress_entry%%/api/v";
sub_filter \"/api/v \"%%ingress_entry%%/api/v;
sub_filter `/u `%%ingress_entry%%/u;
sub_filter "'/u" "'%%ingress_entry%%/u";
sub_filter \"/u \"%%ingress_entry%%/u;
sub_filter `/asset `%%ingress_entry%%/asset;
sub_filter "'/asset" "'%%ingress_entry%%/asset";
sub_filter \"/asset \"%%ingress_entry%%/asset;
# Fix streaming
sub_filter window.location.origin} window.location.origin}%%ingress_entry%%;

View File

@@ -3,7 +3,7 @@
"last_update": "09-03-2024",
"repository": "alexbelgium/hassio-addons",
"slug": "comixed",
"source": "Dockerhub",
"source": "dockerhub",
"upstream_repo": "comixed/comixed",
"upstream_version": ""
}

View File

@@ -13,7 +13,15 @@ FROM node:22-alpine AS web-builder
ARG ENTE_WEB_TAG=main
# ---- tools we need to build (git, yarn)
RUN apk add --no-cache git
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN apk add --no-cache \
git curl ca-certificates build-base \
&& curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable \
&& rustup target add wasm32-unknown-unknown \
&& npm install -g wasm-pack@0.13.1
# ---- pull the web source
WORKDIR /src

View File

@@ -0,0 +1,4 @@
# Changelog
## 1.1.0
- Initial FileBrowser Quantum add-on.

View File

@@ -0,0 +1,142 @@
#============================#
# ALEXBELGIUM'S DOCKERFILE #
#============================#
# _.------.
# _.-` ('>.-`"""-.
# '.--'` _'` _ .--.)
# -' '-.-';` `
# ' - _.' ``'--.
# '---` .-'""`
# /`
#=== Home Assistant Addon ===#
#################
# 1 Build Image #
#################
ARG BUILD_FROM
ARG BUILD_VERSION
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-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="bind-tools \
nginx \
python3"
# 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
# Standalone bashio command
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/bashio-standalone.sh" "/.bashio-standalone.sh"
RUN chmod 777 /.bashio-standalone.sh
RUN sed -i "s|/command/with-contenv|/usr/bin/env|g" "/ha_entrypoint.sh"
VOLUME [ "/data" ]
WORKDIR /
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 '/<VirtualHost/a \ \n # Match requests with the custom User-Agent "HealthCheck" \n SetEnvIf User-Agent "HealthCheck" dontlog \n # Exclude matching requests from access logs \n CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog' "$file"; \
done; \
fi && \
\
# Handle Nginx configuration
if [ -f /etc/nginx/nginx.conf ]; then \
awk '/http \{/{print; print "map $http_user_agent $dontlog {\n default 0;\n \"~*HealthCheck\" 1;\n}\naccess_log /var/log/nginx/access.log combined if=$dontlog;"; next}1' /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.new && \
mv /etc/nginx/nginx.conf.new /etc/nginx/nginx.conf; \
fi
ENV HEALTH_PORT="8080" \
HEALTH_URL=""
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 || curl -k --fail "https://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1

View File

@@ -0,0 +1,101 @@
# Home assistant add-on: FileBrowser Quantum
I maintain this and other Home Assistant add-ons in my free time: keeping up with upstream changes, HA changes, and testing on real hardware takes a lot of time (and some money). I use around 5-10 of my >110 addons so regularly I install test machines (and purchase some test services such as vpn) that I don't use myself to troubleshoot and improve the addons
If this add-on saves you time or makes your setup easier, I would be very grateful for your support!
[![Buy me a coffee][donation-badge]](https://www.buymeacoffee.com/alexbelgium)
[![Donate via PayPal][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA)
## Addon informations
![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Ffilebrowser_quantum%2Fconfig.yaml)
![Ingress](https://img.shields.io/badge/dynamic/yaml?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Ffilebrowser_quantum%2Fconfig.yaml)
![Arch](https://img.shields.io/badge/dynamic/yaml?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Ffilebrowser_quantum%2Fconfig.yaml)
[![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-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white
[paypal-badge]: https://img.shields.io/badge/Donate%20via%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/filebrowser_quantum/stats.png)
## About
FileBrowser Quantum is a modern, responsive, multi-source file manager with realtime indexing, advanced sharing, and expanded authentication options (password, proxy, OIDC, or no-auth). It is a major fork of the original Filebrowser project, designed for faster browsing and richer previews.
This addon is based on the [docker image](https://hub.docker.com/r/gtstef/filebrowser) from the FileBrowser Quantum project.
## Installation
The installation of this add-on is pretty straightforward and not different in
comparison to installing any other Home Assistant add-on.
1. [Add my Home Assistant add-ons repository][repository] to your Home Assistant 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. Access the web UI through the sidebar or at `<your-ip>:8071`.
## Configuration
The web UI can be found at `<your-ip>:8071` or through the Home Assistant sidebar when using Ingress.
**Default credentials:**
- Username: `admin`
- Password: `admin`
**Important:** Change the default credentials immediately after first login for security.
### Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `auth_method` | list | `password` | Authentication method (`password`, `noauth`, `proxy`, `oidc`) |
| `localdisks` | str | _(optional)_ | Local drives to mount (e.g., `sda1,sdb1,MYNAS`) |
| `networkdisks` | str | _(optional)_ | SMB shares to mount (e.g., `//SERVER/SHARE`) |
| `cifsusername` | str | _(optional)_ | SMB username for network shares |
| `cifspassword` | str | _(optional)_ | SMB password for network shares |
| `cifsdomain` | str | _(optional)_ | SMB domain for network shares |
## Setup
1. Start the add-on and wait for it to initialize.
1. Access the web interface through the Home Assistant sidebar or at `<your-ip>:8071`.
1. Log in using the default credentials:
- Username: `admin`
- Password: `admin`
1. **Important:** Immediately change the default password by clicking on "Settings" > "User Management".
1. Configure additional sources and authentication settings through the add-on options or the web interface.
### Mounting Drives
This addon supports mounting both local drives and remote SMB shares:
- **Local drives**: See [Mounting Local Drives in Addons](https://github.com/alexbelgium/hassio-addons/wiki/Mounting-Local-Drives-in-Addons)
- **Remote shares**: See [Mounting Remote Shares in Addons](https://github.com/alexbelgium/hassio-addons/wiki/Mounting-remote-shares-in-Addons)
### Custom Scripts and Environment Variables
This addon supports custom scripts and environment variables through the `addon_config` mapping:
- **Custom scripts**: See [Running Custom Scripts in Addons](https://github.com/alexbelgium/hassio-addons/wiki/Running-custom-scripts-in-Addons)
- **env_vars option**: Use the add-on `env_vars` option to pass extra environment variables (uppercase or lowercase names). See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details.
## Support
Create an issue on GitHub, or ask on the [Home Assistant Community thread](https://community.home-assistant.io/t/home-assistant-addon-filebrowser/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

View File

@@ -0,0 +1,66 @@
#include <tunables/global>
profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
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,
}

View File

@@ -0,0 +1,6 @@
{
"build_from": {
"aarch64": "gtstef/filebrowser:latest",
"amd64": "gtstef/filebrowser:latest"
}
}

View File

@@ -0,0 +1,113 @@
arch:
- aarch64
- amd64
description:
FileBrowser Quantum provides a modern, responsive file manager with multi-source
support, advanced authentication options, and realtime indexing for your Home
Assistant files.
devices:
- /dev/dri
- /dev/dri/card0
- /dev/dri/card1
- /dev/dri/renderD128
- /dev/vchiq
- /dev/video10
- /dev/video11
- /dev/video12
- /dev/video13
- /dev/video14
- /dev/video15
- /dev/video16
- /dev/ttyUSB0
- /dev/sda
- /dev/sdb
- /dev/sdc
- /dev/sdd
- /dev/sde
- /dev/sdf
- /dev/sdg
- /dev/nvme
- /dev/nvme0
- /dev/nvme0n1
- /dev/nvme0n1p1
- /dev/nvme0n1p2
- /dev/nvme0n1p3
- /dev/nvme1n1
- /dev/nvme1n1p1
- /dev/nvme1n1p2
- /dev/nvme1n1p3
- /dev/nvme2n1
- /dev/nvme2n1p1
- /dev/nvme2n1p2
- /dev/nvme2n3p3
- /dev/mmcblk
- /dev/fuse
- /dev/sda1
- /dev/sdb1
- /dev/sdc1
- /dev/sdd1
- /dev/sde1
- /dev/sdf1
- /dev/sdg1
- /dev/sda2
- /dev/sdb2
- /dev/sdc2
- /dev/sdd2
- /dev/sde2
- /dev/sdf2
- /dev/sdg2
- /dev/sda3
- /dev/sdb3
- /dev/sda4
- /dev/sdb4
- /dev/sda5
- /dev/sda6
- /dev/sda7
- /dev/sda8
- /dev/nvme0
- /dev/nvme1
- /dev/nvme2
- /dev/md0
- /dev/md1
- /dev/md2
- /dev/md3
environment:
FB_BASEURL: /filebrowser_quantum
PGID: "0"
PUID: "0"
image: ghcr.io/alexbelgium/filebrowser_quantum-{arch}
ingress: true
ingress_port: 8071
ingress_stream: true
map:
- addon_config:rw
- media:rw
- all_addon_configs:rw
- homeassistant_config:rw
- addons:rw
- backup:rw
- share:rw
- ssl:rw
name: FileBrowser Quantum
options:
env_vars: []
auth_method: noauth
panel_admin: false
panel_icon: mdi:file-search
privileged:
- SYS_ADMIN
- DAC_READ_SEARCH
schema:
env_vars:
- name: match(^[A-Za-z0-9_]+$)
value: str?
auth_method: list(password|noauth|proxy|oidc)
cifsdomain: str?
cifspassword: str?
cifsusername: str?
localdisks: str?
networkdisks: str?
slug: filebrowser_quantum
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: 1.1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -0,0 +1,42 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
set -e
####################
# Migrate database #
####################
if [ -f /homeassistant/addons_config/filebrowser_quantum/filebrowser_quantum.db ]; then
echo "Moving database to new location /config"
cp -rnf /homeassistant/addons_config/filebrowser_quantum/* /config/
rm -r /homeassistant/addons_config/filebrowser_quantum
fi
######################
# Link addon folders #
######################
# Clean symlinks
find /config -maxdepth 1 -type l -delete
if [ -d /homeassistant/addons_config ]; then
find /homeassistant/addons_config -maxdepth 1 -type l -delete
fi
# Remove erroneous folders
if [ -d /homeassistant ]; then
if [ -d /config/addons_config ]; then
rm -r /config/addons_config
fi
if [ -d /config/addons_autoscripts ]; then
rm -r /config/addons_autoscripts
fi
fi
# Create symlinks with legacy folders
if [ -d /homeassistant/addons_config ]; then
ln -s /homeassistant/addons_config /config
find /addon_configs/ -maxdepth 1 -mindepth 1 -type d -not -name "*filebrowser_quantum*" -exec ln -s {} /config/addons_config/ \;
fi
if [ -d /homeassistant/addons_autoscripts ]; then
ln -s /homeassistant/addons_autoscripts /config
fi

View File

@@ -0,0 +1,241 @@
#!/usr/bin/env bashio
# shellcheck shell=bash
set -e
############
# TIMEZONE #
############
if bashio::config.has_value 'TZ'; then
TIMEZONE=$(bashio::config 'TZ')
bashio::log.info "Setting timezone to $TIMEZONE"
if [ -f /usr/share/zoneinfo/"$TIMEZONE" ]; then
ln -snf /usr/share/zoneinfo/"$TIMEZONE" /etc/localtime
echo "$TIMEZONE" > /etc/timezone
else
bashio::log.fatal "$TIMEZONE not found, are you sure it is a valid timezone?"
fi
fi
###################
# SSL CONFIG v1.0 #
###################
bashio::config.require.ssl
if bashio::config.true 'ssl'; then
bashio::log.info "ssl enabled. If webui don't work, disable ssl or check your certificate paths"
#set variables
CERTFILE="/ssl/$(bashio::config 'certfile')"
KEYFILE="/ssl/$(bashio::config 'keyfile')"
else
CERTFILE=""
KEYFILE=""
fi
export CERTFILE KEYFILE
#################
# NGINX SETTING #
#################
#declare port
#declare certfile
declare ingress_interface
declare ingress_port
#declare keyfile
FB_BASEURL=$(bashio::addon.ingress_entry)
export FB_BASEURL
declare ADDON_PROTOCOL=http
# Generate Ingress configuration
if bashio::config.true 'ssl'; then
ADDON_PROTOCOL=https
fi
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%subpath%%|${FB_BASEURL}/|g" /etc/nginx/servers/ingress.conf
mkdir -p /var/log/nginx && touch /var/log/nginx/error.log
############################
# FILEBROWSER CONFIGURATION #
############################
CONFIG_PATH="/config/filebrowser_quantum.yaml"
mkdir -p /config /cache
export FILEBROWSER_CONFIG="${CONFIG_PATH}"
python3 - <<'PY'
import json
import os
options_path = "/data/options.json"
config_path = os.environ["FILEBROWSER_CONFIG"]
with open(options_path, "r", encoding="utf-8") as f:
options = json.load(f)
base_url = options.get("base_url") or os.environ.get("FB_BASEURL") or "/"
def bool_or_none(value):
return value if isinstance(value, bool) else None
sources = []
for source in options.get("sources") or [{"path": "/", "name": "Root", "default_enabled": True}]:
entry = {"path": source.get("path", "/")}
if source.get("name"):
entry["name"] = source["name"]
source_config = {}
config_mappings = {
"default_enabled": "defaultEnabled",
"default_user_scope": "defaultUserScope",
"create_user_dir": "createUserDir",
"disable_indexing": "disableIndexing",
"deny_by_default": "denyByDefault",
"private": "private",
"indexing_interval_minutes": "indexingIntervalMinutes",
}
for option_key, config_key in config_mappings.items():
if option_key in source and source[option_key] not in (None, ""):
value = source[option_key]
if option_key == "indexing_interval_minutes" and not value:
continue
source_config[config_key] = value
conditionals = {}
if "ignore_hidden" in source:
value = bool_or_none(source.get("ignore_hidden"))
if value is not None:
conditionals["ignoreHidden"] = value
if "ignore_zero_size_folders" in source:
value = bool_or_none(source.get("ignore_zero_size_folders"))
if value is not None:
conditionals["ignoreZeroSizeFolders"] = value
if conditionals:
source_config["conditionals"] = conditionals
if source_config:
entry["config"] = source_config
sources.append(entry)
server = {
"port": 8080,
"listen": "0.0.0.0",
"baseURL": base_url,
"logging": [
{
"levels": options.get("log_levels", "info|warning|error"),
}
],
"database": "/config/filebrowser_quantum.db",
"cacheDir": "/cache",
"cacheDirCleanup": options.get("cache_dir_cleanup", True),
"disablePreviews": options.get("disable_previews", False),
"disablePreviewResize": options.get("disable_preview_resize", False),
"disableTypeDetectionByHeader": options.get("disable_type_detection_by_header", False),
"disableUpdateCheck": options.get("disable_update_check", False),
"sources": sources,
}
if options.get("external_url"):
server["externalUrl"] = options["external_url"]
if options.get("internal_url"):
server["internalUrl"] = options["internal_url"]
if options.get("max_archive_size_gb"):
server["maxArchiveSize"] = options["max_archive_size_gb"]
certfile = os.environ.get("CERTFILE")
keyfile = os.environ.get("KEYFILE")
if certfile and keyfile:
server["tlsCert"] = certfile
server["tlsKey"] = keyfile
auth_method = options.get("auth_method", "password")
password_config = {
"enabled": auth_method == "password",
"minLength": options.get("password_min_length", 5),
"signup": options.get("password_signup", False),
"enforcedOtp": options.get("password_enforced_otp", False),
}
proxy_config = {
"enabled": auth_method == "proxy",
}
if options.get("proxy_auth_header"):
proxy_config["header"] = options["proxy_auth_header"]
proxy_config["createUser"] = options.get("proxy_auth_create_user", False)
if options.get("proxy_auth_logout_redirect_url"):
proxy_config["logoutRedirectUrl"] = options["proxy_auth_logout_redirect_url"]
oidc_config = {
"enabled": auth_method == "oidc",
}
if options.get("oidc_client_id"):
oidc_config["clientId"] = options["oidc_client_id"]
if options.get("oidc_client_secret"):
oidc_config["clientSecret"] = options["oidc_client_secret"]
if options.get("oidc_issuer_url"):
oidc_config["issuerUrl"] = options["oidc_issuer_url"]
if options.get("oidc_scopes"):
oidc_config["scopes"] = options["oidc_scopes"]
if options.get("oidc_user_identifier"):
oidc_config["userIdentifier"] = options["oidc_user_identifier"]
if options.get("oidc_admin_group"):
oidc_config["adminGroup"] = options["oidc_admin_group"]
if options.get("oidc_groups_claim"):
oidc_config["groupsClaim"] = options["oidc_groups_claim"]
if options.get("oidc_logout_redirect_url"):
oidc_config["logoutRedirectUrl"] = options["oidc_logout_redirect_url"]
oidc_config["createUser"] = options.get("oidc_create_user", False)
oidc_config["disableVerifyTLS"] = options.get("oidc_disable_verify_tls", False)
auth = {
"tokenExpirationHours": options.get("token_expiration_hours", 2),
"adminUsername": options.get("admin_username", "admin"),
"adminPassword": options.get("admin_password", "admin"),
"methods": {
"noauth": auth_method == "noauth",
"password": password_config,
"proxy": proxy_config,
"oidc": oidc_config,
},
}
frontend = {
"name": "FileBrowser Quantum",
}
config = {
"server": server,
"auth": auth,
"frontend": frontend,
}
with open(config_path, "w", encoding="utf-8") as f:
json.dump(config, f, indent=2)
f.write("\n")
PY
######################
# LAUNCH FILEBROWSER #
######################
# Prevent conflicts
for folders in /etc/services.d /etc/s6-overlay; do
[[ -d "$folders" ]] && rm -r "$folders"
done
bashio::log.info "Starting..."
cd /home/filebrowser
./filebrowser &
bashio::net.wait_for 8080 localhost 900 || true
bashio::log.info "Started !"
nginx || bashio::log.fatal "Nginx failed"

View File

@@ -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;
}

View File

@@ -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;

View File

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

View File

@@ -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;

View File

@@ -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;

View File

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

View File

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

View File

@@ -0,0 +1,17 @@
server {
listen %%interface%%:%%port%% default_server;
include /etc/nginx/includes/server_params.conf;
include /etc/nginx/includes/proxy_params.conf;
client_max_body_size 0;
location / {
add_header Access-Control-Allow-Origin *;
proxy_connect_timeout 30m;
proxy_send_timeout 30m;
proxy_read_timeout 30m;
proxy_pass %%protocol%%://backend%%subpath%%;
}
}

View File

@@ -0,0 +1,10 @@
{
"github_beta": "true",
"last_update": "20-12-2025",
"paused": false,
"repository": "alexbelgium/hassio-addons",
"slug": "filebrowser_quantum",
"source": "github",
"upstream_repo": "gtsteffaniak/filebrowser",
"upstream_version": "1.1.0-stable"
}

View File

@@ -2,6 +2,7 @@
"dockerhub_by_date": "true",
"github_fulltag": "true",
"last_update": "20-09-2025",
"paused": true,
"repository": "alexbelgium/hassio-addons",
"slug": "fireflyiii_data_importer",
"source": "dockerhub",

View File

@@ -1,4 +1,5 @@
{
"github_beta": false,
"last_update": "29-11-2025",
"repository": "alexbelgium/hassio-addons",
"slug": "grav",

View File

@@ -1,3 +1,5 @@
## 2.4.1 (27-12-2025)
- Minor bugs fixed
## 2.3.1 (22-11-2025)
- Update to latest version from imagegenius/docker-immich (changelog : https://github.com/imagegenius/docker-immich/releases)

View File

@@ -3,8 +3,7 @@ arch:
backup_exclude:
- "**/machine-learning/*"
description:
Self-hosted photo and video backup solution directly from your mobile
phone
Self-hosted photo and video backup solution directly from your mobile phone
devices:
- /dev/dri
- /dev/dxg
@@ -140,6 +139,6 @@ slug: immich_cuda
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "2.3.1"
version: 2.4.1
video: true
webui: http://[HOST]:[PORT:8080]

View File

@@ -1,4 +1,7 @@
## 0.24.569 (27-12-2025)
- Update to latest version from linuxserver/docker-jackett (changelog : https://github.com/linuxserver/docker-jackett/releases)
## 0.24.545 (27-12-2025)
- Update to latest version from linuxserver/docker-jackett (changelog : https://github.com/linuxserver/docker-jackett/releases)

View File

@@ -106,5 +106,5 @@ schema:
slug: jackett_nas
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/jackett
version: "0.24.545"
version: "0.24.569"
webui: http://[HOST]:[PORT:9117]

View File

@@ -4,5 +4,5 @@
"slug": "jackett",
"source": "github",
"upstream_repo": "linuxserver/docker-jackett",
"upstream_version": "0.24.545"
"upstream_version": "0.24.569"
}

View File

@@ -13,16 +13,16 @@ unlock_sqlite_migrations() {
return
fi
if ! sqlite3 "$db_path" "SELECT name FROM sqlite_master WHERE type='table' AND name='knex_migrations_lock';" | grep -q "knex_migrations_lock"; then
return
fi
local is_locked
is_locked=$(sqlite3 "$db_path" "SELECT is_locked FROM knex_migrations_lock LIMIT 1;" 2>/dev/null || true)
is_locked=$(sqlite3 "$db_path" "SELECT is_locked FROM knex_migrations_lock WHERE \"index\" = 1;" 2>/dev/null || true)
sqlite3 "$db_path" "CREATE TABLE IF NOT EXISTS knex_migrations_lock (\"index\" integer PRIMARY KEY, is_locked integer); \
INSERT OR IGNORE INTO knex_migrations_lock (\"index\", is_locked) VALUES (1, 0); \
UPDATE knex_migrations_lock SET is_locked = 0 WHERE \"index\" = 1;" \
|| bashio::log.warning "Failed to ensure SQLite migration lock table."
if [[ "$is_locked" == "1" ]]; then
bashio::log.warning "Locked SQLite migration table detected, attempting to unlock."
sqlite3 "$db_path" "UPDATE knex_migrations_lock SET is_locked = 0;" || bashio::log.warning "Failed to clear SQLite migration lock."
fi
}
@@ -41,11 +41,16 @@ unlock_postgres_migrations() {
export PGPASSWORD="${POSTGRES_PASSWORD:-}"
local is_locked
is_locked=$(psql -h "$POSTGRES_HOST" -p "$pg_port" -U "$POSTGRES_USER" -d "$POSTGRES_DATABASE" -Atqc "SELECT is_locked FROM knex_migrations_lock LIMIT 1;" 2>/dev/null || true)
is_locked=$(psql -h "$POSTGRES_HOST" -p "$pg_port" -U "$POSTGRES_USER" -d "$POSTGRES_DATABASE" -Atqc "SELECT is_locked FROM knex_migrations_lock WHERE index = 1;" 2>/dev/null || true)
psql -h "$POSTGRES_HOST" -p "$pg_port" -U "$POSTGRES_USER" -d "$POSTGRES_DATABASE" -Atqc \
"CREATE TABLE IF NOT EXISTS knex_migrations_lock (index integer PRIMARY KEY, is_locked integer); \
INSERT INTO knex_migrations_lock (index, is_locked) VALUES (1, 0) ON CONFLICT (index) DO NOTHING; \
UPDATE knex_migrations_lock SET is_locked = 0 WHERE index = 1;" \
|| bashio::log.warning "Failed to ensure PostgreSQL migration lock table."
if [[ "$is_locked" == "1" ]]; then
bashio::log.warning "Locked PostgreSQL migration table detected, attempting to unlock."
psql -h "$POSTGRES_HOST" -p "$pg_port" -U "$POSTGRES_USER" -d "$POSTGRES_DATABASE" -Atqc "UPDATE knex_migrations_lock SET is_locked = 0;" || bashio::log.warning "Failed to clear PostgreSQL migration lock."
fi
unset PGPASSWORD

View File

@@ -1,3 +1,6 @@
## 5.0.0b5 (27-12-2025)
- Update to latest version from monicahq/monica (changelog : https://github.com/monicahq/monica/releases)
## v5.0_beta5-8 (07-12-2025)
- Generate and persist a secure Meilisearch master key when none is provided or when configured keys are too short.

View File

@@ -108,5 +108,5 @@ services:
- mysql:want
slug: monica
url: https://github.com/alexbelgium/hassio-addons/tree/master/monica
version: v5.0_beta5-8
version: "5.0.0b5"
webui: "[PROTO:ssl]://[HOST]:[PORT:80]"

View File

@@ -1,9 +1,10 @@
{
"github_beta": true,
"github_tagfilter": "5",
"last_update": "07-12-2024",
"last_update": "27-12-2025",
"repository": "alexbelgium/hassio-addons",
"source": "github",
"slug": "monica",
"upstream_repo": "monicahq/monica",
"upstream_version": "5.0.0-beta.5"
"upstream_version": "5.0.0b5"
}

View File

@@ -2,7 +2,7 @@
"dockerhub_by_date": true,
"github_tagfilter": "5.3-amd64",
"last_update": "23-12-2025",
"paused": false,
"paused": true,
"repository": "alexbelgium/hassio-addons",
"slug": "omada_v3",
"source": "dockerhub",

View File

@@ -1,3 +1,6 @@
## 1.601 (27-12-2025)
- Update to latest version from causefx/organizr (changelog : https://github.com/causefx/organizr/releases)
- The Home Assistant project has deprecated support for the armv7, armhf and i386 architectures. Support wil be fully dropped in the upcoming Home Assistant 2025.12 release
- Added support for configuring extra environment variables via the `env_vars` add-on option alongside config.yaml. See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details.

View File

@@ -86,5 +86,5 @@ schema:
slug: organizr
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: 1.90-bugfix2
version: "1.601"
webui: "[PROTO:ssl]://[HOST]:[PORT:80]"

View File

@@ -1,8 +1,8 @@
{
"last_update": "27-04-2022",
"last_update": "27-12-2025",
"repository": "alexbelgium/hassio-addons",
"slug": "organizr",
"source": "github",
"upstream_repo": "causefx/organizr",
"upstream_version": "1.90"
"upstream_version": "1.601"
}

View File

@@ -53,7 +53,7 @@ ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templat
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES=""
ENV PACKAGES="micro"
# Automatic apps & bashio
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh"

View File

@@ -0,0 +1,11 @@
## 0.1.0-5 (27-12-2025)
- Minor bugs fixed
## 0.1.0-4 (27-12-2025)
- Minor bugs fixed
## 0.1.0-3 (27-12-2025)
- Minor bugs fixed
## 0.1.0-2 (27-12-2025)
- Minor bugs fixed
## 0.1.0
- Initial release

109
social_to_mealie/Dockerfile Normal file
View File

@@ -0,0 +1,109 @@
#============================#
# ALEXBELGIUM'S DOCKERFILE #
#============================#
# _.------.
# _.-` ('>.-"""-.
# '.--'` _'` _ .--.)
# -' '-.-';` `
# ' - _.' ``'--.
# '---` .-'""`
# /`
#=== Home Assistant Addon ===#
#################
# 1 Build Image #
#################
ARG BUILD_FROM
ARG BUILD_VERSION
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
##################
# 3 Install apps #
##################
USER root
# 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"
# 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="jq gosu"
# 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
# Standalone bashio command
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/bashio-standalone.sh" "/.bashio-standalone.sh"
RUN chmod 777 /.bashio-standalone.sh
ENTRYPOINT [ "/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 HealthcheckNOT #
####################

View File

@@ -0,0 +1,75 @@
# Home assistant add-on: Social to Mealie
I maintain this and other Home Assistant add-ons in my free time: keeping up with upstream changes, HA changes, and testing on real hardware takes a lot of time (and some money). I use around 5-10 of my >110 addons so regularly I install test machines (and purchase some test services such as vpn) that I don't use myself to troubleshoot and improve the addons
If this add-on saves you time or makes your setup easier, I would be very grateful for your support!
[![Buy me a coffee][donation-badge]](https://www.buymeacoffee.com/alexbelgium)
[![Donate via PayPal][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA)
## Addon informations
![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsocial_to_mealie%2Fconfig.yaml)
![Ingress](https://img.shields.io/badge/dynamic/yaml?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsocial_to_mealie%2Fconfig.yaml)
![Arch](https://img.shields.io/badge/dynamic/yaml?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsocial_to_mealie%2Fconfig.yaml)
[![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-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white
[paypal-badge]: https://img.shields.io/badge/Donate%20via%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/social_to_mealie/stats.png)
## About
[Social to Mealie](https://github.com/GerardPolloRebozado/social-to-mealie) lets you import recipes from social media videos directly into your Mealie instance.
This addon is based on the docker image https://github.com/GerardPolloRebozado/social-to-mealie
## Configuration
Webui can be found at <http://homeassistant:3000>.
### Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `OPENAI_URL` | str | `https://api.openai.com/v1` | URL for the OpenAI-compatible endpoint |
| `OPENAI_API_KEY` | str | `` | API key for the OpenAI-compatible provider |
| `TRANSCRIPTION_MODEL` | str | `whisper-1` | Whisper model to use for transcription |
| `TEXT_MODEL` | str | `gpt-4o-mini` | Text model used to build the recipe |
| `MEALIE_URL` | str | `https://mealie.example.com` | URL of your Mealie instance |
| `MEALIE_API_KEY` | str | `` | API key for Mealie |
| `MEALIE_GROUP_NAME` | str | `home` | Optional Mealie group name |
| `EXTRA_PROMPT` | str | `` | Additional instructions for the AI |
| `YTDLP_VERSION` | str | `latest` | yt-dlp version to download at startup |
| `COOKIES` | str | `` | Optional cookies string for yt-dlp |
| `env_vars` | list | `[]` | Additional environment variables to export |
### Example Configuration
```yaml
OPENAI_URL: https://api.openai.com/v1
OPENAI_API_KEY: sk-...
TRANSCRIPTION_MODEL: whisper-1
TEXT_MODEL: gpt-4o-mini
MEALIE_URL: https://mealie.example.com
MEALIE_API_KEY: ey...
MEALIE_GROUP_NAME: home
EXTRA_PROMPT: ""
YTDLP_VERSION: latest
COOKIES: ""
env_vars: []
```
### Notes
- Mealie 1.9.0+ with an AI provider configured is required.
- yt-dlp can be pre-downloaded by setting `YTDLP_VERSION` (for example `latest` or `2025.11.01`).
- Provide the cookies string if you need to access protected social media content with yt-dlp.

View File

@@ -0,0 +1,70 @@
#include <tunables/global>
profile social_to_mealie_addon flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
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,
/udev/* mrwkl,
/tmp/** mrkwl,
/dev/fuse/** mrkwl,
/dev/** mrkwl,
/sys/firmware/** 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,
}

View File

@@ -0,0 +1,6 @@
{
"build_from": {
"aarch64": "ghcr.io/gerardpollorebozado/social-to-mealie:latest",
"amd64": "ghcr.io/gerardpollorebozado/social-to-mealie:latest"
}
}

View File

@@ -0,0 +1,43 @@
name: Social to Mealie
version: 0.1.0-5
slug: social_to_mealie
description: Import recipes from social media directly into Mealie
url: https://github.com/alexbelgium/hassio-addons
arch:
- aarch64
- amd64
map:
- addon_config:rw
environment:
PORT: "3000"
image: ghcr.io/alexbelgium/social_to_mealie-{arch}
init: false
ports:
3000/tcp: 3000
ports_description:
3000/tcp: Web interface
options:
OPENAI_URL: https://api.openai.com/v1
OPENAI_API_KEY: ""
TRANSCRIPTION_MODEL: whisper-1
TEXT_MODEL: gpt-4o-mini
MEALIE_URL: ""
MEALIE_API_KEY: ""
MEALIE_GROUP_NAME: home
YTDLP_VERSION: latest
env_vars: []
schema:
OPENAI_URL: str
OPENAI_API_KEY: str
TRANSCRIPTION_MODEL: str
TEXT_MODEL: str
MEALIE_URL: str
MEALIE_API_KEY: str
MEALIE_GROUP_NAME: str?
EXTRA_PROMPT: str?
YTDLP_VERSION: str?
COOKIES: str?
env_vars:
- name: match(^[A-Za-z0-9_]+$)
value: str?
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]"

BIN
social_to_mealie/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
social_to_mealie/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,9 @@
#!/command/with-contenv bashio
# shellcheck shell=bash
set -e
bashio::log.info "Starting Social to Mealie"
cd /app || bashio::exit.nok "App directory not found"
chown nextjs /app/entrypoint.sh
chmod +x /app/entrypoint.sh
exec gosu nextjs /app/entrypoint.sh node --run start

View File

@@ -0,0 +1,10 @@
{
"dockerhub_by_date": true,
"dockerhub_list_size": 2,
"last_update": "17-05-2025",
"repository": "alexbelgium/hassio-addons",
"slug": "social_to_mealie",
"source": "github",
"upstream_repo": "GerardPolloRebozado/social-to-mealie",
"upstream_version": "0.1.0"
}