# Sample configuration file for nzbget # # On POSIX put this file to one of the following locations: # ~/.nzbget # /etc/nzbget.conf # /usr/etc/nzbget.conf # /usr/local/etc/nzbget.conf # /opt/etc/nzbget.conf # # On Windows put this file in program's directory. # # You can also put the file into any location, if you specify the path to it # using switch "-c", e.g: # nzbget -c /home/user/myconig.txt # For quick start change the option MAINDIR and configure one news-server # # # 24/12/08 # modified script to use ProcessLogKind # WARNING: Option "PostLogKind" is obsolete. Use ProcessLogKind instead. ############################################################################## ### PATHS ### # Root directory for all related tasks # MAINDIR is a variable and therefore starts with "$" # The value "~/download" is example for POSIX. On Windows use # absolute paths, like "C:\Download". $MAINDIR=/mnt/HD_a2/usenet # Destination-directory to store the downloaded files DestDir=${MAINDIR}/download # Directory to monitor for incoming nzb-jobs. # Can have subdirectories (only one level of nesting). # A nzb-file queued from a subdirectory will be automatically assigned to # category with the directory-name. NzbDir=${MAINDIR}/nzb # Directory to store download queue QueueDir=${MAINDIR}/queue # Directory to store temporary files TempDir=${MAINDIR}/tmp # Lock-file for daemon-mode, contains process-id (PID) (POSIX only) LockFile=/tmp/nzbget.lock # Where to store log file, if it needs to be created (see "CreateLog") LogFile=${destdir}/nzbget.log ############################################################################## ### NEWS-SERVERS ### # This section defines which servers nzbget should connect to. # The servers will be ordered by their level, i.e. nzbget will at # first try to download an article from the level-0-server. # If that server fails, nzbget proceeds with the level-1-server, etc. # A good idea is surely to put your major download-server at level 0 # and your fill-servers at levels 1,2,... # NOTE: Do not leave out a level in your server-list and start with level 0! # NOTE: Several servers with the same level may be used, they will have # the same priority. # First server, on level 0 # Level of newsserver Server1.Level=0 # Host-name of newsserver Server1.Host=[put here your newsserver details] # Port to connect to (default 119 if not specified) Server1.Port=119 # Username to use for authentication Server1.Username=[put here your username] # Password to use for authentication Server1.Password=[put here your password # Server requires "Join Group"-command (yes, no) (default yes if not specified) Server1.JoinGroup=yes # Encrypted server connection (TLS/SSL) (yes, no) Server1.Encryption=no # Maximal number of simultaneous connections to this server Server1.Connections=4 # Second server, on level 0 #Server2.Level=0 #Server2.Host=my2.newsserver.com #Server2.Port=119 #Server2.Username=me #Server2.Password=mypass #Server2.JoinGroup=yes #Server2.Connections=4 # Third server, on level 1 #Server3.Level=1 #Server3.Host=fills.newsserver.com #Server3.Port=119 #Server3.Username=me2 #Server3.Password=mypass2 #Server3.JoinGroup=yes #Server3.Connections=1 ############################################################################## ### PERMISSIONS (POSIX ONLY) ### # User name for daemon-mode (POSIX in daemon-mode only). # Set the user that the daemon normally runs at. # Set $MAINDIR with an absolute path to be sure where it will write. # This allows nzbget daemon to be launched in rc.local (at boot), and # download items as a specific user id. # NOTE: This option has effect only if the program was started from # root-account, otherwise it is ignored and the daemon runs under # current user id DaemonUserName=root # Specify default umask (affects file permissions) for newly created # files (POSIX only). # The value should be written in octal form (the same as for "umask" shell # command). If umask not specified (or a value greater than 0777 used, useful # to disable current config-setting via command-line parameter) the umask-mode # will not be set and current umask-mode (set via shell) will be used # NOTE: do not forget to uncomment the next line UMask=0000 ############################################################################## ### DOWNLOAD QUEUE ### # Save download queue to disk. This allows to reload it on next start (yes, no) SaveQueue=yes # Reload download queue on start, if it exists (yes, no) ReloadQueue=yes # Reuse articles saved in temp-directory from previous program start (yes, no) # This allows to continue download of file, if program was exited before # the file was completed. ContinuePartial=yes # Create subdirectory with category-name in destination-directory (yes, no) AppendCategoryDir=yes # Create subdirectory with nzb-filename in destination-directory (yes, no) AppendNzbDir=yes # How often incoming-directory (option "NzbDir") must be checked for new # nzb-files, in seconds. # Value "0" disables the check. NzbDirInterval=5 # How old nzb-file should at least be for it to be loaded to queue, in seconds. # Nzbget checks if nzb-file was not modified in last few seconds, defined by # this option. That safety interval prevents the loading of files, which # were not yet completely saved to disk, for example if they are still being # downloaded in web-browser. NzbDirFileAge=20 # Check for duplicate files (yes, no) # If this option is enabled the program checks by adding of a new nzb-file: # 1) if nzb-file contains duplicate entries. This check aims on detecting # of reposted files (if first file was not fully uploaded); # If the program find two files with identical names, only the # biggest of these files will be added to queue; # 2) if download queue already contains file with the same name; # 3) if destination file on disk already exists. # In last two cases: if the file exists it will not be added to queue; # If this option is disabled, all files are downloaded and duplicate files # are renamed to "filename_duplicate1". # Existing files are never deleted or overwritten. DupeCheck=no # Visibly rename broken files on download appending "_broken" (yes, no) # Do not activate this option if par-check is enabled. RenameBroken=no # Decode articles (yes, no) # yes - decode articles using internal decoder (supports yEnc and UU formats). # no - the articles will not be decoded and joined. External programs # (like "uudeview") can be used to decode and join downloaded articles. # Also useful for debugging to look at article's source text. Decode=yes # Write decoded articles directly into destination output file (yes, no) # With this option enabled the program at first creates the output # destination file with required size (total size of all articles), # then writes on the fly decoded articles directly to the file # without creating of any temporary files, even for decoded articles. # This may results in major performance improvement, but this higly # depends on OS and filesystem used. # Can improve performance on a very fast internet connections, # but you need to test if it works in your case. # INFO: Tests showed, that on Linux with EXT3-partition activating of # this option results in up to 20% better performance, but on Windows with NTFS # or Linux with FAT32-partitions the performance were decreased. # The possible reason is that on EXT3-partition Linux can create large files # very fast (if the content of file does not need to be initialized), # but Windows on NTFS-partition and also Linux on FAT32-partition need to # initialize created large file with nulls, resulting in a big performace # degradation. # NOTE: for testing try to download few big files (with total size 500-1000MB) # and measure required time. Do not rely on the program's speed indicator. # NOTE: if both options "DirectWrite" and "ContinuePartial" are enabled, # the program will create empty articles-files in temp-directrory. They # are used to continue download of file on a next program start. To minimize # disk-io it is recommended to disable option "ContinuePartial", if # "DirectWrite" is enabled. Especially on a fast connections (where you # would want to activate "DirectWrite") it should not be a problem to # redownload the interrupted file. DirectWrite=no # Check CRC of downloaded and decoded articles (yes, no) # Normally this option should be enabled for better detecting of download # errors. However checking of CRC needs about the same CPU time as # decoding of articles. On a fast connections with slow CPUs disabling of # CPU-check may slightly improve performance (if CPU is a limiting factor). CrcCheck=yes # How much retries should be attempted if a download error occurs Retries=4 # Set the interval between retries, in seconds RetryInterval=10 # Redownload article if CRC-check fails (yes, no) # Helps to minimize number of broken files, but may be effective # only if you have multiple download servers (even from the same provider # but from different locations (e.g. europe, usa)). # In any case the option increases your traffic. # For slow connections loading of extra par-blocks may be more effective # The option "CrcCheck" must be enabled for option "RetryOnCrcError" to work. RetryOnCrcError=no # Set connection timeout, in seconds ConnectionTimeout=60 # Timeout until a download-thread is killed, in seconds # This can help on hanging downloads, but is dangerous. # Do not use small values! TerminateTimeout=600 # Set the (approximate) maximum number of allowed threads. # Sometimes under certain circumstances the program may create way to many # download threads. Most of them are in wait-state. That is not bad, # but threads are usually a limited resource. If a program creates to many # of them, operating system may kill it. The option prevents that. # NOTE 1: the number of threads is not the same as the number of connections # opened to NNTP-servers. Do not use the option to limit the # number of connections. Use the appropriate options # instead. # NOTE 2: the actual number of created threads can be slightly larger as # defined by the option. Important threads may be created even if the # number of threads is exceeded. The option prevents only the creation of # additional download threads. # NOTE 3: in most cases you should leave the default value "100" unchanged. # However you may increase that value if you need more than 90 connections # (that's very unlikely) or decrease the value if the OS does not allow so # many threads. But the most OSes should not have problems with 100 threads. ThreadLimit=50 # Set the maximum download rate in KB/s, "0" means no speed control DownloadRate=0 # Set the size of memory buffer used by writing the articles, in Bytes. # Bigger values decrease disk-io, but increase memory usage. # Value "0" causes the OS-dependend default value to be used. # With value "-1" (which means "max/auto") the program sets the size of # buffer according to the size of current article (typically less than 500K). # NOTE: the value must be written in bytes, do not use postfixes "K" or "M". # NOTE: to calculate the memory usage multiply WriteBufferSize by max number # of connections, configured in section "NEWS-SERVERS". # NOTE: typical article's size not exceed 500000 bytes, so using bigger values # (like several megabytes) will just waste memory. # NOTE: for desktop computers with large amount of memory value "-1" (max/auto) # is recommended, but for computers with very low memory (routers, NAS) # value "0" (default OS-dependend size) could be better alternative. # NOTE: write-buffer is managed by OS (system libraries) and therefore # the effect of the option is highly OS-dependend. WriteBufferSize=0 # Pause if disk space gets below this value, in MegaBytes. # Value "0" disables the check. # Only the disk space on the drive with "DestDir" is checked. # The drive with "TempDir" is not checked. DiskSpace=250 ############################################################################## ### LOGGING ### # Create log file (yes, no) CreateLog=yes # Delete log file upon server start (only in server-mode) (yes, no) ResetLog=no # How various messages must be printed (screen, log, both, none) # Debug-messages can be printed only if the programm was compiled in # debug-mode: "./configure --enable-debug" ErrorTarget=both WarningTarget=both InfoTarget=both DetailTarget=both DebugTarget=both # Number of messages stored in buffer and available for remote clients LogBufferSize=1000 # Create a log of all broken files (yes ,no) # It is a text file placed near downloaded files, which contains # the names of broken files CreateBrokenLog=yes # Create memory dump (core-file) on abnormal termination (POSIX only) (yes, no) # Core-files are very helpful for debugging. # NOTE: core-files may contain sensible data, like your login/password to # newsserver etc. DumpCore=yes # See also option "logfile" in secion "PATHS" ############################################################################## ### DISPLAY ### # Set screen-outputmode (loggable, colored, curses) # loggable - only messages will be printed to standard output; # colored - prints messages (with simple coloring for messages categories) # and download progress info; uses escape-sequenses to move cursor; # curses - advanced interactive iterface with the ability to edit # download queue and variaous output options; # OutputMode=curses # changed above (outlined) OutputMode=loggable # Shows NZB-Filename in file list in curses-outputmode (yes, no) # This option controls the initial state of curses-frontend, # it can be switched on/off in run-time with Z-key CursesNzbName=yes # Show files in groups (NZB-files) in queue list in curses-outputmode (yes, no) # This option controls the initial state of curses-frontend, # it can be switched on/off in run-time with G-key CursesGroup=no # Show timestamps in message list in curses-outputmode (yes, no) # This option controls the initial state of curses-frontend, # it can be switched on/off in run-time with T-key CursesTime=no # Update interval for Frontend-output in MSec (min value 25) # Bigger values reduce CPU usage (especially in curses-outputmode) # and network traffic in remote-client mode UpdateInterval=200 ############################################################################## ### CLIENT/SERVER COMMUNICATION ### # Set the IP on which the server listen and which client uses to contact # the server. It could be dns-hostname or ip-address (more effective since # does not require dns-lookup). # If you want the server to listen to all interfaces, use "0.0.0.0" ServerIp=127.0.0.1 # Set the port which the server & client use ServerPort=6789 # Set the password needed to succesfully queue a request ServerPassword=tegbzn6789 # See also option "logbuffersize" in section "LOGGING" ############################################################################## ### PAR CHECK/REPAIR AND POSTPROCESSING ### # Reload Post-processor-queue on start, if it exists (yes, no) # For this option to work the options "SaveQueue" and "ReloadQueue" must # be also enabled. ReloadPostQueue=yes # How many par2-files to load (none, all, one) # none - all par2-files must be automatically paused # all - all par2-files must be downloaded # one - only one main par2-file must be dowloaded and other must be paused # Paused files remain in queue and can be unpaused by parchecker when needed LoadPars=one # Automatic par-verification (yes, no) # To download only needed par2-files (smart par-files loading) set also # the option "loadpars" to "one". If option "loadpars" is set to "all", # all par2-files will be downloaded before verification and repair starts. # The option "renamebroken" must be set to "no", otherwise the par-checker # may not find renamed files and fail ParCheck=yes # modified 12-10-08 14.28 to test alexandrei binary --> 16.11 to yes # Automatic par-repair (yes, no) # If option "parcheck" is enabled and "parrepair" is not, the program # only verifies downloaded files and downloads needed par2-files, but does # not start repair-process. This is useful if the server does not have # enough CPU power, since repairing of large files may take too much # resources and time on a slow computers. # This option has effect only if the option "parcheck" is enabled ParRepair=yes # modified 12-10-2008 14.21 to yes --> or crash ! # Use only par2-files with matching names (yes, no) # If par-check needs extra par-blocks it searches for par2-files # in download queue, which can be unpaused and used for restore. # These par2-files should have the same base name as the main par2-file, # currently loaded in par-checker. Sometimes extra par files (especially if # they were uploaded by a different poster) have not matching names. # Normally par-checker does not use these files, but you can allow it # to use these files by setting "strictparname" to "no". # This has however a side effect: if NZB-file contains more than one collection # of files (with different par-sets), par-checker may download par-files from # a wrong collection. This increases you traffic (but not harm par-check). # NOTE: par-checker always uses only par-files added from the same NZB-file # and the option "strictparname" does not change this behavior StrictParName=yes # Pause download queue during check/repair (yes, no) # Enable the option to give CPU more time for par-check/repair. That helps # to speed up check/repair on slow CPUs with fast connection (e.g. NAS-devices). # NOTE: if parchecker needs additional par-files it temporary unpauses queue # NOTE: See also option . ParPauseQueue=yes # Cleanup download queue after successful check/repair (yes, no) # Enable this option for automatic deletion of unneeded (paused) par-files # from download queue after successful check/repair. # NOTE: before cleaning up the program checks if all paused files are par-files. # If there are paused non-par-files (this means that you have paused them # manually), the cleanup will be skipped for this collection. ParCleanupQueue=yes # Delete source nzb-file after successful check/repair (yes, no) # Enable this option for automatic deletion of nzb-file from incoming directory # after successful check/repair. NzbCleanupDisk=no # Set path to program, that must be executed after the download of nzb-file # or one collection in nzb-file (if par-check enabled and nzb-file contains # multiple collections; see note below for the definition of "collection") # is completed and possibly par-checked/repaired. # Arguments passed to that program: # 1 - path to destination dir, where downloaded files are located; # 2 - name of nzb-file processed; # 3 - name of par-file processed (if par-checked) or empty string (if not); # 4 - result of par-check: # 0 - not checked: par-check disabled or nzb-file does not contain any # par-files; # 1 - checked and failed to repair; # 2 - checked and sucessfully repaired; # 3 - checked and can be repaired but repair is disabled; # 5 - state of nzb-job: # 0 - there are more collections in this nzb-file queued; # 1 - this was the last collection in nzb-file; # 6 - indication of failed par-jobs for current nzb-file: # 0 - no failed par-jobs; # 1 - current par-job or any of the previous par-jobs for the # same nzb-files failed; # 7 - category assigned to nzb-file (can be empty string). # # NOTE: The parameter "state of nzb-job" is very important and MUST be checked # even in the simplest scripts. # If par-check is enabled and nzb-file contains more than one collection # of files the postprocess-program is called after each collection is completed # and par-checked. If you want to unpack files or clean up the directory # (delete par-files, etc.) there are two possibilities, when you can do this: # 1) you parse the "name of par-file processed" to find out the base name # of collection and clean up only files from this collection (not reliable, # because par-files sometimes have different names than rar-files); # 2) or you just check the parameters "state of nzb-job" and "indication of # failed par-jobs" and do the processing, only if they are set to "1" # (which means, that this was the last collection in nzb-file and all files # are now completed) and to "0" (no failed par-jobs) respectively; # NOTE 2: if the option "ParCheck" is disabled nzbget calls PostProcess # only once, not after every collection, because the detection of collection # is disabled in this case; # NOTE 3: the term "collection" in the above description actually means # "par-set". To determine what "collections" are present in nzb-file nzbget # looks for par-sets. If any collection of files within nzb-file does # not have any par-files, this collection will not be detected. # For example, for nzb-file containing three collections but only two par-sets, # the postprocess will be called two times - after processing of each par-set. # NOTE 4: an example script for unrarring is provided within distribution # in file # NOTE 5: do not forget to uncomment the next line PostProcess=/ffp/etc/postprocess.sh # Allow multiple post-processing for the same nzb-file (yes,no) # After the post-processing (par-check and call of a postprocess-script) is # completed, nzbget adds the nzb-file to a list of completed-jobs. The nzb-file # stays in the list until the last file from that nzb-file is deleted from # the download queue (it occurs straight away if the par-check was successful # and the option "ParCleanupQueue" is enabled). # That means, if a paused file from a nzb-collection becomes unpaused # (manually or from a post-process-script) after the collection was allready # postprocessed nzbget will not post-process nzb-file again. # This prevents the unwanted multiple post-processings of the same nzb-file. # But it might be needed if the par-check/-repair are performed not directly # by nzbget but from a post-process-script. # NOTE 1: enable this option only if you were advised to do that by the author # of the post-process-script # NOTE 2: by enabling "AllowReProcess" you should disable the option "ParCheck" # to prevent multiple par-checking AllowReProcess=no # Set the default message-kind for output received from postprocess-script # (None, Detail, Info, Warning, Error, Debug). # NZBGet checks if the line written by the script to stdout or stderr starts # with special character-sequence, determining the message-kind, e.g.: # [INFO] bla-bla # [DETAIL] bla-bla # [WARNING] bla-bla # [ERROR] bla-bla # [DEBUG] bla-bla # If the message-kind was detected the text is added to log with detected type. # Otherwise the message becomes the default kind, specified in this option. ProcessLogKind=Detail # Pause download queue during executing of postprocess-script (yes, no) # Enable the option to give CPU more time for postprocess-script. That helps # to speed up postprocess on slow CPUs with fast connection (e.g. NAS-devices). # NOTE: See also option . PostPauseQueue=no ############################################################################## ### PERFORMANCE ### # On a very fast connection and slow CPU and/or drive the following # settings may improve performance: # 1) Disable par-checking and -repairing ("ParCheck=no"). VERY important, # because par-checking/repairing needs a lot of CPU-power and # significantly increases disk usage; # 2) Try to activate option "DirectWrite" ("DirectWrite=yes"); # 3) Disable option "CrcCheck" ("CrcCheck=no"); # 4) Disable option "ContinuePartial" ("ContinuePartial=no"); # 5) Do not limit download rate ("DownloadRate=0"), because the bandwidth # throttling eats CPU time; # 6) Disable logging for info- and debug-messages ("InfoTarget=none", # "DebugTarget=none"); # 7) Run the program in daemon (Posix) or service (Windows) mode and use # remote client for short periods of time needed for controlling of # download process on server. Daemon/Service mode eats less CPU # resources due to not updating of output on screen. # 8) Increase the value of option "WriteBufferSize" or better set it to # "-1" (max/auto) if you have spare 5-20 MB of memory.