Complete beginner-friendly instructions for updating Tunarr on Computer 2 (port 5174). Preserves all channels, NAS sources, schedules, and Intel GPU acceleration.
All your Tunarr data lives at /home/brent on the host.
This is never erased when you update the container.
Tunarr gets its media from your NAS. No media folder is mounted locally โ this is normal for your setup.
Your GPU is at /dev/dri/card1 & renderD128.
Requires both groups: video (44) and render (992).
Ctrl + Alt + T on your keyboard.
A dark window will appear where you type commands. To paste into Terminal, use
Ctrl + Shift + V (not Ctrl+V).
Follow these steps in order whenever a new Tunarr version is released.
This copies your backup folder to a safe second location, just in case. It will ask for your password โ type it and press Enter. You won't see the characters as you type โ that's normal.
# Copy backups to a safe second location sudo cp -r /home/brent/backups ~/tunarr-backups-$(date +%Y-%m-%d-%H%M)
Then verify the backup copy is complete and matches the original:
# Verify originals exist ls -la /home/brent/backups/ ls -lh /home/brent/db.db # Verify backup copy is complete (file count and sizes should match) ls -la ~/tunarr-backups-*/
.tar files and a db.db file.
These are your channels, schedules, and settings.
Make sure the backup copy has the same number of files and matching file sizes
as the original before proceeding.
docker pull chrisbenincasa/tunarr:latest
"Status: Downloaded newer image" โ New version downloaded! "Image is up to date" โ You already have the latest.
# Stop the container (safe even if already stopped) docker stop tunarr # Remove it (frees the name so we can recreate it) docker rm tunarr
Ctrl + Shift + V to paste it into Terminal.
docker run -d \ --name tunarr \ -v /home/brent:/config/tunarr \ -p 5174:8000 \ -e TZ=America/Los_Angeles \ --device /dev/dri:/dev/dri \ --group-add 44 \ --group-add 992 \ --restart unless-stopped \ chrisbenincasa/tunarr:latest
You should see a long ID number appear โ that means the container was created successfully.
| Flag | What it does (plain English) |
|---|---|
| --name tunarr | Names the container "tunarr" so you can refer to it easily |
| -v /home/brent:/config/tunarr | Connects your config folder to the container โ this is where your channels and database live |
| -p 5174:8000 | Makes Tunarr available at port 5174 on this computer (Computer 2's port) |
| -e TZ=America/Los_Angeles | Sets the timezone to Pacific |
| --device /dev/dri:/dev/dri | Passes your Intel GPU into the container |
| --group-add 44 | Gives permission to use the "video" group (for card1) |
| --group-add 992 | Gives permission to use the "render" group (for renderD128) |
| --restart unless-stopped | Automatically restarts Tunarr if the computer reboots |
# 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/
crw-rw---- 1 root video 226, 1 ... card1 crw-rw---- 1 root 992 226, 128 ... renderD128
card1 and renderD128 โ your Intel GPU is available for hardware transcoding!
docker logs tunarr --tail 20
To confirm the GPU is being used for transcoding, play a channel and then run:
docker logs tunarr 2>&1 | grep -i "qsv\|vaapi\|hwaccel" | tail -5
-hwaccel qsv and -qsv_device /dev/dri/renderD128
in the output โ the GPU is doing the work!
docker logs tunarr | tail -100
Once you've confirmed everything works, clean up old Docker images and remove the safety backup copy:
docker image prune -a --filter "until=24h"
When prompted "Are you sure?", type Y and press Enter.
# 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
/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.
These should already be set if you've configured Tunarr before. Verify them after any update.
In your browser at http://localhost:5174:
/dev/dri/renderD128 on Linux)Check status: docker ps -a then check logs: docker logs tunarr
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.
The --device /dev/dri:/dev/dri flag is missing. You need to stop, remove, and recreate
the container with the correct command from Step 3.
Use the group numbers instead of names: --group-add 44 --group-add 992
Fix ownership: sudo chown -R 1000:1000 /home/brent
Clear TiviMate cache or remove and re-add the playlist
Check Tunarr UI โ Settings โ FFMPEG โ Transcode Configs โ Hardware Acceleration should be "Intel QuickSync"
On the host run: ls -la /dev/dri โ you should see card1
and renderD128