mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-10-12 11:11:36 +02:00
Compare commits
22 Commits
c838d19ab6
...
claude/ent
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00577386d2 | ||
|
|
b91c5c056a | ||
|
|
e1679a0e04 | ||
|
|
da16296665 | ||
|
|
3f3591516f | ||
|
|
aed596959d | ||
|
|
41e3ba6119 | ||
|
|
7ddeadba1c | ||
|
|
97ba73eb2f | ||
|
|
89df640115 | ||
|
|
1cf986a885 | ||
|
|
07320ae0ab | ||
|
|
64f93521ab | ||
|
|
a5023e95e9 | ||
|
|
5f83978aff | ||
|
|
c1efd293cf | ||
|
|
ea9f19ea80 | ||
|
|
ffdf9fa239 | ||
|
|
dbd33c5bad | ||
|
|
c9070c848a | ||
|
|
6a4996a480 | ||
|
|
042c44f012 |
@@ -38,7 +38,7 @@ fi
|
||||
|
||||
bashio::log.info "Starting app..."
|
||||
# shellcheck disable=SC2086
|
||||
/usr/bin/entrypoint.sh birdnet-go realtime &
|
||||
/usr/bin/entrypoint.sh /usr/bin/startup-wrapper.sh birdnet-go realtime &
|
||||
true
|
||||
|
||||
# Wait for app to become available to start nginx
|
||||
|
||||
@@ -1,3 +1,28 @@
|
||||
## 4.4.22-7 (04-06-2026)
|
||||
- Disable the per-account storage limit by default via the new NO_STORAGE_LIMIT
|
||||
option (default true). Grants every account 100 TB and ~100 years validity,
|
||||
equivalent to `ente admin update-subscription --no-limit`. Set to false to
|
||||
keep Ente's default storage limits.
|
||||
## 4.4.22-6 (04-06-2026)
|
||||
- Fix SIGPIPE (exit 141) on startup: tr piped to head -c against /dev/urandom
|
||||
now suppresses the expected SIGPIPE under set -o pipefail
|
||||
## 4.4.22-5 (04-06-2026)
|
||||
- Fix AppArmor profile name (was copied from qbittorrent, could collide with that add-on)
|
||||
- Expose Accounts (3001), Auth (3003) and Cast (3004) ports so the login/2FA web apps are reachable
|
||||
- Default external Postgres port to 5432 when DB_PORT is left blank
|
||||
- Write the correct DB host/port to museum.yaml when using an external database
|
||||
- Exclude minio-data and postgres folders from Home Assistant backups
|
||||
## 4.4.22-4 (04-06-2026)
|
||||
- Minor bugs fixed
|
||||
## 4.4.22-3 (04-06-2026)
|
||||
- Remove DISABLE_WEB_UI option, web UI is now always enabled
|
||||
- Make MinIO internal-only (127.0.0.1) since museum proxies S3 operations
|
||||
- Fix web UI API origin: use ENTE_ENDPOINT_URL so browsers can reach the API
|
||||
- Hardcode MinIO credentials internally (no longer user-configurable)
|
||||
- Remove dead options: MINIO_DATA_LOCATION, MINIO_ROOT_USER, MINIO_ROOT_PASSWORD
|
||||
|
||||
## 4.4.22-2 (04-06-2026)
|
||||
- Minor bugs fixed
|
||||
|
||||
## 4.4.23 (2026-06-03)
|
||||
- Fix nginx rewrite loop on /index.html causing 500 Internal Server Error in Web UI
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
########################################################
|
||||
# 0) Build the ente-web static front-end (multi-stage) #
|
||||
########################################################
|
||||
FROM node:22-bookworm-slim AS web-builder
|
||||
FROM node:24 AS web-builder
|
||||
|
||||
# Build-time selector; set `--build-arg ENTE_WEB_TAG=vX.Y.Z` if you want a specific release
|
||||
ARG ENTE_WEB_TAG=main
|
||||
@@ -15,7 +15,7 @@ ENV RUSTUP_HOME=/usr/local/rustup \
|
||||
CARGO_HOME=/usr/local/cargo \
|
||||
PATH=/usr/local/cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
# Tools needed to build (git, rust, wasm-pack, yarn classic)
|
||||
# Tools needed to build (git, rust for ente-wasm)
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
@@ -23,17 +23,10 @@ RUN set -eux; \
|
||||
curl \
|
||||
ca-certificates \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
python3 \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
\
|
||||
curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable; \
|
||||
rustup target add wasm32-unknown-unknown; \
|
||||
\
|
||||
corepack enable; \
|
||||
corepack prepare yarn@1.22.22 --activate; \
|
||||
npm install -g wasm-pack@0.13.1
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --target wasm32-unknown-unknown
|
||||
|
||||
# Pull the web source
|
||||
WORKDIR /src
|
||||
@@ -41,16 +34,20 @@ RUN git clone --depth 1 --branch "${ENTE_WEB_TAG}" https://github.com/ente-io/en
|
||||
|
||||
# Build web workspace (lives in ./web)
|
||||
WORKDIR /src/web
|
||||
ENV NEXT_PUBLIC_ENTE_ENDPOINT=ENTE_API_ORIGIN_PLACEHOLDER \
|
||||
NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=ENTE_ALBUMS_ORIGIN_PLACEHOLDER
|
||||
ENV NEXT_PUBLIC_ENTE_ENDPOINT=ENTE_API_ORIGIN_PLACEHOLDER
|
||||
ENV NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=ENTE_ALBUMS_ORIGIN_PLACEHOLDER
|
||||
|
||||
RUN set -eux; \
|
||||
yarn config set network-timeout 900000 -g; \
|
||||
yarn install --frozen-lockfile; \
|
||||
yarn build:photos; \
|
||||
yarn build:accounts; \
|
||||
yarn build:auth; \
|
||||
yarn build:cast
|
||||
RUN npm ci
|
||||
RUN npm run build:photos
|
||||
RUN npm run build:albums
|
||||
RUN npm run build:accounts
|
||||
RUN npm run build:auth
|
||||
RUN npm run build:cast
|
||||
RUN npm run build:share
|
||||
RUN npm run build:embed
|
||||
RUN npm run build:paste
|
||||
RUN npm run build:locker
|
||||
RUN npm run build:memories
|
||||
|
||||
#################
|
||||
# 1) Base image #
|
||||
@@ -94,9 +91,15 @@ RUN apk add --no-cache nginx
|
||||
|
||||
# Static files built in the previous stage
|
||||
COPY --from=web-builder /src/web/apps/photos/out /www/photos
|
||||
COPY --from=web-builder /src/web/apps/albums/out /www/albums
|
||||
COPY --from=web-builder /src/web/apps/accounts/out /www/accounts
|
||||
COPY --from=web-builder /src/web/apps/auth/out /www/auth
|
||||
COPY --from=web-builder /src/web/apps/cast/out /www/cast
|
||||
COPY --from=web-builder /src/web/apps/share/out /www/share
|
||||
COPY --from=web-builder /src/web/apps/embed/out /www/embed
|
||||
COPY --from=web-builder /src/web/apps/paste/out /www/paste
|
||||
COPY --from=web-builder /src/web/apps/locker/out /www/locker
|
||||
COPY --from=web-builder /src/web/apps/memories/out /www/memories
|
||||
|
||||
############################
|
||||
# 3) Install add-on helpers #
|
||||
@@ -151,4 +154,4 @@ LABEL \
|
||||
#################
|
||||
# 6) Finish line
|
||||
#################
|
||||
EXPOSE 3000 3001 3002 3003 3004
|
||||
EXPOSE 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009
|
||||
|
||||
@@ -53,12 +53,9 @@ Webui can be found at <http://homeassistant:PORT>.
|
||||
|
||||
| Option | Type | Default | Description |
|
||||
|--------|------|---------|-------------|
|
||||
| `ENTE_ENDPOINT_URL` | str | `http://homeassistant.local:8280` | The URL where Ente API will be accessible |
|
||||
| `MINIO_ROOT_USER` | str | `minioadmin` | MinIO root username |
|
||||
| `MINIO_ROOT_PASSWORD` | str | `minioadmin` | MinIO root password |
|
||||
| `MINIO_DATA_LOCATION` | str | `/config/minio-data` | Path where MinIO stores data |
|
||||
| `ENTE_ENDPOINT_URL` | str | `http://homeassistant.local:8280` | The URL where Ente API will be accessible (used by web UI) |
|
||||
| `DB_PASSWORD` | str | `ente` | Database password for internal PostgreSQL |
|
||||
| `DISABLE_WEB_UI` | bool | `true` | Disable the web UI (use mobile/desktop apps) |
|
||||
| `NO_STORAGE_LIMIT` | bool | `true` | Remove the per-account storage limit (grants every account 100 TB and ~100 years validity, equivalent to `ente admin update-subscription --no-limit`). Set to `false` to keep the default Ente storage limits. |
|
||||
| `USE_EXTERNAL_DB` | bool | `false` | Use external PostgreSQL database |
|
||||
| `TZ` | str | `Europe/Paris` | Timezone setting |
|
||||
|
||||
@@ -77,11 +74,7 @@ If you want to use an external PostgreSQL database, set `USE_EXTERNAL_DB: true`
|
||||
|
||||
```yaml
|
||||
ENTE_ENDPOINT_URL: "http://homeassistant.local:8280"
|
||||
MINIO_ROOT_USER: "myuser"
|
||||
MINIO_ROOT_PASSWORD: "mypassword"
|
||||
MINIO_DATA_LOCATION: "/config/ente-storage"
|
||||
DB_PASSWORD: "securepassword"
|
||||
DISABLE_WEB_UI: false
|
||||
TZ: "America/New_York"
|
||||
```
|
||||
|
||||
@@ -137,11 +130,21 @@ After starting the addon for the first time:
|
||||
|
||||
## Ports
|
||||
|
||||
The addon exposes three ports:
|
||||
The addon exposes the following ports:
|
||||
|
||||
- **8300** (3000/tcp): Ente web UI (if enabled)
|
||||
- **8300** (3000/tcp): Ente web UI
|
||||
- **8301** (3001/tcp): Ente Accounts
|
||||
- **8302** (3002/tcp): Ente Albums
|
||||
- **8303** (3003/tcp): Ente Auth
|
||||
- **8304** (3004/tcp): Ente Cast
|
||||
- **8305** (3005/tcp): Ente Share
|
||||
- **8306** (3006/tcp): Ente Embed
|
||||
- **8307** (3007/tcp): Ente Paste
|
||||
- **8308** (3008/tcp): Ente Locker
|
||||
- **8309** (3009/tcp): Ente Memories
|
||||
- **8280** (8080/tcp): Ente API server (museum) - Main endpoint for apps
|
||||
- **8320** (3200/tcp): MinIO S3 endpoint (for storage backend)
|
||||
|
||||
MinIO S3 is internal-only (127.0.0.1:3200) and not exposed externally since museum proxies all S3 operations.
|
||||
|
||||
## Data Storage
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <tunables/global>
|
||||
|
||||
profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) {
|
||||
profile ente_addon flags=(attach_disconnected,mediate_deleted) {
|
||||
#include <abstractions/base>
|
||||
|
||||
capability chown,
|
||||
@@ -43,7 +43,6 @@ profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) {
|
||||
/init rix,
|
||||
/var/run/** mrwkl,
|
||||
/var/run/ mrwkl,
|
||||
/dev/i2c-1 mrwkl,
|
||||
# Files required
|
||||
/dev/fuse mrwkl,
|
||||
/dev/sda1 mrwkl,
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
arch:
|
||||
- aarch64
|
||||
- amd64
|
||||
backup_exclude:
|
||||
- "**/minio-data/**"
|
||||
- "**/postgres/**"
|
||||
description:
|
||||
Self-hosted, end-to-end-encrypted photo & video storage (Ente server
|
||||
+ MinIO)
|
||||
@@ -78,20 +81,33 @@ name: Ente
|
||||
options:
|
||||
env_vars: []
|
||||
DB_PASSWORD: ente
|
||||
DISABLE_WEB_UI: true
|
||||
ENTE_ENDPOINT_URL: http://homeassistant.local:8280
|
||||
MINIO_DATA_LOCATION: /config/minio-data
|
||||
MINIO_ROOT_PASSWORD: minioadmin
|
||||
MINIO_ROOT_USER: minioadmin
|
||||
NO_STORAGE_LIMIT: true
|
||||
TZ: Europe/Paris
|
||||
USE_EXTERNAL_DB: false
|
||||
ports:
|
||||
3000/tcp: 8300
|
||||
3200/tcp: 8320
|
||||
3001/tcp: 8301
|
||||
3002/tcp: 8302
|
||||
3003/tcp: 8303
|
||||
3004/tcp: 8304
|
||||
3005/tcp: 8305
|
||||
3006/tcp: 8306
|
||||
3007/tcp: 8307
|
||||
3008/tcp: 8308
|
||||
3009/tcp: 8309
|
||||
8080/tcp: 8280
|
||||
ports_description:
|
||||
3000/tcp: Ente web UI
|
||||
3200/tcp: MinIO S3 endpoint
|
||||
3001/tcp: Ente Accounts
|
||||
3002/tcp: Ente Albums
|
||||
3003/tcp: Ente Auth
|
||||
3004/tcp: Ente Cast
|
||||
3005/tcp: Ente Share
|
||||
3006/tcp: Ente Embed
|
||||
3007/tcp: Ente Paste
|
||||
3008/tcp: Ente Locker
|
||||
3009/tcp: Ente Memories
|
||||
8080/tcp: Ente API (museum)
|
||||
privileged:
|
||||
- SYS_ADMIN
|
||||
@@ -105,11 +121,8 @@ schema:
|
||||
DB_PASSWORD: str
|
||||
DB_PORT: int?
|
||||
DB_USERNAME: str?
|
||||
DISABLE_WEB_UI: bool?
|
||||
ENTE_ENDPOINT_URL: str
|
||||
MINIO_DATA_LOCATION: str
|
||||
MINIO_ROOT_PASSWORD: str
|
||||
MINIO_ROOT_USER: str
|
||||
NO_STORAGE_LIMIT: bool?
|
||||
TZ: str?
|
||||
USE_EXTERNAL_DB: bool?
|
||||
cifsdomain: str?
|
||||
@@ -120,6 +133,6 @@ schema:
|
||||
slug: ente
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "4.4.22-2"
|
||||
version: "4.4.22-7"
|
||||
video: true
|
||||
webui: http://[HOST]:[PORT:3000]
|
||||
|
||||
@@ -2,14 +2,32 @@
|
||||
# shellcheck shell=bash
|
||||
set -euo pipefail
|
||||
|
||||
MINIO_USER="$(bashio::config 'MINIO_ROOT_USER')"
|
||||
MINIO_PASS="$(bashio::config 'MINIO_ROOT_PASSWORD')"
|
||||
# Internal MinIO credentials (not user-configurable; MinIO is 127.0.0.1 only)
|
||||
MINIO_CRED_FILE="/config/minio-creds"
|
||||
if [ -f "$MINIO_CRED_FILE" ]; then
|
||||
# Reuse persisted credentials across restarts
|
||||
MINIO_USER="$(sed -n '1p' "$MINIO_CRED_FILE")"
|
||||
MINIO_PASS="$(sed -n '2p' "$MINIO_CRED_FILE")"
|
||||
# Regenerate if file is corrupted
|
||||
if [ -z "$MINIO_USER" ] || [ -z "$MINIO_PASS" ]; then
|
||||
MINIO_USER="minio_$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 8 || true)"
|
||||
MINIO_PASS="$(head -c 24 /dev/urandom | base64 | tr -d '\n')"
|
||||
printf '%s\n%s\n' "$MINIO_USER" "$MINIO_PASS" > "$MINIO_CRED_FILE"
|
||||
chmod 600 "$MINIO_CRED_FILE"
|
||||
fi
|
||||
else
|
||||
# Generate random credentials on first run
|
||||
MINIO_USER="minio_$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 8 || true)"
|
||||
MINIO_PASS="$(head -c 24 /dev/urandom | base64 | tr -d '\n')"
|
||||
printf '%s\n%s\n' "$MINIO_USER" "$MINIO_PASS" > "$MINIO_CRED_FILE"
|
||||
chmod 600 "$MINIO_CRED_FILE"
|
||||
fi
|
||||
S3_BUCKET="b2-eu-cen"
|
||||
|
||||
export ENTE_S3_ARE_LOCAL_BUCKETS=true
|
||||
export ENTE_S3_B2_EU_CEN_KEY="$MINIO_USER"
|
||||
export ENTE_S3_B2_EU_CEN_SECRET="$MINIO_PASS"
|
||||
export ENTE_S3_B2_EU_CEN_ENDPOINT="http://192.168.178.23:$(bashio::addon.port "3200")"
|
||||
export ENTE_S3_B2_EU_CEN_ENDPOINT="http://127.0.0.1:3200"
|
||||
export ENTE_S3_B2_EU_CEN_REGION=eu-central-2
|
||||
export ENTE_S3_B2_EU_CEN_BUCKET="$S3_BUCKET"
|
||||
|
||||
@@ -33,6 +51,8 @@ DB_PASS="$(bashio::config 'DB_PASSWORD' || echo ente)"
|
||||
# External DB opts (may be blank)
|
||||
DB_HOST_EXT="$(bashio::config 'DB_HOSTNAME' || echo '')"
|
||||
DB_PORT_EXT="$(bashio::config 'DB_PORT' || echo '')"
|
||||
# Default external Postgres port when unset
|
||||
[ -z "$DB_PORT_EXT" ] && DB_PORT_EXT=5432
|
||||
|
||||
USE_EXTERNAL_DB=false
|
||||
if bashio::config.true 'USE_EXTERNAL_DB'; then
|
||||
@@ -42,9 +62,11 @@ else
|
||||
bashio::log.info "Using internal Postgres."
|
||||
fi
|
||||
|
||||
DISABLE_WEB_UI=false
|
||||
if bashio::config.true 'DISABLE_WEB_UI'; then
|
||||
DISABLE_WEB_UI=true
|
||||
# Disable per-account storage limits by default (mirrors `ente admin
|
||||
# update-subscription --no-limit`). Set NO_STORAGE_LIMIT=false to keep limits.
|
||||
NO_STORAGE_LIMIT=true
|
||||
if bashio::config.false 'NO_STORAGE_LIMIT'; then
|
||||
NO_STORAGE_LIMIT=false
|
||||
fi
|
||||
|
||||
# Active DB connection target (may be overridden below)
|
||||
@@ -95,8 +117,8 @@ jwt:
|
||||
secret: $(_rand_b64url 32)
|
||||
|
||||
db:
|
||||
host: ${DB_HOST_INTERNAL}
|
||||
port: ${DB_PORT_INTERNAL}
|
||||
host: ${DB_HOST}
|
||||
port: ${DB_PORT}
|
||||
name: ${DB_NAME}
|
||||
user: ${DB_USER}
|
||||
password: ${DB_PASS}
|
||||
@@ -186,9 +208,11 @@ bootstrap_internal_db() {
|
||||
# MinIO
|
||||
############################################
|
||||
start_minio() {
|
||||
bashio::log.info "Starting MinIO (:3200)..."
|
||||
bashio::log.info "Starting MinIO (127.0.0.1:3200)..."
|
||||
mkdir -p /config/minio-data
|
||||
"$MINIO_BIN" server /config/minio-data --address ":3200" &
|
||||
export MINIO_ROOT_USER="$MINIO_USER"
|
||||
export MINIO_ROOT_PASSWORD="$MINIO_PASS"
|
||||
"$MINIO_BIN" server /config/minio-data --address "127.0.0.1:3200" --console-address "127.0.0.1:9001" &
|
||||
MINIO_PID=$!
|
||||
}
|
||||
|
||||
@@ -206,13 +230,10 @@ wait_minio_ready_and_bucket() {
|
||||
# Web (static nginx bundle)
|
||||
############################################
|
||||
start_web() {
|
||||
if $DISABLE_WEB_UI; then
|
||||
bashio::log.info "Web UI disabled."
|
||||
return 0
|
||||
fi
|
||||
|
||||
ENTE_API_ORIGIN=http://localhost:8080
|
||||
ENTE_ALBUMS_ORIGIN=http://localhost:3002
|
||||
ENTE_API_ORIGIN="$(bashio::config 'ENTE_ENDPOINT_URL')"
|
||||
# Derive albums origin from the same host as the API endpoint, mapped to port 8302
|
||||
ENTE_ALBUMS_HOST="$(echo "$ENTE_API_ORIGIN" | sed -E 's#(https?://[^:/]+).*#\1#')"
|
||||
ENTE_ALBUMS_ORIGIN="${ENTE_ALBUMS_HOST}:8302"
|
||||
export ENTE_API_ORIGIN ENTE_ALBUMS_ORIGIN
|
||||
|
||||
# Running ente-web-prepare
|
||||
@@ -222,14 +243,53 @@ start_web() {
|
||||
|
||||
mkdir -p /run/nginx /var/log/nginx
|
||||
|
||||
# Set nginx
|
||||
mv /etc/nginx/http.d/web.bak /etc/nginx/http.d/web.conf
|
||||
# Set nginx (idempotent: only move if .bak still exists)
|
||||
if [ -f /etc/nginx/http.d/web.bak ]; then
|
||||
mv /etc/nginx/http.d/web.bak /etc/nginx/http.d/web.conf
|
||||
fi
|
||||
|
||||
bashio::log.info "Starting Ente web (nginx, ports 3000‑3004)..."
|
||||
exec nginx -g 'daemon off;' &
|
||||
bashio::log.info "Starting Ente web (nginx, ports 3000‑3009)..."
|
||||
nginx -g 'daemon off;' &
|
||||
WEB_PID=$!
|
||||
}
|
||||
|
||||
############################################
|
||||
# Storage limit (no-limit) reconcile
|
||||
############################################
|
||||
# Equivalent of `ente admin update-subscription --no-limit`: grant every
|
||||
# account 100 TB of storage and ~100 years of validity. The Ente CLI only
|
||||
# supports this per-user and interactively, so to make it the default for all
|
||||
# current and future accounts we reconcile the museum `subscriptions` table
|
||||
# directly (the method documented by the Ente maintainers). Runs in the
|
||||
# background and re-applies periodically so newly registered users are covered.
|
||||
NO_LIMIT_STORAGE_BYTES=109951162777600 # 100 * 1024^4 (100 TiB)
|
||||
NO_LIMIT_EXPIRY_SQL="(extract(epoch from now() + interval '100 years') * 1000000)::bigint"
|
||||
|
||||
reconcile_no_limit() {
|
||||
export PGPASSWORD="$DB_PASS"
|
||||
while true; do
|
||||
# Storage is the limit that actually enforces quota; apply it first and
|
||||
# independently so a schema change to other columns can't block it.
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
|
||||
-c "UPDATE subscriptions SET storage = ${NO_LIMIT_STORAGE_BYTES} WHERE storage < ${NO_LIMIT_STORAGE_BYTES};" \
|
||||
> /dev/null 2>&1 || true
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
|
||||
-c "UPDATE subscriptions SET expiry_time = ${NO_LIMIT_EXPIRY_SQL} WHERE expiry_time < ${NO_LIMIT_EXPIRY_SQL};" \
|
||||
> /dev/null 2>&1 || true
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
|
||||
start_no_limit_reconcile() {
|
||||
if ! $NO_STORAGE_LIMIT; then
|
||||
bashio::log.info "NO_STORAGE_LIMIT disabled; per-account storage limits stay in effect."
|
||||
return 0
|
||||
fi
|
||||
bashio::log.info "NO_STORAGE_LIMIT enabled; granting unlimited storage to all accounts."
|
||||
reconcile_no_limit &
|
||||
NO_LIMIT_PID=$!
|
||||
}
|
||||
|
||||
############################################
|
||||
# Museum (API)
|
||||
############################################
|
||||
@@ -280,5 +340,7 @@ wait_minio_ready_and_bucket
|
||||
|
||||
start_web
|
||||
|
||||
start_no_limit_reconcile
|
||||
|
||||
# Foreground — keeps container alive
|
||||
start_museum_foreground
|
||||
|
||||
@@ -7,7 +7,7 @@ server {
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3002; root /www/photos;
|
||||
listen 3002; root /www/albums;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
@@ -18,3 +18,23 @@ server {
|
||||
listen 3004; root /www/cast;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3005; root /www/share;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3006; root /www/embed;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3007; root /www/paste;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3008; root /www/locker;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
server {
|
||||
listen 3009; root /www/memories;
|
||||
location / { try_files $uri $uri.html /index.html =404; }
|
||||
}
|
||||
|
||||
@@ -115,27 +115,4 @@ LABEL \
|
||||
# 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
|
||||
# Upstream
|
||||
|
||||
8
filebrowser_quantum/rootfs/etc/nginx/servers/health.conf
Normal file
8
filebrowser_quantum/rootfs/etc/nginx/servers/health.conf
Normal file
@@ -0,0 +1,8 @@
|
||||
server {
|
||||
listen 127.0.0.1:3001;
|
||||
access_log off;
|
||||
|
||||
location /health {
|
||||
return 200 'OK';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user