Jellyfin with PostgreSQL Support
The Free Software Media System - Now with Enterprise Database Backend
🚀 What's New in This Fork?
This is a PostgreSQL-enabled fork of Jellyfin that replaces SQLite with PostgreSQL for improved performance, scalability, and reliability.
✨ Key Features
- ✅ PostgreSQL Database Backend - Full migration from SQLite
- ✅ Improved Performance - Better handling of large libraries
- ✅ Enterprise Scalability - Replication and clustering support
- ✅ Professional Backups - pgBackRest integration
- ✅ OS-Specific Configuration - Auto-configuration for Windows/Linux/macOS
- ✅ Windows Installer - Professional installer with PostgreSQL wizard
- ✅ Centralized Build - All DLLs in
libfolder
📚 Quick Navigation
- Quick Start
- Installation
- PostgreSQL Setup
- Configuration
- Building
- Creating Installer
- Migration
- Troubleshooting
- Documentation
🎯 Quick Start
Windows Installer
# Run JellyfinSetup-PostgreSQL-11.0.0.exe
# Follow wizard for PostgreSQL setup
From Source
git clone https://gitea.wpjones.com/wjones/pgsql-jellyfin.git
cd pgsql-jellyfin
dotnet build --configuration Release
cd lib/Release/net11.0
dotnet jellyfin.dll
📖 See INSTALLER_QUICK_START.md or QUICKSTART_POSTGRESQL.md
📦 Installation
Prerequisites
- .NET 11 Runtime - Download
- PostgreSQL 12+ - Download
- FFmpeg - Jellyfin builds
Install from Installer (Windows)
- Download
JellyfinSetup-PostgreSQL-11.0.0.exe - Run installer, select options
- Configure PostgreSQL (or skip for later)
- Open http://localhost:8096
📖 Full guide: INSTALLER_GUIDE.md
Install from Source
Windows:
dotnet build Jellyfin.Server --configuration Release
cd lib\Release\net11.0
jellyfin.exe
Linux:
dotnet build Jellyfin.Server --configuration Release
cd lib/Release/net11.0
./jellyfin
🗄️ PostgreSQL Setup
Quick Install
Windows:
winget install PostgreSQL.PostgreSQL
Linux:
sudo apt install postgresql postgresql-contrib
Create Database
psql -U postgres
CREATE USER jellyfin WITH PASSWORD 'your_password';
CREATE DATABASE jellyfin OWNER jellyfin;
GRANT ALL PRIVILEGES ON DATABASE jellyfin TO jellyfin;
\q
Configure Connection
Edit startup.json:
{
"DatabaseProvider": "Postgres",
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=jellyfin;Username=jellyfin;Password=your_password"
}
}
📖 Full guide: QUICKSTART_POSTGRESQL.md
⚙️ Configuration
OS-Specific Defaults
startup.json is auto-configured per platform:
- Windows:
C:/ProgramData/jellyfin - Linux:
/var/lib/jellyfin,/etc/jellyfin - macOS:
~/Library/Application Support/jellyfin
Priority Order
- Command-line arguments
- Environment variables
- startup.json
- Built-in defaults
📖 Docs: OS_SPECIFIC_STARTUP_CONFIG.md, STARTUP_JSON_VERIFICATION.md
🔨 Building from Source
git clone https://gitea.wpjones.com/wjones/pgsql-jellyfin.git
cd pgsql-jellyfin
dotnet restore
dotnet build --configuration Release
# Output: lib/Release/net11.0/
📖 See CENTRALIZED_LIB_FOLDER.md
📦 Creating an Installer
# 1. Install Inno Setup
winget install JRSoftware.InnoSetup
# 2. Build
.\build-installer.ps1
# 3. Result
# installer-output\JellyfinSetup-PostgreSQL-11.0.0.exe
Features:
- Windows Service installation
- Firewall rules
- PostgreSQL wizard
- .NET runtime check
📖 Guides: INSTALLER_QUICK_START.md, INSTALLER_GUIDE.md
🔄 Migration Guide
SQLite to PostgreSQL
# 1. Backup
cp jellyfin.db jellyfin-backup.db
# 2. Set up PostgreSQL
# 3. Update startup.json
# 4. Run migration
dotnet run --project Jellyfin.Server -- --migrate-database
📖 See POSTGRESQL_MIGRATION_COMPLETE.md
🔧 Troubleshooting
PostgreSQL Connection
# Check status
sudo systemctl status postgresql
# Test connection
psql -U jellyfin -d jellyfin
Service Issues
# Check logs
tail -f /var/log/jellyfin/log_*.txt
📖 Full guides: POSTGRESQL_TROUBLESHOOTING.md, TROUBLESHOOTING_EF_PENDING_CHANGES.md
📖 Documentation
🚀 Getting Started
- START_HERE.md - Start here! Complete quick start guide
- QUICK_REFERENCE.md - Quick command reference
- COMPLETE-SESSION-SUMMARY.md - All recent fixes and improvements
⚙️ Configuration & Setup
- database-configuration-examples.md - Complete database configuration reference
- library-monitor-delay-configuration.md - Configure file system monitoring delays (NEW)
- OS_SPECIFIC_STARTUP_CONFIG.md - Platform-specific configuration
- STARTUP_JSON_VERIFICATION.md - Verify startup configuration
- STARTUP_JSON_FIX.md - Fix startup issues
- HOW_TO_SWITCH_DATABASE.md - Switch between databases
🛠️ Path Configuration & Fixes
- WEBDIR_ISSUE_COMPLETE_FIX.md - Complete guide to fixing WebDir path issues (NEW)
- STARTUP_JSON_WEBDIR_FIX.md - Fix startup.json WebDir configuration (NEW)
- PATH_FIX_GUIDE.md - Comprehensive path fix guide (NEW)
- LINUX_PATH_ISSUE_SUMMARY.md - Linux paths on Windows issue summary (NEW)
- FIX_SYSTEM_XML_PATHS.md - Fix Linux paths in system.xml (NEW)
- POWERSHELL_SCRIPT_FIXED.md - PowerShell utility script fixes (NEW)
🔧 Utility Scripts
- FixJellyfinPaths.ps1 - PowerShell script to fix Linux paths in configuration files (NEW)
- FixStartupJsonWebDir.ps1 - PowerShell script to fix WebDir paths in startup.json (NEW)
- add_presentationuniquekey_index.sql - SQL script to add performance index for episode queries (NEW)
- fix_windows_paths.sql - SQL script to convert Linux paths to Windows paths (NEW)
🗄️ PostgreSQL Setup & Migration
- QUICKSTART_POSTGRESQL.md - Quick PostgreSQL setup
- POSTGRESQL_MIGRATION_COMPLETE.md - Migration guide
- POSTGRESQL_TROUBLESHOOTING.md - Troubleshooting guide
- MERGE_MIGRATIONS_GUIDE.md - Merge pending migrations
- database/postgres-migration-guide.md - Detailed migration steps
- database/postgres-provider-readme.md - PostgreSQL provider documentation
- database/jellyfin-database-readme.md - Database architecture
💾 Backup & Restore
- remote-postgresql-backup-support.md - Remote PostgreSQL backups
- database/postgres-backup-configuration.md - Backup configuration guide
- POSTGRES_BACKUP_IMPLEMENTATION.md - Backup implementation details
- POSTGRESQL_BACKUP_ANALYSIS.md - Backup analysis
⚡ Performance & Optimization
- increase-database-timeout.md - Fix query timeouts
- ADD_INDEXES_GUIDE.md - Add performance indexes
- AUTO_APPLY_INDEXES_COMPLETE.md - Automatic index application
- ITEMVALUES_INDEXES_ADDED.md - ItemValues optimization
- MISSING_INDEXES_FIXED.md - Index fixes
- query-grouping-current-status.md - Query performance status
- query-optimization-complete-story.md - Complete optimization guide
- database-query-optimization.md - Query optimization strategies
🔍 Database Diagnostics & Analysis
- DIAGNOSTICS_COMPLETE_SUMMARY.md - ⭐ Complete diagnostics overview
- DATABASE_ANALYSIS_REPORT.md - Detailed analysis
- LATEST_DIAGNOSTICS_ANALYSIS.md - Latest diagnostics
- REMOTE_DATABASE_ANALYSIS.md - Remote database analysis
- REMOTE_ANALYSIS_SUMMARY.md - Remote analysis summary
- QUICK_ACTION_PLAN.md - Performance action plan
- WEEKLY_TRACKING.md - Weekly tracking template
🔧 Error Fixes & Troubleshooting
- sqlite-migration-filtering-fix.md - Fix SQLite migration errors
- LIBRARYMONITOR_DISPOSAL_FIX.md - Fix ObjectDisposedException during shutdown (NEW)
- syncplay-authorization-error-handling.md - SyncPlay auth errors
- exception-middleware-authentication-messaging.md - Authentication error messages
- database-deadlock-handling.md - Handle database deadlocks
- database-constraint-violation-baseitem-providers.md - Fix constraint violations
- ef-core-tracking-conflict-fix.md - EF Core tracking issues
- TROUBLESHOOTING_EF_PENDING_CHANGES.md - EF Core pending changes
- WEBSOCKET_TOKEN_REQUIRED_ERROR.md - WebSocket errors
📦 Installation & Publishing
- INSTALLER_QUICK_START.md - Quick installer guide
- INSTALLER_GUIDE.md - Detailed installer guide
- CENTRALIZED_LIB_FOLDER.md - Centralized build output
- BUILD_INSTALLER_FIXED.md - Installer build fixes
- SQL_FILES_PUBLISH_FIX.md - SQL files in publish
- SQL_PUBLISH_ISSUE_RESOLVED.md - SQL publish resolution
- QUICK_PUBLISH_REFERENCE.md - Publish reference
📜 Project Information & Planning
- PROJECT_COMPLETION.md - Project completion status
- POC_SUMMARY_REPORT.md - Proof of concept summary
- IMPLEMENTATION_COMPLETE.md - Implementation status
- PR_DESCRIPTION.md - Pull request description
- PR_DESCRIPTION_SHORT.md - Short PR description
- STAKEHOLDER_PRESENTATION.md - Stakeholder presentation
- SQLITE_REMOVAL_PLAN.md - SQLite removal plan
🛠️ Developer Resources
- README_EDITORCONFIG_CHANGES.md - EditorConfig changes
- README_GENERATION.md - Documentation generation
- STARTUP_CONFIG_COMPARISON.md - Configuration comparison
- STARTUP_CONFIG_UPDATE.md - Configuration updates
- STARTUP_JSON_MARKER_FIX.md - JSON marker fixes
- STARTUP_JSON_VISUAL_GUIDE.md - Visual configuration guide
- TEMP_DIR_CONFIGURATION_FEATURE.md - Temp directory configuration
- VERSION_UPDATE_11.0.0_PREVIEW.md - .NET 11 upgrade
- scripts/CONNECT_AND_UPDATE.md - Connection and update scripts
📂 Additional Documentation
- fuzz/README.md - Fuzz testing documentation
- wwwroot/README.md - Web assets documentation
- Jellyfin.Server/Resources/Configuration/README.md - Configuration resources
📝 License
GNU General Public License v2.0
Fork of Jellyfin
📞 Support
⚡ Quick Reference
# Build
dotnet build --configuration Release
# Run
cd lib/Release/net11.0 && dotnet jellyfin.dll
# Create installer
.\build-installer.ps1
# Test
dotnet test
Essential Paths:
- Windows:
C:\ProgramData\jellyfin - Linux:
/var/lib/jellyfin - macOS:
~/Library/Application Support/jellyfin
Built with ❤️ for the Jellyfin community
Jellyfin • PostgreSQL • .NET