Skip to content

Releases: bugrauluyurt/homelab-media-stack

homelab-media-stack 3.4.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 20:06
Immutable release. Only release title and notes can be modified.
ffb76fd

Fixed

  • Retry failed scheduled health checks after five minutes with a bounded retry budget, ignore the checker's own retained failed status without hiding other unit failures, and send a recovery notification when a subsequent notifying check passes.
  • Let Meeting mode confirm stopped transfers when qBittorrent retains missing-file entries with zero transfer speeds, without resuming those entries or hiding active transfers and API errors.

homelab-media-stack 3.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 18:20
Immutable release. Only release title and notes can be modified.
7244ef2

Added

  • Add an optional ebooks profile with standard Shelfmark (including its bundled browser) and Calibre-Web Automated, loopback-only setup, existing Prowlarr/download-client integration, isolated ingest and library mounts, endpoint health checks, and consistent Calibre catalogue backups. First-run accounts and Tailscale publication require explicit setup.

homelab-media-stack 3.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:06
Immutable release. Only release title and notes can be modified.
c65e254

Added

  • Jellyfin viewers can search and download Open Subtitles for playback or save an SRT file to their device from the browser without installing an extension.

homelab-media-stack 3.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 03:09
Immutable release. Only release title and notes can be modified.
20673c8

Added

  • Add an optional Proton VPN failover preset with an offline importer for verified P2P server
    configurations, an explicit server pool, and setup, refresh and restore instructions.
  • Treat digest-pinned images as current during update checks without malformed registry requests.

homelab-media-stack 3.1.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 00:58
Immutable release. Only release title and notes can be modified.
1fb1e62

Added

  • Glance gets a persistent Meeting mode control to pause torrents, optionally for one hour,
    preserving manually stopped transfers and retrying after qBittorrent outages.
    The control sits below Releases, follows the Glance theme, and shows loading and confirmation states.

homelab-media-stack 3.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 05:47
Immutable release. Only release title and notes can be modified.
f726592

Breaking

  • The repository layout is tidier, and upgrading needs two steps after git pull: run
    scripts/host-install, then scripts/stack-up.
    • Scripts are named area first: health-check is now stack-health, update is stack-update,
      backup-config is stack-backup, check-updates is stack-update-check, notify-failure is
      stack-failure-notify, storage-off is drive-off (the alias too), sync-port is
      vpn-port-sync, leak-test is vpn-leak-test, install-host is host-install, firewall is
      host-firewall, install-agent is agent-install, check-indexers is indexers-check,
      add-indexers.py is configure-indexers.py, render-scraparr-config is configure-scraparr,
      throttle-downloads is downloads-throttle, watch-activity is activity-watch,
      sync-youtube.py is youtube-sync.py, add-viewer.py is viewer-add.py and check is
      repo-check. host-install points the installed units at the new names.
    • The per-app config folders moved into apps/, so stack-up recreates the containers that
      mount them (gluetun with qBittorrent and slskd, Jellyfin, Glance, Homepage, Grafana,
      Prometheus, Scrutiny, Recyclarr). A local edit in one of them survives
      git stash && git pull --ff-only && git stash pop.
    • The unit templates moved to host/systemd/, and the community files to .github/.

Added

  • repo-check fails on a missing compose bind source, a broken link to a repo file, a script
    without its executable bit or its Runs: header; stack-health checks that installed units run
    scripts that exist and that the repo has no root-owned paths.

Fixed

  • configure-grafana-watch.py is executable, as the setup guide assumes, and indents its output
    like the other configure scripts.
  • An empty NTFY_SERVER in .env now falls back to ntfy.sh in the Python scripts too, as it
    already did in the bash ones, instead of sending alerts to an empty address.

homelab-media-stack 2.7.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 03:58
Immutable release. Only release title and notes can be modified.
ccd9a3a

Changed

  • French series (tagged french in Sonarr) grab torrents without the 60-minute wait for Usenet,
    so new episodes reach the ratio trackers' swarms early, when seeding them earns ratio. Re-run
    configure-arr.py to apply it.
  • The ratio-based trackers (Draupnirr, TR4KER) now serve new releases only: the apps grab from their
    RSS feeds and interactive search, never from a backlog search, whose old releases cost ratio that
    seeding can't earn back. Re-run add-indexers.py to apply it.

Fixed

  • add-indexers.py no longer stops when a site times out while being added (TorrentProject2 is
    down); it reports that one as failed and carries on.

homelab-media-stack 2.6.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 02:51
Immutable release. Only release title and notes can be modified.
2d85158

Added

  • NZBFinder can join NZBgeek as a Usenet indexer: set NZBFINDER_API_KEY in .env and re-run
    configure-arr.py, which adds it to Prowlarr and so to every app.

Changed

  • Cleanuparr now removes stalled private torrents too, such as those a tracker refuses for a low
    ratio, and watches Lidarr's downloads. Re-run configure-cleanuparr.py to apply it.

homelab-media-stack 2.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 02:30
Immutable release. Only release title and notes can be modified.
98dcc11

Added

  • The maintenance guide explains how to upgrade the stack itself to a new release, apart from
    image updates.

Fixed

  • VPN recovery no longer recreates downloaders while the tunnel is unhealthy. The existing
    port-sync timer restores stopped or detached downloaders after the VPN recovers, without
    restarting unrelated services. Invalid qBittorrent API responses no longer result in guessed
    preference writes, and recovery is reported only after port verification.
  • VPN recovery tests now use a controlled clock and boot time, so release checks also pass
    on freshly booted CI runners. Regression coverage preserves the production reboot safeguard
    and verifies the recovery delay and restart cooldown without changing runtime behavior.
  • Agent instructions now explicitly require focused tests, full source checks, regression
    coverage and accurate validation results before handing off changes or opening/updating PRs.

homelab-media-stack 2.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 20:15
Immutable release. Only release title and notes can be modified.
2ba986e

Added

  • A copy of glance/youtube-channels.json in $CONFIG_ROOT/glance/ replaces the repository's
    sample, so your pinned YouTube channels stay out of git.
  • Music docs explain ListenBrainz discovery in Needle: each listener connects their ListenBrainz
    token in Needle's Settings, Navidrome sends the listens, and missing songs from the weekly
    playlists come through slskd into media/singles. Lidarr and Tubifarry are unchanged.
  • The troubleshooting notes cover game searches that always take 30 seconds: one slow indexer
    holds Questarr to its timeout, and switching it off in Prowlarr fixes it.
  • The troubleshooting notes cover a VPN that drops soon after torrents start and recovers about
    an hour later: what was observed, the suspected cause, and why DHT stays enabled.

Changed

  • Changelog entries are files in changelog.d/ instead of lines under ## Unreleased, so pull
    requests no longer conflict with each other or with a release. changelog.d/README.md shows the
    format.
  • Glance's subreddits, stock list and pinned YouTube channels are now generic samples; edit them
    in glance/glance.yml and glance/youtube-channels.json.

Fixed

  • scripts/check passes on a Raspberry Pi 5. ruff's arm64 build crashes on its 16 KiB-page
    kernel, so the check skips ruff there and says so; CI still runs it.
  • Glance's YouTube rows show videos again. YouTube's RSS feed answers 404 for hours at a time, so
    sync-youtube.py now fetches the latest uploads hourly, through the Data API once you are signed
    in, and keeps a channel's last videos when it can't be read. arr-youtube.timer runs hourly
    instead of weekly; rerun install-host to pick up the new schedule.
  • The plugin description, script messages and comments say "the server" instead of "the Pi",
    since the stack runs on any supported machine.
  • Grafana's network panels show the server's real traffic. node-exporter now runs on the host
    network; in a container network it counted only its own container. configure-uptime-kuma.py
    updates the URL of a monitor whose service moved, so re-run it after updating.

Security

  • .gitignore and the pre-commit hook also keep .env.* copies (.env.bak, .env.local) and
    *.local.* files out of commits, not only .env itself.
  • render-scraparr-config and backup-config create the scraparr config and the restic key file
    private from the start, instead of making them private right after writing.