#!/bin/bash # Build Jellyfin Docker image on TrueNAS # Usage: ./build_truenas.sh [tag] # Example: ./build_truenas.sh 192.168.79.249 10.11.5-custom set -e TRUENAS_HOST="${1}" IMAGE_TAG="${2:-latest}" BUILD_DIR="/tmp/jellyfin-build-$$" if [ -z "$TRUENAS_HOST" ]; then echo "Usage: $0 [tag]" echo "Example: $0 192.168.79.249 10.11.5-custom" exit 1 fi echo "==================================================" echo "Building Jellyfin on TrueNAS" echo "==================================================" echo "Host: $TRUENAS_HOST" echo "Tag: $IMAGE_TAG" echo "==================================================" # Create temp build directory on TrueNAS echo "Creating build directory on TrueNAS..." ssh root@${TRUENAS_HOST} "mkdir -p ${BUILD_DIR}" # Sync repository to TrueNAS (excluding .git for speed) echo "Syncing repository to TrueNAS..." rsync -avz --progress \ --exclude='.git' \ --exclude='node_modules' \ --exclude='bin' \ --exclude='obj' \ ./ root@${TRUENAS_HOST}:${BUILD_DIR}/ # Initialize and sync submodules on TrueNAS echo "Initializing submodules on TrueNAS..." ssh root@${TRUENAS_HOST} "cd ${BUILD_DIR} && git submodule update --init --recursive" # Build Docker image on TrueNAS echo "Building Docker image on TrueNAS..." ssh root@${TRUENAS_HOST} "cd ${BUILD_DIR} && docker build -t jellyfin:${IMAGE_TAG} --file docker/Dockerfile ." # Tag image echo "Tagging image..." ssh root@${TRUENAS_HOST} "docker tag jellyfin:${IMAGE_TAG} jellyfin:latest" # Cleanup echo "Cleaning up build directory..." ssh root@${TRUENAS_HOST} "rm -rf ${BUILD_DIR}" echo "==================================================" echo "✓ Build complete!" echo "==================================================" echo "Image: jellyfin:${IMAGE_TAG}" echo "" echo "To run the container:" echo " ssh root@${TRUENAS_HOST}" echo " docker run -d jellyfin:${IMAGE_TAG}" echo "=================================================="