Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Implementación en Kubernetes
Esta guía cubre la implementación de Jellyfin en Kubernetes usando el gráfico Helm oficial.
Requisitos previos
-
Clúster de Kubernetes (v1.19+)
-
Helm 3.x instalado
-
kubectlconfigurado para tu clúster -
Almacenamiento suficiente para contenido multimedia y configuración
-
Controlador de Ingress (ej. traefik) para acceso externo (requerido para este tutorial, consulta la documentación oficial para alternativas)
Instalación
1. Añadir el repositorio de Helm
helm repo add jellyfin https://jellyfin.github.io/jellyfin-helm
helm repo update
2. Instalación personalizada
Para instrucciones completas de instalación y opciones de configuración, consulta el repositorio oficial del gráfico Helm de Jellyfin.
Crea un archivo values.yaml para personalización:
# values.yaml
replicaCount: 1
image:
pullPolicy: IfNotPresent
persistence:
config:
enabled: true
size: 5Gi
storageClass: ''
media:
enabled: true
size: 100Gi
storageClass: ''
ingress:
enabled: true
className: 'traefik'
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 2000m
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
nodeSelector: {}
tolerations: []
affinity: {}
Instala con valores personalizados:
helm install jellyfin jellyfin/jellyfin -f values.yaml
Opciones de configuración
Tipos de servicio
Esta guía cubre el tipo de servicio ClusterIP (predeterminado) solo para acceso interno, con acceso externo mediante controlador de Ingress. Las alternativas incluyen servicios LoadBalancer y NodePort.
Persistencia
Usar reclamaciones de volumen persistente (PVC) existentes
persistence:
config:
enabled: true
existingClaim: 'jellyfin-config-pvc'
media:
enabled: true
existingClaim: 'jellyfin-media-pvc'
Crear nuevos PVC mediante Helm
persistence:
config:
enabled: true
size: 5Gi
storageClass: 'fast-ssd'
media:
enabled: true
size: 100Gi
storageClass: 'slow-hdd'
Ingress
Configuración básica de Ingress
ingress:
enabled: true
className: 'traefik'
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
Ingress avanzado con TLS
ingress:
enabled: true
className: 'traefik'
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: default-jellyfin-buffering@kubernetescrd
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: jellyfin-tls
hosts:
- jellyfin.example.com
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: jellyfin-buffering
namespace: default
spec:
buffering:
maxRequestBodyBytes: 0
Acceder a Jellyfin
Reenvío de puertos (desarrollo)
kubectl port-forward svc/jellyfin 8096:8096
Accede en: http://localhost:8096
Acceso externo
Una vez configurado el Ingress, accede a Jellyfin en tu dominio configurado (ej. https://jellyfin.example.com).
Monitorización
Comprobaciones de estado
El gráfico incluye pruebas de preparación (readiness) y actividad (liveness):
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 5
Métricas
Habilita las métricas de Prometheus si están disponibles:
metrics:
enabled: true
serviceMonitor:
enabled: true
Solución de problemas
Problemas comunes
-
Permiso denegado: Asegúrate de que el contexto de seguridad sea el adecuado para acceder al contenido multimedia
-
Problemas de almacenamiento: Verifica que las reclamaciones de volumen persistente (PVC) estén vinculadas
-
Acceso a la red: Comprueba el tipo de servicio y la configuración del Ingress
Comandos de depuración
# Check pod status
kubectl get pods -l app.kubernetes.io/name=jellyfin
# View logs
kubectl logs -f deployment/jellyfin
# Check service
kubectl get svc jellyfin
# Describe pod for events
kubectl describe pod -l app.kubernetes.io/name=jellyfin
Actualización
# Update repository
helm repo update
# Upgrade installation
helm upgrade jellyfin jellyfin/jellyfin
# Check upgrade status
helm status jellyfin
Desinstalación
# Remove Helm release
helm uninstall jellyfin
# Clean up persistent volumes (if needed)
kubectl delete pvc -l app.kubernetes.io/name=jellyfin
Configuración avanzada
Aceleración por hardware
Para aceleración por GPU, añade acceso al dispositivo y contexto de seguridad:
securityContext:
privileged: true
resources:
limits:
gpu.intel.com/i915: 1
# or nvidia.com/gpu: 1
extraVolumes:
- name: dri
hostPath:
path: /dev/dri
extraVolumeMounts:
- name: dri
mountPath: /dev/dri
Múltiples fuentes de contenido multimedia
Monta múltiples fuentes de contenido multimedia usando volúmenes adicionales:
volumes:
- name: movies
persistentVolumeClaim:
claimName: movies-pvc
- name: tv
persistentVolumeClaim:
claimName: tv-pvc
volumeMounts:
- name: movies
mountPath: /movies
- name: tv
mountPath: /tv
Variables de entorno personalizadas
extraEnvVars:
- name: JELLYFIN_PublishedServerUrl
value: 'https://jellyfin.example.com'
- name: JELLYFIN_CACHE_DIR
value: '/cache'
Para más opciones de configuración, consulta la documentación del gráfico Helm de Jellyfin.