Commit graph

13 commits

Author SHA1 Message Date
362a7499c2 fix: revert to Alpine base (Debian bookworm has 149 CVEs vs Alpine's ~36)
Debian bookworm is frozen at June 2023 package versions. Key problem:
  mbedtls 2.28.3-1 (bookworm) vs mbedtls 3.6.6-r0 (Alpine 3.23)

CVE-2026-34875 (9.8 critical) is fixed in mbedtls 3.6.6 — which Alpine
already ships. Debian bookworm won't get that update. Similarly for 5+
other critical/high mbedtls CVEs and gnutls28 CVEs. Total: 149 CVEs on
Debian bookworm vs ~36 on Alpine 3.23.

Alpine's rolling model ships much newer package versions, which actually
means fewer accumulated CVEs in key libraries like mbedtls, despite the
reputation of 'Debian stable = secure'.
2026-05-27 10:45:04 -07:00
93afa60b4f fix: switch to node:22-bookworm-slim (Debian) base for better CVE coverage
Alpine's community ffmpeg package had 4+ high CVEs open for 12+ months
(CVE-2023-51793/94/95/98) that Debian's security team backported patches
for in ffmpeg 5.1.9-0+deb12u1.

Changes:
- Dockerfile: node:22-bookworm-slim, apt-get ffmpeg (5.1.9 patched)
- Dockerfile.handbrake: same base, adds handbrake-cli
- CVE-2026-1837 (libjxl): not affected — bookworm ships libjxl 0.7.0
- CVE-2025-52194 (libsndfile): Debian marked not reproducible
- CVE-2026-3099x (ffmpeg AV1): postponed everywhere, no fix available

Tradeoff: image grows from ~300MB to ~677MB (Debian runtime overhead).
ffmpeg 5.1.9 has full feature coverage for disc scanning and HEVC encoding.
2026-05-27 10:36:38 -07:00
baf13ec14f docs: update Docker section for latest/handbrake tag split 2026-05-27 10:26:44 -07:00
9a1f0e0d39 fix: drop HandBrake from default image, add :handbrake variant
Alpine's HandBrake package depends on both ffmpeg 8.x AND ffmpeg7 7.x,
doubling the ffmpeg CVE surface. HandBrake is optional (ffmpeg handles
encoding by default), so remove it from the default image.

- Dockerfile: ffmpeg + openssh-client only (removes ffmpeg7 family)
- Dockerfile.handbrake: new variant for users who need HandBrake presets
  or forced-subtitle burn-in; carries the known higher CVE count

Docker Hub tags:
  pyr0ball/discarr:latest / 0.1.2  — lean, ffmpeg only
  pyr0ball/discarr:handbrake        — includes HandBrake (more CVEs)
2026-05-27 10:26:25 -07:00
e475d3433c fix: upgrade to Node 22 LTS, apk upgrade, npm update to fix CVEs
- node:20-alpine -> node:22-alpine (Node 20 EOL 2026-04-30)
- apk upgrade --no-cache combined with apk add to pick up patched
  Alpine packages (ffmpeg 8.0.1, libjxl, and all transitive deps)
- npm install -g npm@latest to patch bundled tar and minimatch CVEs
- Combined upgrade+add into single RUN layer for consistency

Resolves 51 CVEs reported in Docker Hub vulnerability scan including
CVE-2026-23950, CVE-2026-26996 (npm/tar, npm/minimatch) and
CVE-2023-51793/51794/51795 (apk/ffmpeg) groups
2026-05-27 10:18:02 -07:00
1e535182a8 docs: add Radarr workflow screenshots and update quickstart
Some checks are pending
Deploy docs to GitHub Pages / deploy (push) Blocked by required conditions
Deploy docs to GitHub Pages / build (push) Waiting to run
- Add 03-radarr-filter.png: browse + filter movies by partial title
- Add 04-radarr-selected.png: movie selected in browse panel
- Add 05-mapped.png: completed drag-and-drop title mapping
- Update 03-title-mapping.png to completed-state screenshot
- docs/integrations/radarr.md: add workflow section with 3 annotated screenshots
- docs/quickstart.md: rewrite step 5 with browse/filter/drag workflow
- README.md and docs/index.md: use completed-mapping screenshot
2026-05-27 10:14:02 -07:00
12f540d072 docs: screenshots, sanitize PII, expand hardware encode docs
Some checks are pending
Deploy docs to GitHub Pages / build (push) Waiting to run
Deploy docs to GitHub Pages / deploy (push) Blocked by required conditions
- Add 4 Playwright screenshots: main UI, scanning, title mapping, mobile
- Embed screenshots in README, index.md, and quickstart.md
- Sanitize docs: replace real name/hostname (alan/strahl) with
  generic examples (mediauser/encode-box)
- ffmpeg.md: add NVENC, QSV, and VAAPI hardware acceleration sections;
  document QSV custom build requirement and jellyfin-ffmpeg workaround
2026-05-27 09:59:51 -07:00
5e5b3c8df2 ci: GitHub Pages workflow for MkDocs site
Builds on push to main (docs/ or mkdocs.yml changes) and deploys to
https://pyr0ball.github.io/discarr via actions/deploy-pages.
Pinned to mkdocs-material 9.x (MIT, <10) — avoids 2.0 licence wall.
2026-05-27 09:47:02 -07:00
dc768a8dbb docs: add MkDocs site
14-page documentation site covering installation, quick start,
full config reference, Sonarr/Radarr/qBittorrent/Tdarr integrations,
ffmpeg/HandBrake transcoder setup, SSH transcode workers, disc format
reference, and troubleshooting.

Stack: mkdocs-material 9.x (MIT), pinned <10 to avoid 2.0 licence wall.
2026-05-27 09:45:29 -07:00
49f4a48fda feat: native installer + Docker Hub publish
- install.sh: handles Node.js 18+, ffmpeg, HandBrake CLI, libdvd* on
  apt/dnf/pacman/brew; optional systemd service registration
- README: document installer, accurate system dep table (ffmpeg/ffprobe
  required, HandBrake + libdvd* recommended), libdvdcss legal note
- README: add Docker Hub pull reference (pyr0ball/discarr:latest)
- README: fix misleading 'zero-dependency' framing (no npm deps, but
  system deps like ffmpeg and libdvd* are required)
2026-05-27 09:33:30 -07:00
46b13e68a3 chore: relicense to GPL-3.0 2026-05-26 15:45:10 -07:00
1749d9a7ed docs: full README with badges, quick start, hooks, and related tools 2026-05-26 15:21:43 -07:00
c8ea76292f feat: initial public release — disc scanning and HEVC encode queue for Sonarr/Radarr 2026-05-26 15:19:12 -07:00