claude-home/tdarr/ubuntu-manticore-setup.md
Cal Corum 4b7eca8a46
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
docs: add YAML frontmatter to all 151 markdown files
Adds title, description, type, domain, and tags frontmatter to every
doc for improved KB semantic search. The description field is prepended
to every search chunk, and domain/type/tags enable filtered queries.

Type values: context, guide, runbook, reference, troubleshooting
Domain values match directory structure (networking, docker, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:44 -05:00

171 lines
4.8 KiB
Markdown

---
title: "Tdarr Ubuntu-Manticore Setup"
description: "Setup guide for Tdarr server and GPU node on ubuntu-manticore (10.10.0.226) with GTX 1070, including Docker Compose config, GPU/NVENC capabilities, B-frame limitations, migration steps from old server, and performance benchmarks."
type: guide
domain: tdarr
tags: [tdarr, ubuntu-manticore, docker, nvidia, gtx-1070, nvenc, hevc, migration]
---
# Tdarr Setup on ubuntu-manticore
## Overview
Tdarr server and GPU-accelerated node deployed on ubuntu-manticore (10.10.0.226) with NVIDIA GTX 1070 for hardware transcoding. Migrated from old server at 10.10.0.43.
**Date**: 2025-12-04
## Architecture
```
ubuntu-manticore (10.10.0.226)
├── tdarr-server (container)
│ ├── Web UI: http://10.10.0.226:8265
│ ├── Node Port: 8266
│ └── Data: ~/docker/tdarr/server-data/
├── tdarr-node (container)
│ ├── Node Name: manticore-gpu
│ ├── GPU: GTX 1070 (NVENC/NVDEC)
│ └── Cache: /mnt/NV2/tdarr-cache (NVMe)
└── Media: /mnt/truenas/media (CIFS mount)
```
## Docker Compose Configuration
**Location**: `~/docker/tdarr/docker-compose.yml`
```yaml
version: "3.8"
services:
tdarr:
image: ghcr.io/haveagitgat/tdarr:latest
container_name: tdarr-server
restart: unless-stopped
ports:
- "8265:8265" # Web UI
- "8266:8266" # Server port (for nodes)
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
- serverIP=0.0.0.0
- serverPort=8266
- webUIPort=8265
volumes:
- ./server-data:/app/server
- ./configs:/app/configs
- ./logs:/app/logs
- /mnt/truenas/media:/media
tdarr-node:
image: ghcr.io/haveagitgat/tdarr_node:latest
container_name: tdarr-node
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
- serverIP=tdarr
- serverPort=8266
- nodeName=manticore-gpu
volumes:
- ./node-data:/app/configs
- /mnt/truenas/media:/media
- /mnt/NV2/tdarr-cache:/temp
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
depends_on:
- tdarr
```
## GPU Configuration
### Hardware
- **GPU**: NVIDIA GeForce GTX 1070 (Pascal architecture)
- **Driver**: 570.195.03
- **CUDA**: 12.8
### NVENC Capabilities
| Encoder | Supported | Working |
|---------|-----------|---------|
| h264_nvenc | Yes | Yes |
| hevc_nvenc | Yes | Yes |
| av1_nvenc | Yes | No (requires Turing+) |
### Important Limitation: B-Frames
**GTX 1070 does NOT support B-frames for HEVC encoding** (Pascal limitation).
If using `Tdarr_Plugin_MC93_Migz1FFMPEG` or similar plugins:
- Set `enable_bframes` to `false`
- Otherwise you'll get: `Max B-frames 5 exceed 0` / `No capable devices found`
B-frame support for HEVC NVENC requires RTX 20-series (Turing) or newer.
## Migration from Old Server
### Source
- **Server**: 10.10.0.43 (ubuntu-ct, SSH alias: `tdarr`)
- **Container**: tdarr-clean
- **Data**: `/home/cal/container-data/tdarr/tdarr-clean/server/` (~4.4GB)
### Migration Process
```bash
# Stop old server
ssh tdarr "docker stop tdarr-clean"
# Pull data to local workstation (relay)
rsync -avz --progress tdarr:/home/cal/container-data/tdarr/tdarr-clean/server/ /tmp/tdarr-server-data/
# Push to new server
rsync -avz --progress /tmp/tdarr-server-data/ cal@10.10.0.226:/home/cal/docker/tdarr/server-data/
# Start new server
ssh cal@10.10.0.226 "cd ~/docker/tdarr && docker compose up -d"
```
## Performance
### Observed Speeds
- **1080p H.264 → HEVC**: 200+ fps (~8-9x real-time)
- **GPU Utilization**: 30-60% encoder, 40-70% decoder
- **Power Draw**: ~52W during transcoding (166W max)
### Monitoring GPU Usage
```bash
# Basic status
nvidia-smi
# Detailed encoder/decoder utilization
nvidia-smi dmon -s u
```
### Recommended Settings
- **GPU Workers**: 1 (leaves headroom for Jellyfin)
- **CPU Workers**: 0 (GPU-only transcoding)
## Troubleshooting
### Error: "Max B-frames X exceed 0"
**Cause**: Plugin configured with B-frames, but GTX 1070 doesn't support them for HEVC
**Fix**: Disable `enable_bframes` in the plugin settings
### Error: "No capable devices found"
**Cause**: Usually means incompatible encoding parameters, not missing GPU
**Check**: Run `nvidia-smi` inside container to verify GPU access:
```bash
docker exec tdarr-node nvidia-smi
```
### Slow File Copy (0% progress)
**Cause**: Large files copying from network share to local cache
**Expected**: ~90 seconds for 10GB file over gigabit
**Note**: This is normal for mapped node architecture - file must copy before transcoding starts
## Related Documentation
- Server inventory: `networking/server-inventory.md`
- Tdarr technology context: `tdarr/CONTEXT.md`
- Tdarr troubleshooting: `tdarr/troubleshooting.md`