Files
pgsql-jellyfin/README.md
T
wjones 78c8d4256c Docs reorg, config refactor, and ItemValues index fix
- Moved all documentation to docs/ and updated README with categorized links and new docs/INDEX.md
- Added HOW_TO_SWITCH_DATABASE.md and several new analysis/action docs
- Introduced db-config.ps1 for centralized DB config; all scripts now use it for easy DB switching
- Added db-quick.ps1 for interactive diagnostics and index management
- Updated Add-All-Indexes.bat to use db-config.ps1
- Added Fix-ItemValues-Performance.ps1 to create 3 critical indexes on ItemValues, addressing 1.3B row seq scan issue
- Updated performance_indexes.sql with new ItemValues indexes and ANALYZE
- Updated diagnostics.sql and database_report.txt for improved output and clarity
- All scripts and docs now reference the new config and index optimization workflow
2026-02-28 16:23:43 -05:00

331 lines
8.7 KiB
Markdown

# 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
### Getting Started
- [START_HERE.md](./docs/START_HERE.md) - **Start here!** Quick guide for new users
- [QUICK_REFERENCE.md](./docs/QUICK_REFERENCE.md) - Quick command reference
### 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)
- [HOW_TO_SWITCH_DATABASE.md](./docs/HOW_TO_SWITCH_DATABASE.md) - Switch between databases easily
### PostgreSQL Setup & Migration
- [QUICKSTART_POSTGRESQL.md](./docs/QUICKSTART_POSTGRESQL.md)
- [POSTGRESQL_MIGRATION_COMPLETE.md](./docs/POSTGRESQL_MIGRATION_COMPLETE.md)
- [POSTGRESQL_TROUBLESHOOTING.md](./docs/POSTGRESQL_TROUBLESHOOTING.md)
- [MERGE_MIGRATIONS_GUIDE.md](./docs/MERGE_MIGRATIONS_GUIDE.md) - Merge pending migrations
### Performance Optimization
- [ADD_INDEXES_GUIDE.md](./docs/ADD_INDEXES_GUIDE.md) - Add performance indexes
- [AUTO_APPLY_INDEXES_COMPLETE.md](./docs/AUTO_APPLY_INDEXES_COMPLETE.md) - Automatic index application
- [ITEMVALUES_INDEXES_ADDED.md](./docs/ITEMVALUES_INDEXES_ADDED.md) - ItemValues table optimization
- [MISSING_INDEXES_FIXED.md](./docs/MISSING_INDEXES_FIXED.md) - Index fixes
### Database Diagnostics & Analysis
- [DIAGNOSTICS_COMPLETE_SUMMARY.md](./docs/DIAGNOSTICS_COMPLETE_SUMMARY.md) - ⭐ Complete diagnostics overview
- [DATABASE_ANALYSIS_REPORT.md](./docs/DATABASE_ANALYSIS_REPORT.md) - Detailed analysis
- [LATEST_DIAGNOSTICS_ANALYSIS.md](./docs/LATEST_DIAGNOSTICS_ANALYSIS.md) - Latest diagnostics
- [REMOTE_DATABASE_ANALYSIS.md](./docs/REMOTE_DATABASE_ANALYSIS.md) - Remote DB analysis
- [REMOTE_ANALYSIS_SUMMARY.md](./docs/REMOTE_ANALYSIS_SUMMARY.md) - Remote DB summary
- [QUICK_ACTION_PLAN.md](./docs/QUICK_ACTION_PLAN.md) - Performance action plan
- [WEEKLY_TRACKING.md](./docs/WEEKLY_TRACKING.md) - Weekly performance tracking template
### Backup
- [POSTGRES_BACKUP_IMPLEMENTATION.md](./docs/POSTGRES_BACKUP_IMPLEMENTATION.md)
- [POSTGRESQL_BACKUP_ANALYSIS.md](./docs/POSTGRESQL_BACKUP_ANALYSIS.md)
### Installation & Publishing
- [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)
- [SQL_FILES_PUBLISH_FIX.md](./docs/SQL_FILES_PUBLISH_FIX.md) - SQL files in publish
- [SQL_PUBLISH_ISSUE_RESOLVED.md](./docs/SQL_PUBLISH_ISSUE_RESOLVED.md)
- [QUICK_PUBLISH_REFERENCE.md](./docs/QUICK_PUBLISH_REFERENCE.md)
### Project Information
- [PROJECT_COMPLETION.md](./docs/PROJECT_COMPLETION.md)
- [POC_SUMMARY_REPORT.md](./docs/POC_SUMMARY_REPORT.md)
- [IMPLEMENTATION_COMPLETE.md](./docs/IMPLEMENTATION_COMPLETE.md)
- [PR_DESCRIPTION.md](./docs/PR_DESCRIPTION.md) - Pull request description
- [PR_DESCRIPTION_SHORT.md](./docs/PR_DESCRIPTION_SHORT.md) - Short PR description
[📁 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)