Files
pgsql-jellyfin/docs/STARTUP_CONFIG_COMPARISON.md
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

3.3 KiB

Comparison: Before vs After

Before (Old Behavior)

Generated startup.json

{
  "_comment": "Jellyfin Startup Configuration",
  "Paths": {
    "DataDir": null,
    "ConfigDir": null,
    "CacheDir": null,
    "LogDir": null,
    "TempDir": null,
    "WebDir": null
  },
  "Examples": {
    "Linux": { "DataDir": "/var/lib/jellyfin", ... },
    "Windows": { "DataDir": "C:\\ProgramData\\Jellyfin", ... }
  }
}

Problems:

  • All values are null
  • Users must manually edit
  • Examples section clutters the config
  • Not immediately usable

After (New Behavior)

On Windows

{
  "_comment": "Jellyfin Startup Configuration - Windows defaults - using C:/ProgramData/jellyfin",
  "_note": "These paths will be used unless overridden by environment variables or command-line arguments",
  "_priority": "Command-line args > Environment variables > This file > Built-in defaults",
  "Paths": {
    "DataDir": "C:/ProgramData/jellyfin",
    "ConfigDir": "C:/ProgramData/jellyfin",
    "CacheDir": "C:/ProgramData/jellyfin/cache",
    "LogDir": "C:/ProgramData/jellyfin/log",
    "TempDir": "C:/Users/AppData/Local/Temp/jellyfin",
    "WebDir": "C:/ProgramData/jellyfin/web"
  }
}

On Linux

{
  "_comment": "Jellyfin Startup Configuration - Linux defaults - following Filesystem Hierarchy Standard (FHS)",
  "_note": "These paths will be used unless overridden by environment variables or command-line arguments",
  "_priority": "Command-line args > Environment variables > This file > Built-in defaults",
  "Paths": {
    "DataDir": "/var/lib/jellyfin",
    "ConfigDir": "/etc/jellyfin",
    "CacheDir": "/var/cache/jellyfin",
    "LogDir": "/var/log/jellyfin",
    "TempDir": "/var/tmp/jellyfin",
    "WebDir": "/usr/share/jellyfin/web"
  }
}

Benefits:

  • Immediately usable values
  • OS-appropriate paths
  • Clear, focused configuration
  • Helpful comments explaining behavior

Console Output Comparison

Before

Created default startup configuration at: ./startup.json
You can customize this file to set default paths for Jellyfin.

After (Windows)

Created default startup configuration at: E:\Jellyfin\startup.json
Using Windows defaults - using C:/ProgramData/jellyfin
You can customize this file to set different paths for Jellyfin.

After (Linux)

Created default startup configuration at: /opt/jellyfin/startup.json
Using Linux defaults - following Filesystem Hierarchy Standard (FHS)
You can customize this file to set different paths for Jellyfin.

User Experience

Before

  1. User starts Jellyfin
  2. Gets startup.json with null values
  3. Confused - what should I put here?
  4. Searches documentation
  5. Manually edits file
  6. Restarts Jellyfin

After

  1. User starts Jellyfin
  2. Gets OS-appropriate startup.json automatically
  3. Works immediately with sensible defaults
  4. Optional: Can customize if needed

Summary

Aspect Before After
Default values null OS-specific paths
Ready to use No Yes
User confusion High Low
Manual editing Required Optional
Platform awareness None Full
Documentation needed External Built-in comments

Improvement: Users can now run Jellyfin immediately without editing configuration files! 🎉