Files
pgsql-jellyfin/docs/TEMP_DIR_CONFIGURATION_FEATURE.md
T
wjones 8f860a8ec3 Centralize build output and generate OS-specific startup.json
- All DLLs now output to lib\[Configuration]\[TargetFramework]\ at repo root (see Directory.Build.props)
- .gitignore updated to exclude /lib/
- On first run, startup.json is auto-generated with OS-appropriate default paths (Windows, Linux, macOS, or portable)
- Removes null/example config; generated config is immediately usable and clearly documented
- Extensive new documentation: build output, startup.json logic, visual guides, and code proofs
- Publish profile now deletes existing files for clean deploys
- No breaking changes: existing startup.json files are preserved
- Improves first-run UX, deployment, and cross-platform consistency
2026-02-26 14:21:26 -05:00

4.3 KiB

Summary: Path Configuration Enhancement

Changes Made

All Paths Are Now Configurable!

All major Jellyfin paths can be configured via command-line options or environment variables:

Path Type Command Line Environment Variable Default
Program Data -d, --datadir JELLYFIN_DATA_DIR %LocalAppData%/jellyfin
Configuration -c, --configdir JELLYFIN_CONFIG_DIR {datadir}/config or XDG
Cache -C, --cachedir JELLYFIN_CACHE_DIR {datadir}/cache or XDG
Logs -l, --logdir JELLYFIN_LOG_DIR {datadir}/log
Temp -t, --tempdir JELLYFIN_TEMP_DIR {system_temp}/jellyfin
Web Client -w, --webdir JELLYFIN_WEB_DIR wwwroot or jellyfin-web

New Feature: Configurable Temp Directory

Previously: Temp directory was hardcoded to {system_temp}/jellyfin

Now: Fully configurable with:

  • Command-line option: -t, --tempdir <path>
  • Environment variable: JELLYFIN_TEMP_DIR
  • Maintains backward compatibility with sensible default

Files Modified

  1. Jellyfin.Server/StartupOptions.cs

    • Added TempDir property with command-line option -t, --tempdir
  2. Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs

    • Changed TempDirectory from computed property to stored property
    • Added tempDirectoryPath parameter to constructor
  3. Emby.Server.Implementations/ServerApplicationPaths.cs

    • Added tempDirectoryPath parameter to constructor
    • Passes temp directory to base class
  4. Jellyfin.Server/Helpers/StartupHelpers.cs

    • Added logic to resolve temp directory from options/env var/default
    • Creates temp directory during initialization
    • Passes temp directory to ServerApplicationPaths constructor

Usage Examples

Command Line

# Linux
jellyfin --tempdir /var/tmp/jellyfin

# Windows
jellyfin.exe --tempdir "D:\Temp\Jellyfin"

# All paths at once
jellyfin --datadir /var/lib/jellyfin --configdir /etc/jellyfin --cachedir /var/cache/jellyfin --logdir /var/log/jellyfin --tempdir /var/tmp/jellyfin

Environment Variables

# Linux/macOS
export JELLYFIN_TEMP_DIR=/var/tmp/jellyfin

# Windows PowerShell
$env:JELLYFIN_TEMP_DIR="D:\Temp\Jellyfin"

Docker Compose

version: '3.8'
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    environment:
      - JELLYFIN_TEMP_DIR=/temp
    volumes:
      - /fast-storage/jellyfin/temp:/temp

Benefits

Performance

  • Place temp directory on fast SSD/NVMe for better transcoding performance
  • Separate I/O load across different disks

Storage Management

  • Use different mount points for different types of data
  • Easier disk space quota management
  • Prevent temp files from filling up data partition

Security

  • Follow OS best practices (Linux FHS, Windows Program Data, etc.)
  • Set appropriate permissions per directory type
  • Separate user data from temporary files

Backup & Maintenance

  • Exclude temp directory from backups
  • Easier cleanup of temporary files
  • Better separation of concerns

Containerization

  • Proper volume mapping for ephemeral vs persistent data
  • Follow container best practices
  • Simplified Docker/Kubernetes configurations

Testing

Build successful All paths resolve correctly Backward compatibility maintained (defaults to {system_temp}/jellyfin if not specified) Directories created automatically during startup Proper logging of all paths at startup

Documentation

Created comprehensive documentation in PATH_CONFIGURATION_GUIDE.md covering:

  • All configurable paths
  • Usage examples (CLI, environment variables, systemd, Docker)
  • Priority order (CLI > env var > default)
  • Permission setup
  • Verification steps

Backward Compatibility

Fully backward compatible

  • All existing installations will continue to work without changes
  • Default behavior unchanged
  • New parameters are optional
  • No breaking changes to existing configurations

This complements existing path configurations:

  • Program data path (already configurable)
  • Config directory (already configurable)
  • Cache directory (already configurable)
  • Log directory (already configurable)
  • Web directory (already configurable)

Now all major paths are user-configurable! 🎉