nzbget 0.8 with par2lib & openssl


Recommended Posts

EDIT: There is now a 5.x plugin available for nzbget: http://lime-technology.com/forum/index.php?topic=23423.0

 

 

Preamble

With the generous help of the developer of nzbget -- hugbug, I have the latest version of nzbget (0.8) up and running on unRAID.

 

I think an older version was included with BubbaRAID and someone had posted information on how to install another version, but he couldn't get par2lib working, so it was disabled -- not so useful!

 

With a bit of work, we figured out how to patch par2lib and configure it correctly for the unRAID environment.

 

I like SABnzbd, but nzbget has some advantages, particularly when running on a server.

 

SABnzbd runs under Python, an interpreted language, making it relatively slow. nzbget is written in C, so is faster and has a smaller memory footprint.

 

Some approximate performance info I've found running the two apps on my server:

 

CPU usage (measured by top)

SABnzbd: 40-50%

nzbget: 7-14%

 

RAM usage when downloading (1GB installed)

SABnzbd: 5.6%

nzbget: 0.3%

 

Another benefit to nzget is that it uses par2lib, not par2cmdline.

Running par as a library, rather than an external command means that nzbget only needs to do one verify pass, then it can immediately grab the pars and repair the files, rather than as SABnzbd does: verify, get pars, verify again and repair.

This was really clear to me yesterday as I watched SAB repair a 40GB collection -- it took about 40 minutes for the verify pass, then ran that verify pass again once it had the pars.

Currently par2lib doesn't support multiple cores, but it would be interesting to compare overall repair times, and I might do that at some point.

 

With recent builds, nzbget is close to the functionality of SABnzbd. You can use it with Sick Beard via Sick Beard's nzb blackhole option.

 

 

Prerequisites

The web interface to nzbget is called nzbgetweb and it requires a php server, but it's very simple to set one up with unRAID. Install unRAID-Web, and download the nzbgetweb archive. Unpack nzbgetweb and put the nzbgetweb folder on your cache drive. Once that's done:

 

http://:tower89/ -> Personal Webserver Setup

 

Tell unRAID-Web where the files are, and which port you want to use. In my case, I used an .nzbget folder on my cache drive and port: 8084, so used: /mnt/cache/.nzbget/nzbgetweb/

 

This gives the nzbgetweb interface on: http://tower:8084/

 

Now, it just needs nzbget to talk to.

 

 

Dependencies

To obtain all the packages required for nzbget, I used http://pkgs.org/ .

 

I appended the name of the package needed to this URL. e.g. http://pkgs.org/package/libpar2 , then grabbed the Slackware 13.1 (or similar) x86 version and put that in /boot/packages/ (the packages folder on /tower/flash).

 

If there's any interest, I can package up the dependencies and make them available.

 

 

Make it so...or....go

I added the following sections to my go script:

 

#################################################################
# install packages for nzbget                                   #
#################################################################

cd /boot/packages
installpkg kernel-headers-2.6.33.4_smp-x86-1.txz
installpkg pkg-config-0.23-i486-2.txz
installpkg libxml2-2.7.6-i486-1.txz
installpkg make-3.81-i486-1.txz
installpkg libsigc++-2.2.8-i486-2sl.txz
installpkg binutils-2.20.51.0.8-i486-1.txz
installpkg glibc-2.11.1-i486-3.txz
installpkg perl-5.10.1-i486-1.txz
installpkg gcc-4.2.4-i486-1.tgz
installpkg gcc-g++-4.2.4-i486-1.tgz
installpkg ncurses-5.7-i486-1.txz
installpkg bind-9.4.3_P4-i486-1.txz
installpkg cxxlibs-6.0.13-i486-2.txz
installpkg patch-2.5.4-i486-1.txz

 

There may be a package or two that's not strictly needed by nzbget or par2lib, but if so, I'm sure one of the experts here can advise.

 

openssl was already installed on my server by the SABnzbd script, so if you aren't using that, also add:

 

installpkg openssl-0.9.8r-i486-3.txz

 

You'll also need libpar2-0.2.tar.gz and nzbget-0.8.0-testing-r394.tar.gz in the packages folder on the flash drive, they are set up later in the script.

 

Immediately after this, I included the section for par2lib (note that nzbget includes patches for par2lib, so they are included here):

 

#################################################################
# Compile par2lib                                               #
#################################################################
cd /tmp
cp /boot/packages/nzbget-0.8.0-testing-r394.tar.gz .
tar -zxf nzbget-0.8.0-testing-r394.tar.gz
cp /boot/packages/libpar2-0.2.tar.gz .
tar -zxf  libpar2-0.2.tar.gz
cd libpar2-0.2
cp /tmp/nzbget-0.8.0-testing/libpar2-0.2-*.patch .
patch < libpar2-0.2-bugfixes.patch
patch < libpar2-0.2-cancel.patch
./configure --prefix=/usr
make
make install

 

and finally, nzbget:

 

#################################################################
# Compile nzbget                                                #
#################################################################
cd /tmp/nzbget-0.8.0-testing
./configure --with-tlslib=OpenSSL
make
make install
/tmp/nzbget-0.8.0-testing/nzbget -c /mnt/cache/.nzbget/nzbget.conf -D

 

Now, bear in mind, I'm no Linux expert, so use anything in this post with care, and at your own risk.

I just figured most of this out with trial and error. I'm sure there is a way to build static binaries which can reside on the cache drive, to reduce boot time, or even an unmenu package, so any experts who know who to do this, please weigh in.

 

I put all my nzbget configuration files in /mnt/cache/.nzbget .

 

Just about all the settings can be configured in the web interface, but for reference, here are my conf files (with login stuff removed):

 

nzbget.conf: http://pastebin.com/M9z8YWrL

 

postprocess.conf:

# Template configuration file for postprocessing script "postprocess-example.sh".
# Please refer to "postprocess-example.sh" for usage instructions.

##############################################################################
### PATHS                                                                  ###

# Set the full path to unrar if it is not in your PATH.
UnrarCmd=unrar


##############################################################################
### OPTIONS                                                                ###

# Delete rar-files after unpacking (yes, no).
DeleteRarFiles=yes

# Rename img-files to iso (yes, no).
RenameIMG=yes

# Joint TS-files (yes, no).
JoinTS=yes

##############################################################################
### POSTPROCESSING-PARAMETERS                                              ###

# This section defines parameters, which can be set for each nzb-file
# individually using either web-interface or command line.
# Example command line for setting parameter "password" to value "123" for
# nzb-file with id=2:
#    nzbget -E G O Password=123 2

# Perform postprocessing (yes, no).
#
# Set to "no" to skip postprocessing for this nzb-file.
PostProcess=yes

# Password for encrypted posts.
#
# If the post requires a password for unpacking.
Password=

# Destination directory.
#
# NOTE: NZBGet must have write-access-rights for that directory.
DestDir=/mnt/cache

 

nzgetweb/settings.php: http://pastebin.com/diLhnD2W

nzbget-unraid.png.c60dd466bdec83be68309cca9f3844b6.png

Link to comment

When you benchmarked SABnzbd did you precompile/optimize the Python files first?

 

You can tell if you did this by the presence of '.pyo' files alongside the '.pyc' files. Those are the compiled bytecode files. This is done by using the Python parameter of "-O0". You only need to do this once after installing.

 

I see nowhere near that heavy of CPU Usage on my system for SABnzbd.

 

This nzbget is shaping up to be a decent alternative to SABnzbdonce they get more features included.

Link to comment

When you benchmarked SABnzbd did you precompile/optimize the Python files first?

 

Wow, I didn't even know you could do that. That optimization business doesn't seem to have been covered much in the SABnzbd discussions?

 

Isn't it "-OO", not "-O0"?

 

OK, so I ran the optimization, and RAM usage is down quite a bit, to 3.4%. CPU is the same, or possible even higher (these are not scientific tests, but it has certainly not dropped while downloading pretty much the same content).

 

Bear in mind, I'm running these applications on my HP Microserver with the 15W CPU -- one of the reasons I wanted to implement nzbget is that I knew it had a drastically smaller CPU and RAM footprint than SABnzbd. If you run nzbget on a more powerful machine, "top" might not even notice it's running!

 

What features do you think should be added to nzbget? I asked the developer to consider prioritisation, and he added that feature in the last Beta. He also added passworded rar extraction a while ago after I asked him about it -- a feature that the Newsbin developers kept fighting. hugbug is a top bloke.

Link to comment

When you benchmarked SABnzbd did you precompile/optimize the Python files first?

 

You can tell if you did this by the presence of '.pyo' files alongside the '.pyc' files. Those are the compiled bytecode files. This is done by using the Python parameter of "-O0". You only need to do this once after installing.

 

I see nowhere near that heavy of CPU Usage on my system for SABnzbd.

 

This nzbget is shaping up to be a decent alternative to SABnzbdonce they get more features included.

 

Where are these located at? I looked in the flash drive, but couldn't find them.

Link to comment

When you benchmarked SABnzbd did you precompile/optimize the Python files first?

 

You can tell if you did this by the presence of '.pyo' files alongside the '.pyc' files. Those are the compiled bytecode files. This is done by using the Python parameter of "-O0". You only need to do this once after installing.

 

I see nowhere near that heavy of CPU Usage on my system for SABnzbd.

 

This nzbget is shaping up to be a decent alternative to SABnzbdonce they get more features included.

 

Where are these located at? I looked in the flash drive, but couldn't find them.

 

Depending on where SABnzbd is installed -- if you used the unMenu conf, they should be in /mnt/cache/.sabnzbd/sabnzbd .

Link to comment
  • 2 months later...

Dependencies

To obtain all the packages required for nzbget, I used http://pkgs.org/ .

 

I appended the name of the package needed to this URL. e.g. http://pkgs.org/package/libpar2 , then grabbed the Slackware 13.1 (or similar) x86 version and put that in /boot/packages/ (the packages folder on /tower/flash).

 

If there's any interest, I can package up the dependencies and make them available.

 

 

Make it so...or....go

I added the following sections to my go script:

 

#################################################################
# install packages for nzbget                                   #
#################################################################

cd /boot/packages
installpkg kernel-headers-2.6.33.4_smp-x86-1.txz
installpkg pkg-config-0.23-i486-2.txz
installpkg libxml2-2.7.6-i486-1.txz
installpkg make-3.81-i486-1.txz
installpkg libsigc++-2.2.8-i486-2sl.txz
installpkg binutils-2.20.51.0.8-i486-1.txz
installpkg glibc-2.11.1-i486-3.txz
installpkg perl-5.10.1-i486-1.txz
installpkg gcc-4.2.4-i486-1.tgz
installpkg gcc-g++-4.2.4-i486-1.tgz
installpkg ncurses-5.7-i486-1.txz
installpkg bind-9.4.3_P4-i486-1.txz
installpkg cxxlibs-6.0.13-i486-2.txz
installpkg patch-2.5.4-i486-1.txz

 

There may be a package or two that's not strictly needed by nzbget or par2lib, but if so, I'm sure one of the experts here can advise.

 

openssl was already installed on my server by the SABnzbd script, so if you aren't using that, also add:

 

installpkg openssl-0.9.8r-i486-3.txz

 

You'll also need libpar2-0.2.tar.gz and nzbget-0.8.0-testing-r394.tar.gz in the packages folder on the flash drive, they are set up later in the script.

 

Immediately after this, I included the section for par2lib (note that nzbget includes patches for par2lib, so they are included here):

 

*Raises noob hand*

Hey man, I got to here and got stuck. I see there are some packages that are obviously needed to get this up and running but I cannot understand how to find them on that site? Sorry.

Link to comment

Hmm... this looks interesting for sure.  I don't believe nzbget has a Firefox addon (like nzbdStatus, which is awesome) or an iPad app (like SABCommand, which is definitely heplful), unfortunately.  I think I rely on those too frequently to make a transition.  But I will be watching the development closely!

 

Thanks for sharing!

 

Edited: I would, however, like to give the precompiled/optimized python flag a try.  Would this have to be run when updating to a newer version of sabnzbd, or would it happen automatically?  Is it in fact -O0 or -OO?

Link to comment

*Raises noob hand*

Hey man, I got to here and got stuck. I see there are some packages that are obviously needed to get this up and running but I cannot understand how to find them on that site? Sorry.

 

Append the name of the package to the end of: http://pkgs.org/package/

 

So, if you want libpar2, http://pkgs.org/package/libpar2

 

Then, grab the latest i486 Slackware build. e.g.: "libpar2-0.2-i486-3sl.txz"

 

If you can't get there from here, you may need more help than I can provide and may need to wait for an unMENU package, if anyone does one.

Link to comment

Hmm... this looks interesting for sure.  I don't believe nzbget has a Firefox addon (like nzbdStatus, which is awesome) or an iPad app (like SABCommand, which is definitely heplful), unfortunately.  I think I rely on those too frequently to make a transition.  But I will be watching the development closely!

 

Thanks for sharing!

 

Edited: I would, however, like to give the precompiled/optimized python flag a try.  Would this have to be run when updating to a newer version of sabnzbd, or would it happen automatically?  Is it in fact -O0 or -OO?

 

There's no Firefox addon, but I automate most of my usenet downloads with SickBeard and nzbgetter. For other stuff, I just drop stuff in to nzbget's blackhole. Not too arduous.

 

There's a nice web app I use on my iPod Touch: http://188.138.72.109/showthread.php?tid=51239

 

O6blm.jpg

 

Apparently, it also works on the iPad.

 

The reason I use nzbget is that I run unRAID on a very low power server and I like to see it using under 30W and tiny amounts of CPU/RAM even when downloading from usenet at 20mbps.

SABnzbd is a massive CPU/RAM hog on low-end/low power CPUs. Even after optimization.  ;D

Link to comment

*Raises noob hand*

Hey man, I got to here and got stuck. I see there are some packages that are obviously needed to get this up and running but I cannot understand how to find them on that site? Sorry.

 

Append the name of the package to the end of: http://pkgs.org/package/

 

So, if you want libpar2, http://pkgs.org/package/libpar2

 

Then, grab the latest i486 Slackware build. e.g.: "libpar2-0.2-i486-3sl.txz"

 

If you can't get there from here, you may need more help than I can provide and may need to wait for an unMENU package, if anyone does one.

 

Ok, got all the packages I needed, although the libpar2 package seems to be updated and was a little different.

I have gotten to this point in the first script?

---

root@MicroServer:/tmp/libpar2# patch < libpar2-0.2-bugfixes.patch

can't find file to patch at input line 4

Perhaps you should have used the -p or --strip option?

The text leading up to this was:

--------------------------

|diff -aud ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp

|--- ../libpar2-0.2-original/par2repairer.cpp  2006-01-20 18:25:20.000000000 +0100

|+++ ../libpar2-0.2/par2repairer.cpp    2008-02-06 12:02:53.226050300 +0100

--------------------------

---

It asks me "File to patch:"

 

This was mentioned in the install guide and now I am stuck. Was going well lol.

 

Link to comment

Did you include the last ".":

 

cp /tmp/nzbget-0.8.0-testing/libpar2-0.2-*.patch .

 

root@MicroServer:/tmp/libpar2# cp /tmp/nzbget-0.8.0-testing/libpar2-0.2-*.patch .

root@MicroServer:/tmp/libpar2# dir

install/                  libpar2-0.2-bugfixes.patch*  usr/

libpar2-0.2-MSVC8.patch*  libpar2-0.2-cancel.patch*

 

Yeah mate.

Link to comment

Ok, got all the packages I needed, although the libpar2 package seems to be updated and was a little different.

 

Actually, it should be libpar2-0.2.tar.gz

 

I may have pointed you to the wrong build. I think it should be this build: http://sourceforge.net/projects/parchive/files/libpar2/0.2/

 

Cheers.

New error:

root@MicroServer:/tmp/libpar2-0.2# patch < libpar2-0.2-bugfixes.patch

-bash: patch: command not found

 

Link to comment

Ok, got all the packages I needed, although the libpar2 package seems to be updated and was a little different.

 

Actually, it should be libpar2-0.2.tar.gz

 

I may have pointed you to the wrong build. I think it should be this build: http://sourceforge.net/projects/parchive/files/libpar2/0.2/

 

Cheers.

New error:

root@MicroServer:/tmp/libpar2-0.2# patch < libpar2-0.2-bugfixes.patch

-bash: patch: command not found

 

 

installpkg patch-2.5.4-i486-1.txz

Link to comment

 

 

installpkg patch-2.5.4-i486-1.txz

 

Wierd, I have my go script installing all those packages, wonder why it didn't work.

 

--

#Run NZBGET

cd /boot/packages/nzbget

installpkg *.txz

--

 

Alright, got a little further and this is what I got. :(

 

--

root@MicroServer:/tmp/libpar2-0.2# ./configure --prefix=/usr

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking for a BSD-compatible install... /usr/bin/ginstall -c

checking whether build environment is sane... yes

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking for g++... g++

checking for C++ compiler default output file name... configure: error: C++ compiler cannot create executables

See `config.log' for more details.

root@MicroServer:/tmp/libpar2-0.2#

--

Link to comment

What does "config.log" say?

 

Ok, next step. :(

 

How do i read that via command, I tried:

read config.log

view config.log

 

Also did a little googling but most of it related to reading bash logs, from what it seems the logs bash creates.

An 'ls' reveals the file is there though, inside:

/tmp/libpar2-0.2#

Link to comment
  • 2 weeks later...

Hey, another noob question...

 

When downloading

 

gcc-g++-4.2.4-i486-1.tgz 
gcc-4.2.4-i486-1.tgz

 

from http://pkgs.org/ they save as a .tar file and not a .tgz and I dont know what to do to get them to run as the required .tgz?

 

I'd appreciate some advice,

 

Thanks  :)

 

http://pkgs.org/slackware-13.0/slackware-i486/gcc-4.3.3-i486-3.txz.html

 

http://pkgs.org/slackware-13.0/slackware-i486/gcc-4.3.3-i486-3.txz.html

 

 

Should work.

Link to comment
  • 1 month later...

... I don't believe nzbget has a Firefox addon (like nzbdStatus, which is awesome) or an iPad app (like SABCommand, which is definitely heplful), unfortunately.  I think I rely on those too frequently to make a transition.  But I will be watching the development closely!

 

Hey,

 

I'm running nzbget on my QNAP NAS and I also faced the problem, that nzbget indeed reaches a far higher download rate than SABnzbd on my machine, but there existed no full featured iOS app for it. So I decided to write my own one, called "myNZBGet", which is available from the App Store from now on. As Apple charges this $99 developing few a year, I charge a bit for the app to split the costs, just in case someone else likes it. But I also created a free version, called "freeNZBGet", which you may install and check, if it's working with your device.

 

If you're interested, please check out my home page: http://myNZBGet.smu42.de

 

Cheers,

smu

Link to comment

hi

 

im having a go at this and have not got very far

i got as far as putting the details in the web server where my nzbgetweb folder is and the port 8084

 

but when i try to go to http://tower:8084/ i get nothing should i see something or do i need to do more first?

 

actually the web server wizard wont save my settings no matter how many time i click on save configuraion nothing happens.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.