diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cfc9b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# OS generated files +.DS_Store +.AppleDouble +.LSOverride +Icon + +# Thumbnails +._* + +# Files that might contain secrets +*.secret.yaml +*.sealed.yaml +.env +.env.* + +# Helm dependencies +charts/*.tgz +charts/*/charts/ +charts/*/tmpcharts/ + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo + +# Temporary files +tmp/ +*.bak diff --git a/README.md b/README.md new file mode 100644 index 0000000..45a5445 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# Shadoll Helm Charts + +A collection of custom and optimized Helm charts for self-hosted applications on Kubernetes. + +## Repository Structure + +- `/charts`: Individual application charts (e.g. `jellyfin`). +- `/docs`: Detailed application documentation and guides. + +## Quick Start + +### 1. Clone the repository +```bash +git clone https://github.com/shadoll/helm-charts.git +cd helm-charts +``` + +### 2. Available Charts + +| Chart | Description | Status | +|-------|-------------|--------| +| [Jellyfin](docs/jellyfin.md) | Media server with PostgreSQL support | Ready | + +### 3. Usage with FluxCD + +To use these charts in a FluxCD environment, add the repository as a Source: + +```yaml +apiVersion: source.toolkit.fluxcd.io/v1 +kind: GitRepository +metadata: + name: shadoll-charts + namespace: flux-system +spec: + interval: 1h + url: https://github.com/shadoll/helm-charts + ref: + branch: main +``` + +Then reference the chart in your `HelmRelease`: + +```yaml +spec: + chart: + spec: + chart: ./jellyfin + sourceRef: + kind: GitRepository + name: shadoll-charts +``` + +## Maintenance + +This repository follows automated version tracking where possible. For manual updates, modify the `appVersion` and increment the `version` in the respective `Chart.yaml`. + +--- +© 2026 Shadoll. Managed with ❤️ for the Home Lab. diff --git a/docs/jellyfin.md b/docs/jellyfin.md new file mode 100644 index 0000000..aa40d61 --- /dev/null +++ b/docs/jellyfin.md @@ -0,0 +1,37 @@ +# Jellyfin Helm Chart + +A modern, parameterized Helm chart for Jellyfin media server with PostgreSQL support and integrated backup capabilities. + +## Features +- **PostgreSQL Support**: Uses the Jellyfin PostgreSQL adapter for robust database storage. +- **Database Initialization**: Automated schema and database creation via `db-init` job. +- **Backups**: Integrated CronJob for automated database backups with configurable retention. +- **Ingress**: Dual-ingress pattern support (Internal HTTP and External HTTPS via Traefik). +- **Security**: Designed for use with `existingSecret` for credentials management. + +## Installation + +### 1. Create a Secret +Create a secret named `jellyfin-secret` containing: +- `JELLYFIN_POSTGRESQL_PASSWORD`: The password for the jellyfin user. +- `POSTGRES_ADMIN_PASSWORD`: The superuser password for database initialization. + +### 2. Configure Values +Review the [values.yaml](https://github.com/shadoll/helm-charts/blob/main/jellyfin/values.yaml) and create your override file. + +### 3. Install +```bash +helm install my-jellyfin ./jellyfin -f my-values.yaml +``` + +## Configuration Reference + +| Parameter | Description | Default | +|-----------|-------------|---------| +| `image.repository` | Jellyfin image repository | `ghcr.io/rogly-net/jellyfin-postgresql` | +| `image.tag` | Jellyfin image tag | (Chart appVersion) | +| `postgres.host` | PostgreSQL host address | `postgres-tcp.postgres.svc.cluster.local` | +| `persistence.config.enabled` | Enable config persistence | `true` | +| `backup.enabled` | Enable automated backups | `true` | + +For detailed configuration, see the [values.yaml](https://github.com/shadoll/helm-charts/blob/main/jellyfin/values.yaml).