-
Notifications
You must be signed in to change notification settings - Fork 0
Docker
NeXroll can be run in Docker containers for easy deployment and management. Official images are available on Docker Hub with support for both AMD64 and ARM64 architectures.
# Latest stable version
docker pull jbrns/nexroll:latest
# Specific version
docker pull jbrns/nexroll:1.11.0
# Beta channel (pre-release features)
docker pull jbrns/nexroll:beta-
linux/amd64— Intel/AMD servers, most VPS -
linux/arm64— Raspberry Pi 4/5, Apple Silicon, ARM servers
version: "3.8"
services:
nexroll:
image: jbrns/nexroll:latest
container_name: nexroll
ports:
- "9393:9393"
environment:
- NEXROLL_PORT=9393
- NEXROLL_DB_DIR=/data
- NEXROLL_PREROLL_PATH=/data/prerolls
- NEXROLL_SECRETS_DIR=/data
- TZ=America/New_York
volumes:
- ./nexroll-data:/data
- /path/to/your/prerolls:/data/prerolls
restart: unless-stoppedIf using NeX-Up trailers, you may want a separate volume for trailer storage so Plex can access them:
version: "3.8"
services:
nexroll:
image: jbrns/nexroll:latest
container_name: nexroll
ports:
- "9393:9393"
environment:
- NEXROLL_PORT=9393
- NEXROLL_DB_DIR=/data
- NEXROLL_PREROLL_PATH=/data/prerolls
- NEXROLL_SECRETS_DIR=/data
- TZ=America/New_York
volumes:
- ./nexroll-data:/data
- /path/to/your/prerolls:/data/prerolls
- /path/to/trailers:/data/nexup_trailers # NeX-Up trailer storage
restart: unless-stoppedThen configure the Trailer Storage Path in NeX-Up Settings to /data/nexup_trailers.
mkdir -p ./nexroll-data
docker compose up -d
# Access at http://YOUR_HOST:9393NeXroll is available in Unraid Community Applications.
- Go to Apps in Unraid
- Search for NeXroll
- Click Install
- Configure paths:
-
Application Data:
/mnt/user/appdata/nexroll -
Preroll Storage:
/mnt/user/media/prerolls(must be accessible by Plex/Jellyfin)
-
Application Data:
- Click Apply
| Setting | Container Path | Host Path Example |
|---|---|---|
| WebUI Port | 9393 | 9393 |
| Application Data | /data | /mnt/user/appdata/nexroll |
| Preroll Storage | /data/prerolls | /mnt/user/media/prerolls |
| Trailer Storage | /data/nexup_trailers | /mnt/user/media/trailers |
| Time Zone | TZ | America/New_York |
| Variable | Description | Default |
|---|---|---|
NEXROLL_PORT |
Web UI port | 9393 |
NEXROLL_DB_DIR |
Database and config directory | /data |
NEXROLL_PREROLL_PATH |
Preroll storage directory | /data/prerolls |
NEXROLL_SECRETS_DIR |
Secrets storage directory | /data |
SCHEDULER_INTERVAL |
How often to check schedules (seconds) | 60 |
TZ |
Timezone (important for scheduling!) | UTC |
PUID |
User ID for file permissions | 99 |
PGID |
Group ID for file permissions | 100 |
For Plex/Jellyfin to find your preroll files, you must configure path mappings in Settings → Path Mappings.
| Scenario | NeXroll Path | Plex/Jellyfin Path |
|---|---|---|
| Docker → Windows Plex (drive) | /data/prerolls | Z:\Prerolls |
| Docker → Windows Plex (UNC) | /data/prerolls | \\NAS\Prerolls |
| Docker → Linux Plex | /data/prerolls | /media/prerolls |
| Unraid → Unraid Plex | /data/prerolls | /mnt/user/media/prerolls |
Don't forget NeX-Up trailers! If using a separate trailer volume, add a path mapping for that too.
Use Settings → Test Translation to verify paths before applying categories to Plex.
For better LAN device discovery, use host networking (Linux only):
version: "3.8"
services:
nexroll:
image: jbrns/nexroll:latest
network_mode: "host"
environment:
- NEXROLL_PORT=9393
- NEXROLL_DB_DIR=/data
- NEXROLL_PREROLL_PATH=/data/prerolls
- NEXROLL_SECRETS_DIR=/data
- TZ=America/New_York
volumes:
- ./nexroll-data:/data
restart: unless-stoppedmkdir -p ./nexroll-data
docker run -d --name nexroll \
-p 9393:9393 \
-e NEXROLL_DB_DIR=/data \
-e NEXROLL_PREROLL_PATH=/data/prerolls \
-e NEXROLL_SECRETS_DIR=/data \
-e TZ=America/New_York \
-v "$(pwd)/nexroll-data:/data" \
jbrns/nexroll:latestmkdir nexroll-data -Force
docker run -d --name nexroll `
-p 9393:9393 `
-e NEXROLL_DB_DIR=/data `
-e NEXROLL_PREROLL_PATH=/data/prerolls `
-e NEXROLL_SECRETS_DIR=/data `
-e TZ=America/New_York `
-v "${PWD}\nexroll-data:/data" `
jbrns/nexroll:latestIn the web UI Connect page:
-
Method 1: Direct URL + Token (e.g.,
http://192.168.1.100:32400) - Method 2: Plex.tv Authentication (Recommended — auto-discovers servers)
For Docker environments, Plex is typically at:
-
http://host.docker.internal:32400(Docker Desktop) -
http://172.17.0.1:32400(Linux bridge network) - Use your Plex server's LAN IP for host networking
- Enter your Jellyfin server URL:
http://192.168.1.100:8096 - Create an API Key in Jellyfin: Dashboard → Advanced → API Keys
- Enter the API Key in NeXroll
Note: Jellyfin requires the "Local Intros" plugin for preroll support.
# Pull latest image
docker pull jbrns/nexroll:latest
# Recreate container
docker compose up -d --force-recreate
# Or with docker run
docker stop nexroll
docker rm nexroll
# Run the docker run command againYour data is preserved in the mounted volumes.
- Use host networking when possible
- Try
http://host.docker.internal:32400(Docker Desktop) - Check Docker network settings
- Verify Plex allows connections from Docker's IP range
# Linux: Fix volume permissions
sudo chown -R 1000:1000 ./nexroll-data
# Or run as current user
docker run --user $(id -u):$(id -g) ...-
Set your timezone! Use the
TZenvironment variable - Example:
TZ=America/New_York,TZ=Europe/London - List of timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- NeXroll supports ARM64 natively
- If you see "no matching manifest for linux/arm64", update to the latest image
- Change host port:
-p 9394:9393 - Check for other services:
docker ps
The /data volume stores:
- SQLite database (
nexroll.db) - Preroll files (if using default path)
- Thumbnails
- Encrypted credentials
- NeX-Up trailers (if using default storage path)
- Log files
# Stop container
docker stop nexroll
# Backup data
tar -czvf nexroll-backup.tar.gz ./nexroll-data
# Restart
docker start nexrollOr use the built-in System & Files Backup feature in Settings.
version: "3.8"
services:
plex:
image: linuxserver/plex:latest
network_mode: "host"
volumes:
- ./plex-config:/config
- ./media:/media
environment:
- PUID=1000
- PGID=1000
restart: unless-stopped
nexroll:
image: jbrns/nexroll:latest
ports:
- "9393:9393"
environment:
- NEXROLL_PORT=9393
- NEXROLL_DB_DIR=/data
- NEXROLL_PREROLL_PATH=/data/prerolls
- TZ=America/New_York
volumes:
- ./nexroll-data:/data
- ./media/prerolls:/data/prerolls
depends_on:
- plex
restart: unless-stopped