mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-16 05:43:54 +03:00
[PR #15383] [CLOSED] Postgresql Database Provider Integration. #14296
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/jellyfin/jellyfin/pull/15383
Author: @celesrenata
Created: 11/4/2025
Status: ❌ Closed
Base:
master← Head:postgresql📝 Commits (10+)
be1f0f7feat: Implement PostgreSQL Provider Phase 1 Infrastructure1705d7cfeat: Implement PostgreSQL Provider Phase 2 - Migration System82db076fix: SQL Server bracket syntax in PostgreSQL migration + integration testc332224feat: Add PostgreSQL database provider support093b3d3ci: Add Docker build workflow with multi-arch support2dc3b02feat: Add web UI support to Dockerfile6fa6becfeat: Build web UI from source in Dockerfile58c7a7dci: Add postgresql branch to workflow triggersb0dc0b1Add Helm chart and fix workflow attestation4f78e9dTrigger workflow📊 Changes
43 files changed (+9717 additions, -27 deletions)
View changed files
📝
.dockerignore(+51 -10)➕
.github/workflows/docker-build.yml(+167 -0)➕
.github/workflows/helm-chart-build.yml(+141 -0)➕
BUILDING.md(+18 -0)📝
Directory.Packages.props(+2 -1)➕
Dockerfile(+105 -0)📝
Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs(+2 -0)📝
Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj(+1 -0)📝
README.md(+16 -16)➕
context/MASTER-PLAN.md(+312 -0)➕
context/phase-1-infrastructure/README.md(+259 -0)➕
context/phase-1-infrastructure/backup-restore-implementation.md(+651 -0)➕
context/phase-1-infrastructure/connection-string-builder.md(+430 -0)➕
context/phase-1-infrastructure/purge-database-implementation.md(+464 -0)➕
context/phase-2-migrations/validation-report.md(+203 -0)➕
docker-compose.test.yml(+23 -0)➕
docker-compose.yml(+71 -0)➕
helm/clusterjellyfin/.helmignore(+27 -0)➕
helm/clusterjellyfin/Chart.lock(+6 -0)➕
helm/clusterjellyfin/Chart.yaml(+23 -0)...and 23 more files
📄 Description
Add PostgreSQL Database Provider with Docker and Kubernetes Support
Changes
Add comprehensive PostgreSQL database provider implementation including Entity Framework migrations, Docker containerization, and Kubernetes deployment via Helm charts. This enables Jellyfin to use PostgreSQL as an
alternative to SQLite for improved performance and scalability in production environments.
Key additions:
• Complete PostgreSQL provider with EF Core migrations and connection management
• Multi-architecture Docker images with PostgreSQL integration and web UI built from source
• Kubernetes Helm chart with PostgreSQL dependency and distributed transcoding worker support
• CI/CD workflows for automated Docker builds and Helm chart packaging
• Docker Compose setup for local development and testing
Issues
Fixes #12289 - Addresses SQLite database corruption issues and provides the PostgreSQL alternative that users have been requesting for improved reliability and flexibility in advanced deployments.
Additionally resolves:
• SQLite concurrency limitations and "database locked" errors under high load
• Performance bottlenecks from SQLite's single-writer architecture
• Database fragility issues during crashes or full disk scenarios
• Limited scalability options for enterprise and containerized deployments
The implementation leverages the EFCore refactor completed in v10.11.0 that introduced the IJellyfinDatabaseProvider abstraction, making multi-database support architecturally possible.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.