# 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 `lib` folder --- ## 📚 Quick Navigation - [Quick Start](#quick-start) - [Installation](#installation) - [PostgreSQL Setup](#postgresql-setup) - [Configuration](#configuration) - [Building](#building-from-source) - [Creating Installer](#creating-an-installer) - [Migration](#migration-guide) - [Troubleshooting](#troubleshooting) - [Documentation](#documentation) --- ## 🎯 Quick Start ### Windows Installer ```powershell # Run JellyfinSetup-PostgreSQL-11.0.0.exe # Follow wizard for PostgreSQL setup ``` ### From Source ```bash 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](./docs/INSTALLER_QUICK_START.md) or [QUICKSTART_POSTGRESQL.md](./docs/QUICKSTART_POSTGRESQL.md) --- ## 📦 Installation ### Prerequisites - **.NET 11 Runtime** - [Download](https://dotnet.microsoft.com/download/dotnet/11.0) - **PostgreSQL 12+** - [Download](https://www.postgresql.org/download/) - **FFmpeg** - [Jellyfin builds](https://github.com/jellyfin/jellyfin-ffmpeg) ### Install from Installer (Windows) 1. Download `JellyfinSetup-PostgreSQL-11.0.0.exe` 2. Run installer, select options 3. Configure PostgreSQL (or skip for later) 4. Open http://localhost:8096 📖 Full guide: [INSTALLER_GUIDE.md](./docs/INSTALLER_GUIDE.md) ### Install from Source **Windows:** ```powershell dotnet build Jellyfin.Server --configuration Release cd lib\Release\net11.0 jellyfin.exe ``` **Linux:** ```bash dotnet build Jellyfin.Server --configuration Release cd lib/Release/net11.0 ./jellyfin ``` --- ## 🗄️ PostgreSQL Setup ### Quick Install **Windows:** ```powershell winget install PostgreSQL.PostgreSQL ``` **Linux:** ```bash sudo apt install postgresql postgresql-contrib ``` ### Create Database ```sql 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`: ```json { "DatabaseProvider": "Postgres", "ConnectionStrings": { "DefaultConnection": "Host=localhost;Database=jellyfin;Username=jellyfin;Password=your_password" } } ``` 📖 Full guide: [QUICKSTART_POSTGRESQL.md](./docs/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 1. Command-line arguments 2. Environment variables 3. startup.json 4. Built-in defaults 📖 Docs: [OS_SPECIFIC_STARTUP_CONFIG.md](./docs/OS_SPECIFIC_STARTUP_CONFIG.md), [STARTUP_JSON_VERIFICATION.md](./docs/STARTUP_JSON_VERIFICATION.md) --- ## 🔨 Building from Source ```bash 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](./docs/CENTRALIZED_LIB_FOLDER.md) --- ## 📦 Creating an Installer ```powershell # 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](./docs/INSTALLER_QUICK_START.md), [INSTALLER_GUIDE.md](./docs/INSTALLER_GUIDE.md) --- ## 🔄 Migration Guide ### SQLite to PostgreSQL ```bash # 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](./docs/POSTGRESQL_MIGRATION_COMPLETE.md) --- ## 🔧 Troubleshooting ### PostgreSQL Connection ```bash # Check status sudo systemctl status postgresql # Test connection psql -U jellyfin -d jellyfin ``` ### Service Issues ```bash # Check logs tail -f /var/log/jellyfin/log_*.txt ``` 📖 Full guides: [POSTGRESQL_TROUBLESHOOTING.md](./docs/POSTGRESQL_TROUBLESHOOTING.md), [TROUBLESHOOTING_EF_PENDING_CHANGES.md](./docs/TROUBLESHOOTING_EF_PENDING_CHANGES.md) --- ## 📖 Documentation ### Configuration - [OS_SPECIFIC_STARTUP_CONFIG.md](./docs/OS_SPECIFIC_STARTUP_CONFIG.md) - [STARTUP_JSON_VERIFICATION.md](./docs/STARTUP_JSON_VERIFICATION.md) - [STARTUP_JSON_FIX.md](./docs/STARTUP_JSON_FIX.md) ### PostgreSQL - [QUICKSTART_POSTGRESQL.md](./docs/QUICKSTART_POSTGRESQL.md) - [POSTGRESQL_MIGRATION_COMPLETE.md](./docs/POSTGRESQL_MIGRATION_COMPLETE.md) - [POSTGRESQL_TROUBLESHOOTING.md](./docs/POSTGRESQL_TROUBLESHOOTING.md) ### Backup - [POSTGRES_BACKUP_IMPLEMENTATION.md](./docs/POSTGRES_BACKUP_IMPLEMENTATION.md) - [POSTGRESQL_BACKUP_ANALYSIS.md](./docs/POSTGRESQL_BACKUP_ANALYSIS.md) ### Installation - [INSTALLER_QUICK_START.md](./docs/INSTALLER_QUICK_START.md) - [INSTALLER_GUIDE.md](./docs/INSTALLER_GUIDE.md) - [CENTRALIZED_LIB_FOLDER.md](./docs/CENTRALIZED_LIB_FOLDER.md) - [BUILD_INSTALLER_FIXED.md](./docs/BUILD_INSTALLER_FIXED.md) ### Project - [PROJECT_COMPLETION.md](./docs/PROJECT_COMPLETION.md) - [POC_SUMMARY_REPORT.md](./docs/POC_SUMMARY_REPORT.md) [📁 View All Documentation →](./docs/) --- ## 📝 License GNU General Public License v2.0 Fork of [Jellyfin](https://github.com/jellyfin/jellyfin) --- ## 📞 Support - 📚 [Documentation](./docs/) - 🐛 [Report Bug](https://gitea.wpjones.com/wjones/pgsql-jellyfin/issues) - 💡 [Request Feature](https://gitea.wpjones.com/wjones/pgsql-jellyfin/issues) --- ## ⚡ Quick Reference ```bash # 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](https://jellyfin.org) • [PostgreSQL](https://www.postgresql.org) • [.NET](https://dotnet.microsoft.com)