Repository navigation
Getting Started
Nooklet is a self-hosted application for discovering, requesting, downloading, and organizing movies and TV. This page is the map from an empty machine to a verified first request. Follow the linked guides in order; optional integrations can wait.
| Path | Use it when |
|---|---|
| Docker installation | Recommended for almost everyone. Docker supplies and supervises the complete supported runtime. |
| Native installation | Advanced/development only. You will manage Node.js, every native media tool, filesystem access, and supervision. |
For the fewest manual steps, open the Docker setup builder. It generates one private command for a new installation, verifies the selected folders, starts Nooklet, and waits for application health. Use the full Docker installation page when you prefer to enter every value yourself.
You do not need to connect every service. The smallest complete request path is:
flowchart LR
U["User selects a title"] --> M["Verified TMDB"]
M --> I["Enabled, verified Newznab indexer"]
I --> N["Verified Usenet server"]
N --> W["Writable staging workspace"]
W --> F["Readable and writable final library destination"]
F --> B["Healthy background worker"]
B --> R["Ready for first request"]
| Capability | Required? | Configuration |
|---|---|---|
| Browse and identify titles | Yes | A verified TMDB connection |
| Search releases | Yes | At least one enabled and verified Newznab indexer with movie or TV categories |
| Download | Yes | A verified Usenet server for the built-in engine |
| Import | Yes | A reachable, readable, and writable movie or TV library destination |
| Process background work | Yes | A responsive, non-degraded worker |
| Download work and staging | Yes | Reachable and writable DOWNLOAD_ENGINE_WORK_DIR and DOWNLOAD_ENGINE_DIR locations with usable capacity |
| AI recommendations | No | An OpenAI-compatible AI provider |
| Watch history | No | Plex, Tautulli, Trakt, or manual imports |
| Notifications | No | Discord, Apprise, or a generic webhook |
You can install and open Nooklet with Docker, Git, one media folder, one separate completed-download staging folder, and enough Docker data-storage capacity. Before the first movie or TV request, also gather:
- TMDB credential — identifies titles and supplies metadata and artwork.
- Newznab API key — searches an indexer for releases.
- Usenet credentials — let the built-in downloader retrieve a selected release.
- Movie and/or TV library folder — the final destination for imported files.
- Completed-download folder — a separate host location for output waiting to be imported.
- Docker data storage — enough capacity for the named volume that holds in-flight downloads, repair, and extraction work.
The guided Docker setup generates AUTH_SECRET, BOOTSTRAP_TOKEN, and SECRET_BOX_KEY for you. A manual install requires three independently generated values.
The bind-mounted completed-output folder can live on the same physical disk as the media library, but it is a separate runtime path. Docker's /app/data volume is a second capacity location for in-flight and extraction work. See Storage and path mapping before starting the container.
- Complete Docker installation, including the
/api/healthcheck. Use Native installation only when you intentionally chose the advanced path. - Open Nooklet and create the first administrator with the printed one-time bootstrap token. Nooklet automatically closes
/bootstrapas soon as an administrator exists and refuses later bootstrap attempts. - After sign-in, continue in Setup Center and follow First-time setup in order: TMDB, Usenet, Newznab, final storage, and worker health.
- Confirm at least one of Movie downloads or TV downloads is marked Ready in Setup Center.
- Search for a small, unambiguous title and submit a controlled first request.
The detailed guided sequence is in First-time setup.
Instance services, indexers, storage, and download infrastructure serve every user, and non-administrators cannot edit them. Nooklet persists a stable instance-configuration owner so every administrator reads and edits the same shared rows; demoting or disabling the backing account does not switch the effective configuration. Trakt is personal to the user who connects it; personal history and notification preferences remain user-scoped where the interface indicates.
The container and external monitors use GET /api/health. A healthy response confirms the database is reachable and the background worker is responsive. Setup Center performs the broader product-readiness evaluation, including verified services, indexers, and writable storage.
Linux or macOS
curl --fail-with-body http://127.0.0.1:42021/api/healthWindows PowerShell
Invoke-RestMethod http://127.0.0.1:42021/api/health | ConvertTo-Json -Depth 5Continue when the response is HTTP 200 with top-level "status": "ok" and checks.database and checks.backgroundWorker both set to "ok". HTTP 503 means the database or worker is unavailable. HTTP 200 with "status": "degraded" means the app is responsive but needs attention; use Health & readiness and Health and diagnostics before making the first request.
Nooklet repository · Features · User guide · Engineering dossier · Issues · Private security advisory
Documentation last reviewed against main: August 19, 2026.
Nooklet
Start here
- Getting started
- Guided Docker setup
- Docker installation
- Native installation (advanced)
- First-time setup
Configure
Use Nooklet
- Discover and recommendations
- Library and requests
- YouTube monitoring
- Downloads and import
- Watch history
- Automation and notifications
Operate
- Health and diagnostics
- Backup, restore, upgrades
- Accounts and users
- Troubleshooting
- Multi-instance boundaries
Engineering