gonzb

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2026 License: Apache-2.0

README

GoNZB

A simple, high-performance Usenet downloader written in Go.

This is a work in progress and a personal project to learn more about Usenet clients and the NNTP protocol. Keeping a focus on simplicity.

Features

  • CLI Based: Simple CLI based NZB downloader with a low-memory footprint
  • Connection Pooling: Pools providers to concurrently take advantage of max connections across all providers
  • PAR2 Support
  • Incomplete/Complete Downloads folders
  • Archive file (RAR, ZIP, 7Z) support

Possible Future Features

  • Web UI
  • SQLite - Provider configs, partial download repairs

Configuration

GoNZB uses a config.yaml file to manage providers, download path, and log infomation.

cp config.yaml.example config.yaml

Configuration Reference

Section Field Description
servers id A unique nickname for the server (e.g., "NewsHosting").
host The NNTP server address (e.g., news.example.com).
port Connection port. Usually 119 (Plain) or 563 (TLS).
username Your Usenet provider username.
password Your Usenet provider password.
tls Enables encrypted communication. Recommended for privacy.
max_connections The maximum threads allowed by your provider.
priority Lower numbers are used first. Use higher numbers for backup/block accounts.
download out_dir The directory where finished downloads and .part files are stored.
completed_dir The directory where files are placed after post-processing
cleanup_extensions A list of file extensions to delete after processing (e.g., [".nfo", ".rar"])
log path Path to the log file (e.g., gonzb.log).
level Logging verbosity: debug, info, warn, or error.
include_stdout If true, logs will appear in your terminal in addition to the log file.

Installation / Usage

make build
./bin/gonzb --file my_file.nzb

Docker

Docker Build
docker build \
  --build-arg VERSION=$(git describe --tags --always) \
  --build-arg BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
  -t gonzb:latest .
Docker Usage

Map config.yaml and your downloads directory inside the container.

docker run --rm it \ 
    -v $(pwd)/config.yaml:/config/config.yaml
    -v $(pwd)/downloads:/downloads \
    gonzb:latest --file /downloads/test_file.nzb

Directories

Path Synopsis
cmd
gonzb command
internal
app
nzb

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL