From d308b22070830e3c25931c2dfd6b0eb3069ea0d2 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Sat, 14 Mar 2026 18:21:43 +0100 Subject: [PATCH] fix(nzbhydra): Fix startup script for generic release - Install python3 for wrapper script - Use nzbhydra2wrapperPy3.py instead of native binary - Download generic release (not linux-specific) - Handle already-installed case Co-Authored-By: Claude Opus 4.5 --- .claude/HISTORY.md | 15 +++++++++++ .../files/usr/sbin/nzbhydractl | 27 ++++++++++++------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index 04a69ff2..ee433e5d 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -5109,3 +5109,18 @@ git checkout HEAD -- index.html - `/usr/sbin/dropletctl` (new) - `/usr/libexec/rpcd/luci.droplet` (new) - `/www/luci-static/resources/view/droplet/overview.js` (new) + +108. **Newsbin - Usenet Search & Download (2026-03-14)** + - SABnzbd LXC container using Debian rootfs (no Docker/Podman) + - Downloads Debian LXC rootfs from images.linuxcontainers.org + - Installs sabnzbdplus, unrar, par2, p7zip inside container + - Container IP: 192.168.255.40:8085 + - NZBHydra2 package prepared (192.168.255.41:5076) + - LuCI dashboard at Services > Newsbin + - NNTP credentials: EWEKA account configured in UCI + - RPCD backend with status/queue/history/search methods + - Fixed BusyBox sh compatibility (local vars, json_add_boolean) + - **Files**: + - `secubox-app-sabnzbd/`: Makefile, UCI config, init.d, sabnzbdctl + - `secubox-app-nzbhydra/`: Makefile, UCI config, init.d, nzbhydractl + - `luci-app-newsbin/`: overview.js, RPCD handler, ACL, menu diff --git a/package/secubox/secubox-app-nzbhydra/files/usr/sbin/nzbhydractl b/package/secubox/secubox-app-nzbhydra/files/usr/sbin/nzbhydractl index dcc1cfcc..6664b605 100644 --- a/package/secubox/secubox-app-nzbhydra/files/usr/sbin/nzbhydractl +++ b/package/secubox/secubox-app-nzbhydra/files/usr/sbin/nzbhydractl @@ -72,39 +72,48 @@ exec > /config/startup.log 2>&1 echo "=== Starting NZBHydra2 $(date) ===" # Install NZBHydra2 if not present -if [ ! -f "/opt/nzbhydra2/nzbhydra2" ]; then +if [ ! -f "/opt/nzbhydra2/lib/core.jar" ] && ! ls /opt/nzbhydra2/lib/core-*-exec.jar >/dev/null 2>&1; then echo "Installing NZBHydra2..." apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ openjdk-17-jre-headless \ + python3 \ curl \ ca-certificates \ - unzip + unzip || { echo "apt install failed"; exit 1; } # Download NZBHydra2 mkdir -p /opt/nzbhydra2 cd /opt/nzbhydra2 echo "Downloading NZBHydra2..." - local latest=$(curl -sL "https://api.github.com/repos/theotherp/nzbhydra2/releases/latest" | grep -oP '"tag_name": "\K[^"]+' | head -1) - [ -z "$latest" ] && latest="v6.3.2" + latest=$(curl -sL "https://api.github.com/repos/theotherp/nzbhydra2/releases/latest" | grep -oP "\"tag_name\": \"v\K[^\"]+") + [ -z "$latest" ] && latest="8.5.2" - curl -L -o nzbhydra2.zip "https://github.com/theotherp/nzbhydra2/releases/download/${latest}/nzbhydra2-${latest#v}-amd64-linux.zip" || \ - curl -L -o nzbhydra2.zip "https://github.com/theotherp/nzbhydra2/releases/download/${latest}/nzbhydra2-${latest#v}-linux.zip" + echo "Version: $latest" + curl -L -o nzbhydra2.zip "https://github.com/theotherp/nzbhydra2/releases/download/v${latest}/nzbhydra2-${latest}-generic.zip" - unzip -o nzbhydra2.zip + unzip -o nzbhydra2.zip || { echo "unzip failed"; exit 1; } rm -f nzbhydra2.zip - chmod +x nzbhydra2 core + chmod +x nzbhydra2wrapperPy3.py 2>/dev/null || true apt-get clean rm -rf /var/lib/apt/lists/* +else + echo "NZBHydra2 already installed" + # Ensure python3 is installed + if ! command -v python3 >/dev/null 2>&1; then + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y python3 + apt-get clean + fi fi echo "=== Starting NZBHydra2 server ===" mkdir -p /config cd /opt/nzbhydra2 -exec ./nzbhydra2 --datafolder /config --host 0.0.0.0 --port 5076 +exec python3 nzbhydra2wrapperPy3.py --nobrowser --datafolder /config --host 0.0.0.0 --port 5076 STARTEOF chmod +x "$rootfs/start-nzbhydra.sh"