NZBGet

Usenet downloader.

Ansible Role: nzbget

You can copy your existing configuration to nzbget_config directory adjusting for paths.

  • The UID/GID should be set to a user/group that has access to your media. All media clients should run under the same user to run correctly.

  • Your downloader will report the download path mapped in the downloader service. You need to map this exact path in Radarr for it to be able to post-process downloads properly.

# Nzbget
Nzbget installation from public release binary.

## Requirements
No additional requirements.

## Role Variables
Settings have been throughly documented for usage.

[defaults/main.yml](https://github.com/r-pufky/ansible_nzbget/blob/main/defaults/main/main.yml).

### Ports
All ports and protocols have been defined for the role.

Hosts should only define firewall rules for ports they need.

[defaults/ports.yml](https://github.com/r-pufky/ansible_nzbget/blob/main/defaults/main/ports.yml).

## Dependencies
N/A

## Example Playbook
host_vars/nzbget.example.com/vars/nzbget.yml
``` yaml
nzbget_main_dir: '/data/nzbget'
nzbget_news_servers:
  - id: 1
    active:      'yes'
    name:        ''
    level:       0
    optional:    'no'
    group:       0
    srv_host:    'my.newsserver.com'
    srv_port:    119
    username:    '{{ vault_nzbget_news_user }}'
    password:    '{{ vault_nzbget_news_pass }}'
    join_group:  'no'
    encryption:  'no'
    cipher:      ''
    connections: 4
    retention:   0
    ip_version:  'auto'
    notes:       ''

nzbget_control_username: '{{ vault_nzbget_user }}'
nzbget_control_password: '{{ vault_nzbget_pass }}'
```

site.yml
``` yaml
- name:   'nzbget server'
  hosts:  'nzbget.example.com'
  become: true
  roles:
     - 'r_pufky.nzbget'
```

## Issues
Create a bug and provide as much information as possible.

Associate pull requests with a submitted bug.

## License
[AGPL-3.0 License](https://github.com/r-pufky/ansible_nzbget/blob/main/LICENSE)

## Author Information
https://keybase.io/rpufky

None

Role Details: Updated: 2022-10-09 galaxy source service docs

Ports

---
###############################################################################
# Ports Configuration
###############################################################################
# Ports should be managed externally via an OS role.
#
# Reference:
# * https://docs.ansible.com/ansible/latest/collections/community/general/ufw_module.html

ports:
  - {proto: 'tcp', from_ip: 'any', to_port: 6789, direction: 'in', comment: 'nzbget http'}
  - {proto: 'tcp', from_ip: 'any', to_port: 6791, direction: 'in', comment: 'nzbget https'}

Defaults

---
###############################################################################
# nzbget Role Configuration
###############################################################################
# User that nzbget will run under. Assumes externally managed.
nzbget_user:  'media'
nzbget_group: 'media'

# Create 'media' user if not detected? See: vars/main.yml.
nzbget_create_user: false

# Installation directory
nzbget_dir: '/etc/nzbget'

###############################################################################
# nzbget nzbget.conf configuration
###############################################################################
# nzbget.conf settings

nzbget_main_dir:        '~/downloads'
nzbget_dest_dir:        '${MainDir}/dst'
nzbget_inter_dir:       '${MainDir}/inter'
nzbget_nzb_dir:         '${MainDir}/nzb'
nzbget_queue_dir:       '${MainDir}/queue'
nzbget_temp_dir:        '${MainDir}/tmp'
nzbget_web_dir:         ''
nzbget_script_dir:      '${MainDir}/scripts'
nzbget_lock_file:       '${MainDir}/nzbget.lock'
nzbget_log_file:        '${MainDir}/nzbget.log'
nzbget_config_template: ''
nzbget_required_dir:    ''
nzbget_cert_store:      ''

# Default example news server
nzbget_news_servers:
  - id: 1
    active:      'yes'
    name:        ''
    level:       0
    optional:    'no'
    group:       0
    # Ansible has 'port' as RESERVED keyword.
    # Reference: https://github.com/ansible/ansible/pull/69585
    srv_host:    'my.newsserver.com'
    srv_port:    119
    username:    'user'
    password:    'pass'
    join_group:  'no'
    encryption:  'no'
    cipher:      ''
    connections: 4
    retention:   0
    ip_version:  'auto'
    notes:       ''

nzbget_control_ip:          '0.0.0.0'
nzbget_control_port:        '6789' # http port
nzbget_control_username:    'nzbget'
nzbget_control_password:    'tegbzn6789'
nzbget_restricted_username: ''
nzbget_restricted_password: ''
nzbget_add_username:        ''
nzbget_add_password:        ''
nzbget_form_auth:           'no'
nzbget_secure_control:      'no'
nzbget_secure_port:         '6791' # https port
nzbget_secure_cert:         ''
nzbget_secure_key:          ''
nzbget_authorized_ip:       ''
nzbget_cert_check:          'no'
nzbget_update_check:        'stable'
nzbget_daemon_username:     'root'
nzbget_u_mask:              1000

# Default example categories
nzbget_categories:
  - id: 1
    name:       'Movies'
    dest_dir:   ''
    unpack:     'yes'
    extensions: ''
    aliases:    ''
  - id: 2
    name:       'Series'
    dest_dir:   ''
    unpack:     ''
    extensions: ''
    aliases:    ''
  - id: 3
    name:       'Music'
    dest_dir:   ''
    unpack:     ''
    extensions: ''
    aliases:    ''
  - id: 4
    name:       'Software'
    dest_dir:   ''
    unpack:     ''
    extensions: ''
    aliases:    ''

# Default example feeds
#nzbget_feeds:
#   - id: 1
#     name:       'my feed'
#     url:        ''
#     filter:     ''
#     interval:   15
#     backlog:    'yes'
#     pause_nzb:  'no'
#     category:   ''
#     priority:   0
#     extensions: ''

nzbget_append_category_dir: 'yes'
nzbget_nzb_dir_interval:    5
nzbget_nzb_dir_file_age:    60
nzbget_dupe_check:          'yes'
nzbget_flush_queue:         'yes'
nzbget_continue_partial:    'yes'
nzbget_propagation_delay:   0
nzbget_article_cache:       0
nzbget_direct_write:        'yes'
nzbget_write_buffer:        0
nzbget_file_naming:         'auto'
nzbget_reorder_files:       'yes'
nzbget_post_strategy:       'balanced'
nzbget_disk_space:          250
nzbget_nzb_cleanup_disk:    'yes'
nzbget_keep_history:        30
nzbget_feed_history:        7
nzbget_skip_write:          'no'
nzbget_raw_article:         'no'
nzbget_article_retries:     3
nzbget_article_interval:    10
nzbget_article_timeout:     60
nzbget_url_retries:         3
nzbget_url_interval:        10
nzbget_url_timeout:         60
nzbget_remote_timeout:      90
nzbget_download_rate:       0
nzbget_url_connections:     4
nzbget_url_force:           'yes'
nzbget_monthly_quota:       0
nzbget_quota_start_day:     1
nzbget_daily_quota:         0
nzbget_write_log:           'append'
nzbget_rotate_log:          3
nzbget_error_target:        'both'
nzbget_warning_target:      'both'
nzbget_info_target:         'both'
nzbget_detail_target:       'log'
nzbget_debug_target:        'log'
nzbget_log_buffer:          1000
nzbget_nzb_log:             'yes'
nzbget_crash_trace:         'yes'
nzbget_crash_dump:          'no'
nzbget_time_correction:     0
nzbget_output_mode:         'curses'
nzbget_curses_nzb_name:     'yes'
nzbget_curses_group:        'no'
nzbget_curses_time:         'no'
nzbget_update_interval:     200

# Default example tasks
#nzbget_tasks:
#   - id: 1
#     time:      '08:00'
#     week_days: '1-7'
#     command:   'PauseDownload'
#     param:     ''
#   - id: 2
#     time:      '20:00'
#     week_days: '1-7'
#     command:   'UnpauseDownload'
#     param:     ''

nzbget_crc_check:           'yes'
nzbget_par_check:           'auto'
nzbget_par_repair:          'yes'
nzbget_par_scan:            'extended'
nzbget_par_quick:           'yes'
nzbget_par_buffer:          16
nzbget_par_threads:         0
nzbget_par_ignore_ext:      '.sfv, .nzb, .nfo'
nzbget_par_rename:          'yes'
nzbget_rar_rename:          'yes'
nzbget_direct_rename:       'no'
nzbget_health_check:        'park'
nzbget_par_time_limit:      0
nzbget_par_pause_queue:     'no'
nzbget_unpack:              'yes'
nzbget_direct_unpack:       'no'
nzbget_unpack_pause_queue:  'no'
nzbget_unpack_cleanup_disk: 'yes'
# default: unrar (binary install uses pre-package unrar in main dir)
nzbget_unrar_cmd:           '${MainDir}/unrar'
# default: 7z (binary install uses pre-package 7z in main dir)
nzbget_seven_zip_cmd:       '${MainDir}/7z'
nzbget_ext_cleanup_disk:    '.par2, .sfv'
nzbget_unpack_ingore_ext:   '.cbr'
nzbget_unpack_pass_file:    ''
nzbget_extensions:          ''
nzbget_script_order:        ''
nzbget_script_pause_queue:  'no'
nzbget_shell_override:      ''
nzbget_event_interval:      10