โ— General Reference ยท Any Computer

Tunarr Update Guide

Universal beginner-friendly instructions for installing and updating Tunarr in Docker on Ubuntu with Intel Quick Sync GPU acceleration. Adapt the port and config path for each computer.

โฑ 3โ€“15 minutes โŠ˜ Last verified: March 17, 2026

Quick Reference: Your Two Computers

SettingComputer 1 (Media PC 1)Computer 2 (Media PC 2)
HostnameMediaPC1MediaPC2
Tunarr Port51735174
Config Path/home/brent (same on both)
GPU Device/dev/dri โ†’ card1 + renderD128
Required Groups--group-add 44 --group-add 992 (video + render)
Backups Location/home/brent/backups/
Web URLhttp://localhost:5173http://localhost:5174
๐Ÿ“

Your Config & Database

All Tunarr data lives at /home/brent on the host. It is never erased when you update or recreate the container.

๐ŸŽฌ

Media from NAS

Tunarr gets media from your NAS. No local media folder is mounted โ€” this is correct for your setup.

โšก

Intel GPU (Quick Sync)

Uses /dev/dri with card1 & renderD128. Needs both group 44 (video) and 992 (render).

๐Ÿง How to open Terminal: Press Ctrl + Alt + T on your keyboard. To paste into Terminal, use Ctrl + Shift + V (not Ctrl+V). You won't see characters when typing passwords โ€” that's normal.
โš ๏ธ Before Your First Setup: Discover Your Group Numbers

If you're setting up a new computer, the group numbers might be different. Run these two commands first to find your system's actual values:
bash โ€” run on any new computer
# Check your GPU is present
ls -la /dev/dri

# Find the group numbers (use these in --group-add)
getent group video
getent group render

The number at the end of each line (e.g., video:x:44 โ†’ use 44) is what you put in the --group-add flags. On your current identical computers, these are 44 and 992.

๐Ÿ”„ Update / Install Steps

Follow these steps in order. Replace [YOUR_PORT] with your computer's port (5173 or 5174).

0
Backup Your Config
Always do this first โ€” may take a few minutes with large backup folders
bash
# Copy backups to a safe second location
sudo cp -r /home/brent/backups ~/tunarr-backups-$(date +%Y-%m-%d-%H%M)

# Verify backup files and database exist
ls -la /home/brent/backups/
ls -lh /home/brent/db.db

# Verify backup copy is complete (file count and sizes should match originals)
ls -la ~/tunarr-backups-*/
โ„น๏ธ You should see your backup .tar files and a db.db file. Make sure the backup copy has the same number of files and matching file sizes as the original before proceeding. These are your channels, schedules, and settings.
1
Pull the Newest Image
Downloads the latest version while Tunarr is still running โ€” minimizes downtime
bash
docker pull chrisbenincasa/tunarr:latest
โœ“ What you should see
"Status: Downloaded newer image"  โ†’  New version downloaded!
"Image is up to date"             โ†’  You already have the latest.
2
Stop & Remove the Old Container
Only removes the container โ€” data stays safe
bash
docker stop tunarr
docker rm tunarr
๐Ÿ’ก "No such container" is normal โ€” means it was already gone.
3
Recreate the Container with GPU Support
Change the port number for each computer
๐Ÿ”ด Replace [YOUR_PORT] below with 5173 for Computer 1 or 5174 for Computer 2. This is the only line that changes between computers.
bash โ€” docker run command
docker run -d \
  --name tunarr \
  -v /home/brent:/config/tunarr \
  -p [YOUR_PORT]:8000 \
  -e TZ=America/Los_Angeles \
  --device /dev/dri:/dev/dri \
  --group-add 44 \
  --group-add 992 \
  --restart unless-stopped \
  chrisbenincasa/tunarr:latest

What Each Flag Does

FlagWhat it does (plain English)
--name tunarrNames the container "tunarr" so you can refer to it easily
-v /home/brent:/config/tunarrConnects your config folder to the container โ€” this is where your channels and database live
-p [PORT]:8000Makes Tunarr available at your chosen port (5173 or 5174)
-e TZ=America/Los_AngelesSets the timezone to Pacific
--device /dev/dri:/dev/driPasses your Intel GPU into the container for hardware transcoding
--group-add 44Gives permission to use the "video" group (for card1)
--group-add 992Gives permission to use the "render" group (for renderD128)
--restart unless-stoppedAutomatically restarts Tunarr if the computer reboots
4
Verify Startup & GPU
Wait for startup โ€” may take 5โ€“15 minutes if database migrations are running
โณ Major version updates may trigger database migrations and Meilisearch reindexing. With a large database, this can take 5โ€“15+ minutes. The web UI will not load until migrations finish. Check the logs (below) to monitor progress โ€” don't panic if the UI doesn't load right away.
bash
# Is the container running?
docker ps | grep tunarr

# Check the new version
docker inspect tunarr | grep "image.version"

# Check startup logs for migration status
docker logs tunarr --tail 30

# Can the container see the GPU?
docker exec -it tunarr ls -la /dev/dri

# Are your backups still safe?
ls -la /home/brent/backups/
โœ“ GPU output should look like this
crw-rw---- 1 root video 226,   1 ... card1
crw-rw---- 1 root  992  226, 128 ... renderD128
๐Ÿ“‹ If the logs show "Running database migration" โ€” sit tight. This is normal after a version jump. The web UI won't respond until all migrations complete. Check progress with: docker logs tunarr --tail 20
5
Test Everything Works
Verify in browser and TiviMate
Open browser โ†’ http://localhost:[YOUR_PORT]
Go to Settings โ†’ About โ€” confirm version
Play a channel in the web preview
In TiviMate: force refresh playlist, test a channel
bash โ€” confirm GPU is active
docker logs tunarr 2>&1 | grep -i "qsv\|vaapi\|hwaccel" | tail -5
โœ… Look for -hwaccel qsv and -qsv_device /dev/dri/renderD128 in the output.
6
Clean Up
Remove old images and the safety backup โ€” frees significant disk space

Once you've confirmed everything works, clean up old Docker images and remove the safety backup copy:

bash โ€” remove unused Docker images
docker image prune -a --filter "until=24h"

When prompted "Are you sure?", type Y and press Enter.

bash โ€” remove the safety backup copy
# List your backup copies to find the right folder name
ls -d ~/tunarr-backups-*

# Remove it (replace the date/time with your actual folder name)
sudo rm -rf ~/tunarr-backups-YYYY-MM-DD-HHMM
๐Ÿ’ก Backup retention tip: Your daily backups in /home/brent/backups/ can grow very large over time (7โ€“10 GB each). Consider periodically removing old backups and keeping only the 3โ€“5 most recent. For example:
ls -lh /home/brent/backups/ to review, then sudo rm /home/brent/backups/tunarr-backup-OLDDATE*.tar to remove old ones.
โš™๏ธ FFmpeg / GPU Settings in Tunarr

Verify these in the Tunarr web UI after every update.

Go to Settings โ†’ FFMPEG โ†’ Transcode Configs
Hardware Acceleration โ†’ Intel QuickSync
QSV Device โ†’ leave blank (auto-defaults to /dev/dri/renderD128)
Advanced Options: all "Disable Hardware" checkboxes unchecked
๐Ÿ”ง Troubleshooting

Container won't start

docker ps -a then docker logs tunarr

Web UI won't load after update

This is usually caused by database migrations or Meilisearch reindexing after a version jump. Check docker logs tunarr --tail 50 โ€” if you see "Running database migration" messages, just wait. With large databases (several GB), migrations can take 5โ€“15+ minutes. Meilisearch reindexing may also consume heavy CPU/RAM temporarily. Monitor with docker exec tunarr ps aux โ€” once Meilisearch CPU drops, the web server should start.

"No such file or directory" for /dev/dri

The --device /dev/dri:/dev/dri flag is missing. Recreate the container with Step 3.

"Unable to find group render" error

Use group numbers: --group-add 44 --group-add 992. Run getent group render on a new system to find the correct number.

Permission denied on db.db

sudo chown -R 1000:1000 /home/brent

500 error in TiviMate but web works

Clear TiviMate cache or re-add the playlist

GPU not being used

Tunarr UI โ†’ Settings โ†’ FFMPEG โ†’ Transcode Configs โ†’ Hardware Acceleration must be "Intel QuickSync"

Need to check GPU on a new computer

Run ls -la /dev/dri then getent group video and getent group render to discover device names and group numbers