c51c14efde
- Rewrote README.md to highlight PostgreSQL features, installer, and migration, with quick start and full docs index - Moved all markdown documentation files to docs/ for better organization; updated links accordingly - Added .gitignore rules to exclude all PublishProfiles folders; removed tracked publish profile XMLs - Preserved original README as README.original.md; added README_GENERATION.md and DOCUMENTATION_ORGANIZATION.md - Cleaned root directory, improved navigation, and clarified platform-specific instructions
304 lines
6.8 KiB
Markdown
304 lines
6.8 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
|
|
|
|
### 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)
|