feat(library): resilient scan for large libraries and better ffprobe errors

- Use a dedicated 10-minute HTTP client for library-sync so libraries
  with hundreds or thousands of items no longer time out
- Show actionable ffprobe-not-found error: detects Docker and suggests
  FFPROBE_PATH env var, config.toml setting, or package install
- Include static ffprobe binary in Docker image (johnvansickle.com)
- Bump version to 0.6.2
This commit is contained in:
Deivid Soto 2026-04-09 09:13:38 +02:00
parent 3fd19f1406
commit 228564eb7f
5 changed files with 71 additions and 7 deletions

View file

@ -1,3 +1,23 @@
# ---- ffprobe static binary stage ----
# Download a static ffprobe-only build (~30MB) to avoid the full ffmpeg package (~1GB).
# johnvansickle.com provides reliable static builds for amd64/arm64.
FROM alpine:3.22 AS ffprobe-dl
RUN apk add --no-cache curl xz
RUN ARCH=$(uname -m) && \
case "$ARCH" in \
x86_64) SLUG="amd64" ;; \
aarch64) SLUG="arm64" ;; \
*) echo "Unsupported arch: $ARCH" && exit 1 ;; \
esac && \
curl -fsSL "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-${SLUG}-static.tar.xz" -o /tmp/ff.tar.xz && \
tar xJ -f /tmp/ff.tar.xz --strip-components=1 -C /tmp/ && \
mv /tmp/ffprobe /usr/local/bin/ffprobe && \
chmod +x /usr/local/bin/ffprobe && \
rm -rf /tmp/ff.tar.xz /tmp/ffmpeg /tmp/ffmpeg-* && \
ffprobe -version | head -1
# ---- Build stage ----
FROM golang:1.25-alpine AS builder
@ -31,6 +51,7 @@ RUN mkdir -p /config /downloads /data && \
USER unarr
COPY --from=builder /unarr /usr/local/bin/unarr
COPY --from=ffprobe-dl /usr/local/bin/ffprobe /usr/local/bin/ffprobe
# Environment: point config/data to container paths
ENV UNARR_CONFIG_DIR=/config