All apps · 0 apps
Batcharr
Docker app from Batcharr's Repository
Overview
Readme
View on GitHubBatcharr — Unraid Community Applications Template

This repository contains the official Unraid Community Applications template for Batcharr.
Batcharr is a self-hosted bulk media request and review interface for Radarr and Sonarr. It is designed for people who already use the Arr stack and want to process a list of movies and television series without searching and adding every title one at a time.
Batcharr does not download media itself. It resolves titles against your own Radarr and Sonarr instances, lets you review the matches, and submits only the items you approve. Radarr and Sonarr remain responsible for monitoring, searching, downloading, and library management.
What Batcharr can do
- Import mixed movie and television lists.
- Copy visible list text from an external webpage and let Batcharr filter navigation/metadata noise.
- Paste clean title lists directly into the WebUI.
- Upload
TXT,CSV, andJSONfiles. - Parse optional release years and explicit
movie:/tv:style prefixes. - Use exact TMDb movie IDs and TVDb series IDs from structured imports.
- Optionally import TMDb public lists with a user-supplied TMDb API Read Access Token.
- Resolve movies through Radarr and series through Sonarr.
- Detect Sonarr API v3 or v5.
- Review posters, title, year, overview, destination, and confidence before submitting.
- Choose alternate matches when the first result is wrong.
- Approve or skip titles individually.
- Bulk-approve high-confidence matches.
- Detect titles already present in Radarr or Sonarr and avoid submitting them again.
- Store request results in persistent history.
- Configure Radarr and Sonarr root folders, quality profiles, monitoring, and search-on-add behavior.
- Encrypt saved Arr API keys and integration credentials before storing them in SQLite.
- Protect the WebUI with an optional shared password.
- Optionally accept interactive requests from Discord.
Install from Unraid Apps
- Open Apps in the Unraid WebGUI.
- Search for Batcharr.
- Select the Batcharr application.
- Review the container settings.
- Set a persistent Batcharr Secret.
- Optionally set a Batcharr Password.
- Install the container.
- Open the Batcharr WebUI.
- Configure Radarr and/or Sonarr from Settings and run the connection tests.
Generate the Batcharr Secret
From an Unraid terminal:
openssl rand -hex 32
Copy the generated value into BATCHARR_SECRET and keep it stable for the life of the installation.
Do not casually change or lose BATCHARR_SECRET. Batcharr uses it to encrypt stored credentials. If the secret changes, previously saved API keys and tokens cannot be decrypted and must be entered again.
Unraid template settings
| Setting | Default | Purpose |
|---|---|---|
| Repository | ghcr.io/bmj812/batcharr:latest |
Official Batcharr container image |
| WebUI Port | 5058 → 3000 |
Browser access to Batcharr |
| Appdata | /mnt/user/appdata/batcharr → /config |
Persistent SQLite database, settings, history, and encrypted credentials |
PUID |
99 |
Standard Unraid nobody user ID |
PGID |
100 |
Standard Unraid users group ID |
TZ |
America/Los_Angeles |
Container timezone; change to your own IANA timezone as needed |
BATCHARR_PASSWORD |
blank | Optional shared WebUI password |
BATCHARR_SECRET |
required | Stable encryption secret for saved credentials |
BATCHARR_COOKIE_SECURE |
false |
Set true only when Batcharr is accessed exclusively over HTTPS |
First-run configuration
Open Settings in Batcharr and configure at least one Arr service.
Radarr
Batcharr can store and use:
- Radarr URL
- API key
- Root folder
- Quality profile
- Minimum availability
- Monitored state
- Search-on-add behavior
Sonarr
Batcharr can store and use:
- Sonarr URL
- API key
- Root folder
- Quality profile
- Series type
- Monitor behavior
- Season-folder behavior
- Search-on-add behavior
When Batcharr shares a custom Docker network with the Arr containers, internal names such as these can be used:
http://radarr:7878
http://sonarr:8989
With Unraid's normal bridge networking, use addresses that are reachable from inside the Batcharr container, typically the Unraid host/LAN address and the published Radarr/Sonarr ports.
Import methods
1. External list — recommended for copied website lists
Copy the visible text from a list page and paste it into Bulk Import → External list.
Batcharr attempts to identify title rows, pair them with release years, remove duplicates, and ignore common page-navigation or metadata lines. This method does not require a TMDb developer account and does not ask Batcharr to browse arbitrary URLs on your behalf.
2. Paste titles
Paste a clean mixed list directly into Batcharr. Examples:
The Thing (1982)
movie: Alien
TV | The Expanse (2015)
Dark - 2017
Unlabeled titles can be searched automatically against the configured Arr services, or the batch can be forced to movies or television.
3. File upload
Batcharr accepts:
TXTCSVJSON
Imports are limited to 2 MiB and 200 unique titles per batch. Uploaded file contents are parsed in memory and are not retained as uploaded files.
CSV columns
A CSV file needs a header row. Recognized fields include:
title,year,type,tmdb_id,tvdb_id
title is required. type accepts movie/film or television/show/series forms. TMDb IDs can provide exact movie matching and TVDb IDs can provide exact series matching.
JSON shape
JSON can be a top-level array or an object containing an items array:
{
"items": [
{
"title": "Alien",
"year": 1979,
"type": "movie",
"tmdbId": 348
}
]
}
4. Direct TMDb list import — optional advanced integration
Batcharr can load a TMDb list by list URL or numeric list ID when you configure your own TMDb API Read Access Token in Settings.
This is optional. The normal copied external-list workflow does not require a TMDb account or token.
Review and submission workflow
After resolving a batch, Batcharr presents a review queue. Depending on the result, an item can be:
- Needs review
- Approved
- Skipped
- Already present
- Added
- Failed
You can inspect the selected match, choose an alternate candidate, approve or skip individual items, bulk-approve high-confidence matches, and then submit only the approved items.
A successful Batcharr request means the item was accepted by Radarr or Sonarr. It does not mean that the media has finished downloading.
Request history
The History tab records recent request results including:
- Movie or series type
- Title
- Release year when available
- External ID when available
- Status
- Result message
- Timestamp
History is stored in the persistent SQLite database under /config.
Discord integration
Discord support is optional. Batcharr includes an in-app setup guide and can register these slash commands:
/movie— find and request a movie/show— find and request a television series/list— resolve and review a mixed list
Discord requests use interactive confirmation rather than silently adding the first search result. Batcharr can also restrict Discord use to configured channel IDs and/or role IDs.
The container includes the Discord gateway worker. Batcharr also exposes an interaction endpoint for Discord application configurations that use an Interaction Endpoint URL.
Discord credentials can be stored from the WebUI. Environment variables can also override saved Discord settings for advanced deployments.
Optional advanced environment overrides
These are not required in the standard Unraid template because they can be configured in the Batcharr WebUI, but advanced users can provide them as additional container variables:
| Variable | Purpose |
|---|---|
TMDB_ACCESS_TOKEN |
TMDb API Read Access Token |
DISCORD_APPLICATION_ID |
Discord application ID |
DISCORD_PUBLIC_KEY |
Discord application public key |
DISCORD_BOT_TOKEN |
Discord bot token |
DISCORD_GUILD_ID |
Discord server/guild ID |
DISCORD_ALLOWED_CHANNEL_IDS |
Optional allowed Discord channel IDs |
DISCORD_ALLOWED_ROLE_IDS |
Optional allowed Discord role IDs |
Environment-provided integration values override the corresponding values saved in Batcharr.
Updating Batcharr on Unraid
Batcharr uses the published latest image from GitHub Container Registry.
Normal update path:
- Open the Docker page in Unraid.
- Check for updates.
- Update Batcharr when an image update is available.
- Keep the
/configmapping unchanged. - Keep the existing
BATCHARR_SECRETunchanged.
Manual pull:
docker pull ghcr.io/bmj812/batcharr:latest
If Unraid appears to keep an old image, Force Update recreates the container from the current template/image while preserving mapped appdata and variables.
Current limitations
- One Radarr instance and one Sonarr instance.
- One optional shared WebUI password rather than individual user accounts.
- Maximum of 200 unique titles per WebUI import.
- Discord list review is intentionally bounded for interactive Discord UI constraints.
- Copied external-list importing requires the user to copy visible webpage text.
- Direct TMDb list importing requires a user-supplied TMDb token.
- Batcharr submits requests but does not manage the downstream download queue.
- The currently published container workflow targets
linux/amd64.
Security notes
- Radarr and Sonarr API keys are encrypted before being written to SQLite.
- TMDb tokens and Discord secrets saved in Batcharr are stored server-side and encrypted.
- Secret credentials are not returned to the browser after saving.
- Imported files are parsed in memory rather than retained as uploaded files.
- Keep
BATCHARR_SECRETprivate and stable. - Do not post Arr API keys, Discord bot tokens, passwords, or the Batcharr secret in support threads or screenshots.
- Leaving
BATCHARR_PASSWORDblank is appropriate only when access to Batcharr is already restricted by a trusted LAN, VPN, reverse-proxy authentication, or equivalent control. - Use
BATCHARR_COOKIE_SECURE=trueonly when users access Batcharr exclusively through HTTPS.
Troubleshooting / support information
When reporting a problem, include:
- What you were doing when the problem occurred
- Whether the problem occurred in the WebUI or Discord
- Which import method was used
- Whether the Radarr and Sonarr connection tests succeed
- Browser/device information if the issue is UI-related
- Screenshots with all secrets hidden
- Recent Batcharr container logs
Useful Unraid commands:
docker logs --tail 200 Batcharr
If your container name is lowercase, use:
docker logs --tail 200 batcharr
Check the running image:
docker inspect batcharr --format='{{.Image}}'
Check the locally pulled latest image:
docker image inspect ghcr.io/bmj812/batcharr:latest --format='{{.Id}}'
Links
- Batcharr source: https://github.com/BMJ812/Batcharr
- Container image: https://github.com/BMJ812/Batcharr/pkgs/container/batcharr
- Unraid support: https://forums.unraid.net/topic/199956-support-batcharr-bulk-radarr-and-sonarr-requests/
- Unraid template repository: https://github.com/BMJ812/Batcharr-Unraid-Templates
License
This template repository is licensed under the zlib License (Zlib). See LICENSE.
Batcharr's application source should use its own repository LICENSE file as the authoritative license for the application code.
Install Batcharr on Unraid in a few clicks.
Find Batcharr in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/bmj812/batcharr:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host port used to access the Batcharr WebUI. Container port 3000 is fixed.
- Target
- 3000
- Default
- 5058
- Value
- 5058
Persistent Batcharr SQLite database, settings, request history, and encrypted credentials. Keep this mapping when updating or recreating the container.
- Target
- /config
- Default
- /mnt/user/appdata/batcharr
- Value
- /mnt/user/appdata/batcharr
Unraid user ID used to run Batcharr inside the container. The standard Unraid nobody user is 99.
- Default
- 99
- Value
- 99
Unraid group ID used to run Batcharr inside the container. The standard Unraid users group is 100.
- Default
- 100
- Value
- 100
IANA timezone used by Batcharr for timestamps and runtime behavior. Change this to your local timezone if needed.
- Target
- TZ
- Default
- America/Los_Angeles
- Value
- America/Los_Angeles
Optional shared WebUI password. Leaving this blank disables Batcharr login protection; do that only on a trusted LAN, VPN, or otherwise access-controlled network.
- Target
- BATCHARR_PASSWORD
Required stable secret used to encrypt stored Radarr, Sonarr, TMDb, and Discord credentials. Generate a strong value such as: openssl rand -hex 32. Do not change or lose it after setup; changing it makes previously stored encrypted credentials unreadable.
- Target
- BATCHARR_SECRET
Set to true only when browsers access Batcharr exclusively through HTTPS. Leave false for normal direct HTTP access on your LAN.
- Target
- BATCHARR_COOKIE_SECURE
- Default
- false
- Value
- false