145 lines
3.5 KiB
YAML
145 lines
3.5 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: jellyfin-network-config
|
|
data:
|
|
network.xml: |
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<NetworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
<BaseUrl>/</BaseUrl>
|
|
<EnableHttps>true</EnableHttps>
|
|
<RequireHttps>true</RequireHttps>
|
|
<InternalHttpPort>8096</InternalHttpPort>
|
|
<InternalHttpsPort>8920</InternalHttpsPort>
|
|
<PublicHttpPort>80</PublicHttpPort>
|
|
<PublicHttpsPort>443</PublicHttpsPort>
|
|
<EnableRemoteAccess>true</EnableRemoteAccess>
|
|
<EnablePublishedServerUriByRequest>true</EnablePublishedServerUriByRequest>
|
|
<PublishedServerUri>https://${JELLYFIN_HOST}</PublishedServerUri>
|
|
</NetworkConfiguration>
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: jellyfin
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: jellyfin
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: jellyfin
|
|
spec:
|
|
containers:
|
|
- name: jellyfin
|
|
image: jellyfin/jellyfin:latest
|
|
ports:
|
|
- containerPort: 8096
|
|
volumeMounts:
|
|
- name: plex-media
|
|
mountPath: /media
|
|
- name: config
|
|
mountPath: /config
|
|
- name: network-config
|
|
mountPath: /config/config/ network.xml
|
|
subPath: network.xml
|
|
volumes:
|
|
- name: plex-media
|
|
persistentVolumeClaim:
|
|
claimName: media-nfs-pvc
|
|
- name: config
|
|
persistentVolumeClaim:
|
|
claimName: plex-config-pvc
|
|
- name: network-config
|
|
configMap:
|
|
name: jellyfin-network-config
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: jellyfin-service
|
|
spec:
|
|
selector:
|
|
app: jellyfin
|
|
ports:
|
|
- protocol: TCP
|
|
port: 8096
|
|
targetPort: 8096
|
|
type: ClusterIP
|
|
|
|
# ---
|
|
# apiVersion: traefik.io/v1alpha1
|
|
# kind: IngressRoute
|
|
# metadata:
|
|
# name: jellyfin-ingress
|
|
# annotations:
|
|
# traefik.ingress.kubernetes.io/router.middlewares: jellyfin-headers@kubernetescrd
|
|
# spec:
|
|
# entryPoints:
|
|
# - websecure
|
|
# routes:
|
|
# - match: Host(`${JELLYFIN_HOST}`)
|
|
# kind: Rule
|
|
# services:
|
|
# - name: jellyfin-service
|
|
# port: 8096
|
|
# tls:
|
|
# secretName: jellyfin-tls-secret
|
|
|
|
# ---
|
|
# apiVersion: traefik.io/v1alpha1
|
|
# kind: Middleware
|
|
# metadata:
|
|
# name: jellyfin-headers
|
|
# spec:
|
|
# headers:
|
|
# customRequestHeaders:
|
|
# X-Forwarded-Proto: "https"
|
|
# customResponseHeaders:
|
|
# X-Frame-Options: "SAMEORIGIN"
|
|
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: jellyfin-ingress
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/rewrite-target: /
|
|
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
|
nginx.ingress.kubernetes.io/server-header: "X-Frame-Options SAMEORIGIN"
|
|
nginx.ingress.kubernetes.io/proxy-set-header: "X-Forwarded-Proto https"
|
|
spec:
|
|
ingressClassName: nginx
|
|
rules:
|
|
- host: ${JELLYFIN_HOST}
|
|
http:
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: jellyfin-service
|
|
port:
|
|
number: 8096
|
|
tls:
|
|
- hosts:
|
|
- ${JELLYFIN_HOST}
|
|
secretName: jellyfin-tls-secret
|
|
|
|
---
|
|
apiVersion: cert-manager.io/v1
|
|
kind: Certificate
|
|
metadata:
|
|
name: jellyfin-cert
|
|
spec:
|
|
secretName: jellyfin-tls-secret
|
|
issuerRef:
|
|
name: acme-issuer
|
|
kind: ClusterIssuer
|
|
dnsNames:
|
|
- ${JELLYFIN_HOST}
|