NNTmux
Docker app from RapidMark's Repository
Overview
Readme
View on GitHubNNTmux for Unraid
Single-container build of NNTmux. The upstream app image is built as-is, then MariaDB, Redis and Manticore are added and everything runs under s6-overlay.
| service | what |
|---|---|
| mariadb | MariaDB 11.4, bound to 127.0.0.1 |
| redis | cache, sessions, Horizon queues |
| manticore | search engine |
| web | FrankenPHP on port 80 |
| horizon | queue workers |
| scheduler | artisan schedule:work |
| indexer | tmux processing engine, START_INDEXER=false to skip it |
Tips and lessons learned (PreDB, hashed names, threads, backfill): unraid-notes/NNTmux
Volumes
/configholds.env, MariaDB, Redis, Manticore, Laravel storage and the install lock./dataholdsnzb/andcovers/, the parts that grow.
First run
The container refuses to start without ADMIN_USER, ADMIN_EMAIL, ADMIN_PASS (12+ chars), NNTP_SERVER, NNTP_USERNAME and NNTP_PASSWORD.
It then writes /config/.env with an APP_KEY and a random DB password, creates the database and admin user, builds the Manticore tables and drops /config/install/install.lock.
Expect a few minutes.
Every start runs artisan migrate, so updates that change the database apply themselves.
Container environment variables always win over /config/.env, so the Unraid template drives the common settings and .env holds the rest.
Edit .env for API keys or anything the template does not expose, then restart.
Unraid
Install from Community Apps, or add a container with template URL https://raw.githubusercontent.com/RapidMark/unraid-templates/main/templates/nntmux.xml.
The template passes --stop-timeout 120 so MariaDB gets a clean shutdown.
Building
cd unraid
make build # nntmux-app:build from ../Dockerfile, then rapidmark/nntmux:dev
make lint
CI builds on pushes touching unraid/ and when the weekly check finds something new, then pushes rapidmark/nntmux:latest, :bookworm_<date> and :sha-<short>.
The weekly check (Friday 18:00 UTC) merges upstream, compares the base image and looks for security updates; it only builds if one of them changed.
DOCKERHUB.md is the Docker Hub page and is published on its own when it changes.
Needs the DOCKERHUB_USERNAME and DOCKERHUB_TOKEN repo secrets.
Updating upstream
The weekly check merges upstream automatically. To do it by hand, run the Weekly update check workflow, or:
git fetch upstream
git merge upstream/master
git push
The image is whatever commit master is at, so the merge is the pin.
Requirements
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
rapidmark/nntmux:latestRuntime arguments
- Web UI
http://[IP]:[PORT:80]/- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--stop-timeout 120
Template configuration
Web interface port
- Target
- 80
- Default
- 8085
- Value
- 8085
Settings, database, Redis and Manticore data
- Target
- /config
- Default
- /mnt/user/appdata/nntmux
- Value
- /mnt/user/appdata/nntmux
NZB files and cover images. Grows large, put it on the array if you like.
- Target
- /data
- Default
- /mnt/user/appdata/nntmux/data
- Value
- /mnt/user/appdata/nntmux/data
User id the services run as
- Default
- 99
- Value
- 99
Group id the services run as
- Default
- 100
- Value
- 100
Timezone, for example America/Chicago
- Default
- Etc/UTC
- Value
- Etc/UTC
URL you will use to reach the site, including port
- Target
- APP_URL
- Default
- http://localhost:8085
- Value
- http://localhost:8085
Usenet provider hostname
- Target
- NNTP_SERVER
563 for SSL, 119 for plain
- Target
- NNTP_PORT
- Default
- 563
- Value
- 563
true or false
- Target
- NNTP_SSLENABLED
- Default
- true
- Value
- true
- Target
- NNTP_USERNAME
- Target
- NNTP_PASSWORD
Connections your provider allows
- Target
- NNTP_CONNECTIONS
- Default
- 10
- Value
- 10
Created on first run
- Target
- ADMIN_USER
- Default
- admin
- Value
- admin
At least 12 characters. Used on first run only.
- Target
- ADMIN_PASS
Created on first run
- Target
- ADMIN_EMAIL
Nick for the PRE scraper (#PreNNTmux on SynIRC). Must be unique, add a few random characters, e.g. yourname_k7q2x. Setting a nick turns the scraper on.
- Target
- SCRAPE_IRC_USERNAME
Reads file lists inside releases so hashed names can be renamed
- Target
- CHECK_PASSWORDED_RARS
- Default
- true
- Value
- true
Uses PAR2 file names to rename releases
- Target
- ADD_PAR2
- Default
- true
- Value
- true
Renames releases using NFOs, PAR2 and file names (same as Admin, Tmux, Fix Release Names)
- Target
- FIX_NAMES
- Default
- true
- Value
- true
Laravel Pulse. Grows the database fast, leave off unless you need it
- Target
- PULSE_ENABLED
- Default
- false
- Value
- false
Skip releases smaller than this. Stops broken one-file fragments of obfuscated posts from cluttering the index.
- Target
- MIN_RELEASE_SIZE_MB
- Default
- 50
- Value
- 50
Ask your Usenet provider for compressed headers (much less bandwidth). Set to false if your provider does not support XFEATURE COMPRESS GZIP.
- Target
- NNTP_COMPRESSED_HEADERS
- Default
- true
- Value
- true
Set false to run only the web UI without the tmux indexing engine
- Target
- START_INDEXER
- Default
- true
- Value
- true
MariaDB memory cache. Set to about half your spare RAM (e.g. 8G, 16G, 32G). Bigger is faster.
- Target
- DB_INNODB_BUFFER_POOL_SIZE
- Default
- 1G
- Value
- 1G
- Target
- TMDB_APIKEY
- Target
- TVDB_APIKEY
- Target
- OMDB_APIKEY
- Target
- FANARTTV_APIKEY
- Target
- TRAKTTV_APIKEY
Look titles up on imdb.com directly. IMDb often answers scripts with a bot check; NNTmux then pauses and tries one lookup per pause. TMDB and OMDb also provide IMDb ids, ratings and plots.
- Target
- IMDB_SCRAPER_ENABLED
- Default
- true
- Value
- true
After IMDb blocks a lookup, pause IMDb scraping this long, then try once.
- Target
- IMDB_SCRAPER_BLOCK_BACKOFF_MINUTES
- Default
- 60
- Value
- 60
How long NNTmux waits for Redis to answer. The default of 2 seconds is too short when the disk is busy: the tmux monitor gets a read error and stops.
- Target
- REDIS_READ_TIMEOUT
- Default
- 10
- Value
- 10
Old fallback for IMDb lookups. The site no longer exists; leave off.
- Target
- IMDBAPI_DEV_ENABLED
- Default
- false
- Value
- false
7-Zip binary used to read 7z archives whose file list is compressed. Empty turns it off.
- Target
- SEVENZIP_PATH
- Default
- /usr/bin/7z
- Value
- /usr/bin/7z
For posts with obfuscated file names, how many files to sample to find an archive. 0 turns it off.
- Target
- NN_ARCHIVE_PROBE_FILES
- Default
- 3
- Value
- 3
An archive that can't be read is tried once more after this long (default 1 day).
- Target
- NN_ARCHIVE_RETRY_DELAY
- Default
- 86400
- Value
- 86400