Skip to content

NgPost conf

Hydro74000 edited this page May 31, 2026 · 2 revisions
ngPost

ngPost.conf Reference

Languages: English | Français

This page lists the configuration keys recognized by ngPost in ngPost.conf. Key names are case-insensitive.

See Configuration for the default file location and migration from legacy paths.

Minimal example

lang = EN
nzbPath = /data/nzbs
GROUPS = alt.binaries.test
GROUP_POLICY = EACH_POST
POST_DB = /data/ngPost_history.sqlite

[server]
host = news.example.com
port = 563
ssl = true
user = myUser
pass = myPass
connection = 20
enabled = true
nzbCheck = false
useVpn = false

Syntax rules

  • Use KEY = value.
  • Empty lines and lines starting with # or / are ignored.
  • Booleans accept true, on or 1; any other value is treated as false for most boolean keys.
  • You can define several NZB_POST_CMD lines: each line adds one command executed after each post.
  • Repeat [server] to configure several NNTP providers.
  • Repeat [vpn_profile] to configure several VPN profiles.

General options

Key Example Purpose
lang lang = EN Application language. Supported values include EN, FR, ES, DE, NL, PT, ZH.
nzbPath nzbPath = /data/nzbs Default output folder for generated NZB files. CLI -o overrides it.
inputDir inputDir = /data/incoming Default folder opened by the GUI file picker.
GROUPS GROUPS = alt.binaries.test,alt.binaries.misc Comma-separated posting groups.
GROUP_POLICY GROUP_POLICY = EACH_POST Group distribution policy: ALL, EACH_POST, EACH_FILE.
FROM FROM = poster@example.com Fixed poster email. If missing, ngPost can generate one.
GEN_FROM GEN_FROM = true Generate a new random poster for each post in auto/monitor mode.
thread thread = 4 Number of posting threads. By default ngPost uses available CPU cores.
DISP_PROGRESS DISP_PROGRESS = BAR CLI progress display: NONE, BAR, or FILES.
msg_id msg_id = ngPost Message-ID signature after the @.
article_size article_size = 716800 Article size in bytes.
retry retry = 5 Retry count for failed articles.
obfuscate obfuscate = article Obfuscate article subjects with UUIDs. Keep the NZB.
PROXY_SOCKS5 PROXY_SOCKS5 = user:pass@host:1080 SOCKS5 proxy for network traffic.
SHUTDOWN_CMD SHUTDOWN_CMD = sudo -n shutdown -h now Command executed when the queue is finished.
NZB_UPLOAD_URL NZB_UPLOAD_URL = https://example/upload Upload generated NZBs to http, https, or ftp.
NZB_POST_CMD NZB_POST_CMD = script "__nzbPath__" Command run after each post. Define several NZB_POST_CMD lines to run several commands.
NZB_RM_ACCENTS NZB_RM_ACCENTS = true Remove accents and special characters from NZB filenames.
AUTO_CLOSE_TABS AUTO_CLOSE_TABS = true GUI only: close successful quick-post tabs automatically.
CHECK_FOR_UPDATES CHECK_FOR_UPDATES = true Check GitHub once a day for a new ngPost release.
LAST_UPDATE_CHECK LAST_UPDATE_CHECK = 0 Internal timestamp managed by ngPost. Do not edit manually.
LOG_IN_FILE LOG_IN_FILE = true GUI only: write logs to ngPost.log for debugging.

Monitoring and automation

Key Example Purpose
MONITOR_NZB_FOLDERS MONITOR_NZB_FOLDERS = true Store NZBs from each monitored folder in its own subfolder under nzbPath.
MONITOR_EXTENSIONS MONITOR_EXTENSIONS = mkv,mp4,iso Only monitor files with these extensions. No dots.
MONITOR_IGNORE_DIR MONITOR_IGNORE_DIR = true Ignore newly arrived folders in monitor mode.
MONITOR_SEC_DELAY_SCAN MONITOR_SEC_DELAY_SCAN = 5 Wait 1-120 seconds for a new file/folder size to stabilize before posting.
RESUME_WAIT RESUME_WAIT = 30 Seconds before automatic resume after network loss. Minimum effective value is 30.
NO_RESUME_AUTO NO_RESUME_AUTO = true Disable automatic resume on network loss.
SOCK_TIMEOUT SOCK_TIMEOUT = 30 Socket inactivity timeout in seconds. Minimum effective value is 5.
PREPARE_PACKING PREPARE_PACKING = true Prepare packing of the next queued post while uploading the current one.

History

Key Example Purpose
POST_DB POST_DB = /data/ngPost_history.sqlite Structured SQLite history database path. This is the current history backend.
HISTORY_STORE_PASSWORDS HISTORY_STORE_PASSWORDS = false Store archive passwords in the SQLite history.
POST_HISTORY POST_HISTORY = /data/ngPost_history.csv Legacy CSV history path. Kept for import/backward compatibility.
FIELD_SEPARATOR FIELD_SEPARATOR = ; Field separator for legacy CSV history.

NFO options

Key Example Purpose
KEEP_NFO_EXTENSION KEEP_NFO_EXTENSION = true Keep .nfo visible when filenames are obfuscated.
NZB_COPY_NFO NZB_COPY_NFO = true Copy the original .nfo next to the generated NZB.
AUTO_INCLUDE_NFO AUTO_INCLUDE_NFO = true Auto/monitor mode: include a sibling .nfo in the same post.

Compression and parity

Key Example Purpose
PACK PACK = COMPRESS, GEN_NAME, GEN_PASS, GEN_PAR2 Default packing recipe used by GUI and CLI --pack. Allowed keywords: COMPRESS, GEN_NAME, GEN_PASS, GEN_PAR2.
AUTO_COMPRESS AUTO_COMPRESS = true Legacy key. Use PACK instead.
TMP_DIR TMP_DIR = /tmp Temporary folder for archives and par2 files. Must be writable.
TMP_RAM TMP_RAM = /mnt/ngPost_tmpfs Optional tmpfs/RAM-backed temporary folder when available.
TMP_RAM_RATIO TMP_RAM_RATIO = 1.1 Required free-space ratio for TMP_RAM. Valid range: 1.1 to 2.0.
RAR_PATH RAR_PATH = /usr/bin/rar Path to rar or 7z. AppImage/Windows builds may auto-detect bundled tools.
RAR_EXTRA RAR_EXTRA = -ep1 -m0 -k -rr5p Extra options passed to RAR/7z.
RAR_SIZE RAR_SIZE = 42 Archive volume size in MB. 0 means no split.
RAR_MAX RAR_MAX = 99 Maximum number of archive volumes; ngPost adjusts volume size if needed.
RAR_PASS RAR_PASS = myPassword Fixed archive password for compressed posts.
KEEP_RAR KEEP_RAR = true Keep generated archives/par2 after a successful post.
RAR_NO_ROOT_FOLDER RAR_NO_ROOT_FOLDER = true Remove the root parent folder when compressing folders.
PAR2_PCT PAR2_PCT = 8 Par2 redundancy percentage. 0 disables par2 generation.
PAR2_PATH PAR2_PATH = /usr/local/bin/parpar Path to par2/ParPar/MultiPar.
PAR2_ARGS PAR2_ARGS = -s1M --auto-slice-size -r1n*0.6 -m2048M -p1l --progress stdout -q Fixed arguments for the par2-compatible tool.
LENGTH_NAME LENGTH_NAME = 22 Length of generated random archive names.
LENGTH_PASS LENGTH_PASS = 15 Length of generated random archive passwords.

Server sections

Each [server] block defines one NNTP server.

[server]
host = news.example.com
port = 563
ssl = true
user = myUser
pass = myPass
connection = 20
enabled = true
nzbCheck = false
useVpn = true
Key Purpose
host NNTP server hostname or IP.
port NNTP port. Common values: 119, 563, 443.
ssl Enable TLS/SSL.
user NNTP username.
pass NNTP password.
connection Number of NNTP connections for this server.
enabled Enable/disable this server for posting.
nzbCheck Use this server for NZB availability checks.
useVpn Route this server through the active VPN profile.

VPN options

Modern VPN configuration uses VPN_AUTO_CONNECT, VPN_ACTIVE_PROFILE, and one or more [vpn_profile] sections.

VPN_AUTO_CONNECT = true
VPN_ACTIVE_PROFILE = Mullvad-NL

[vpn_profile]
name = Mullvad-NL
backend = wireguard
config_file = mullvad-nl.conf
has_auth = false
Key Scope Purpose
VPN_AUTO_CONNECT global Start the active VPN profile automatically when a job needs it.
VPN_ACTIVE_PROFILE global Name of the active VPN profile.
VPN_BACKEND global legacy Legacy single-profile backend, openvpn or wireguard; kept for migration.
VPN_CONFIG_PATH global legacy Legacy single-profile config path; kept for migration.
name [vpn_profile] Profile name.
backend [vpn_profile] openvpn or wireguard.
config_file [vpn_profile] Imported config filename stored under the config vpn/ folder.
has_auth [vpn_profile] Whether the OpenVPN profile requires username/password credentials.

Post-command placeholders

NZB_POST_CMD can use these placeholders:

If several NZB_POST_CMD lines are present, ngPost runs all of them after each post, in the order they appear in the configuration file.

Placeholder Meaning
__nzbPath__ Full path of the written NZB file.
__nzbName__ NZB name without extension, based on the original source name.
__rarName__ Archive name, especially useful when obfuscating.
__rarPass__ Archive password.
__sizeInByte__ Post size before yEnc encoding.
__groups__ Comma-separated group list.
__nbFiles__ Number of files in the post.
__nbArticles__ Number of articles.
__nbArticlesFailed__ Number of articles that failed to post.

Example:

NZB_POST_CMD = curl -X POST -F "file=@__nzbPath__" -F "api=12345" https://example/post-api
NZB_POST_CMD = ~/scripts/postNZB.sh "__nzbPath__" "__groups__" __rarName__ __rarPass__

Practical example: copy the NZB to an archive folder, then notify a custom script.

NZB_POST_CMD = cp "__nzbPath__" "/data/archive-nzbs/"
NZB_POST_CMD = ~/scripts/notify-post.sh "__nzbName__" "__groups__" "__rarName__" "__rarPass__"

In this example, both commands run after every post. The first command archives the generated NZB file; the second calls a script with the post name, groups, archive name and password.

Complete examples

Auto-pack with randomized archive

nzbPath = /data/nzbs
GROUPS = alt.binaries.test
PACK = COMPRESS, GEN_NAME, GEN_PASS, GEN_PAR2
TMP_DIR = /data/tmp
RAR_PATH = /usr/bin/rar
RAR_SIZE = 100
PAR2_PCT = 8
LENGTH_NAME = 22
LENGTH_PASS = 15

Monitor only video files

MONITOR_EXTENSIONS = mkv,mp4,avi
MONITOR_IGNORE_DIR = true
MONITOR_SEC_DELAY_SCAN = 10
MONITOR_NZB_FOLDERS = true

Use a VPN only for one server

VPN_AUTO_CONNECT = true
VPN_ACTIVE_PROFILE = Privacy

[vpn_profile]
name = Privacy
backend = openvpn
config_file = privacy.ovpn
has_auth = true

[server]
host = news.example.com
port = 563
ssl = true
user = myUser
pass = myPass
connection = 20
enabled = true
useVpn = true

Clone this wiki locally