Files
home-docker/media.yaml
T
2021-04-16 14:15:02 +10:00

722 lines
16 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonarr
spec:
selector:
matchLabels:
app: sonarr
replicas: 1
template:
metadata:
labels:
app: sonarr
spec:
volumes:
- name: config
persistentVolumeClaim:
claimName: configs
- name: downloads
persistentVolumeClaim:
claimName: downloads-nfs
containers:
- name: sonarr
image: linuxserver/sonarr
securityContext:
runAsUser: 0
imagePullPolicy: Always
ports:
- containerPort: 8989
name: sonarr-port
protocol: TCP
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: TZ
value: Australia/Melbourne
volumeMounts:
- name: config
subPath: sonarr
mountPath: /config
- name: downloads
subPath: sonarr
mountPath: /tv
- name: downloads
subPath: sonarr
mountPath: /downloads
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 400m
memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
name: sonarr
labels:
app: sonarr
spec:
type: ClusterIP
ports:
- port: 80
targetPort: sonarr-port
protocol: TCP
selector:
app: sonarr
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sonarr-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/auth-url: "https://id.junv.me/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://id.junv.me/oauth2/start?rd=https%3A%2F%2F$host$request_uri"
spec:
tls:
- hosts:
- sonarr.junv.me
secretName: sonarr-tls
rules:
- host: sonarr.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: sonarr
port:
number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: plex
spec:
selector:
matchLabels:
app: plex
replicas: 1
template:
metadata:
labels:
app: plex
spec:
containers:
- name: plex-proxy
image: alpine/socat
args:
- "tcp-listen:80,fork,reuseaddr"
- "tcp-connect:192.168.1.105:32400"
resources:
requests:
cpu: 50m
memory: 126Mi
limits:
cpu: 100m
memory: 256Mi
ports:
- containerPort: 80
name: plex-port
---
apiVersion: v1
kind: Service
metadata:
name: plex
labels:
app: plex
spec:
type: ClusterIP
ports:
- port: 80
targetPort: plex-port
protocol: TCP
selector:
app: plex
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: plex-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- plex.junv.me
secretName: plex-tls
rules:
- host: plex.junv.me
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: plex
port:
number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbit
spec:
selector:
matchLabels:
app: qbit
replicas: 1
template:
metadata:
labels:
app: qbit
spec:
volumes:
- name: config
persistentVolumeClaim:
claimName: configs
- name: downloads
persistentVolumeClaim:
claimName: downloads-nfs
containers:
- name: openvpn
image: qmcgaw/private-internet-access:latest
securityContext:
runAsUser: 0
privileged: true
capabilities:
add: ["NET_ADMIN"]
imagePullPolicy: IfNotPresent
env:
- name: USER
value: p1787216
- name: PASSWORD
valueFrom:
secretKeyRef:
name: openvpn-password
key: password
- name: ENCRYPTION
value: strong
- name: PROTOCOL
value: udp
- name: REGION
value: "AU Melbourne"
- name: NONROOT
value: "no"
- name: DOT
value: "on"
- name: BLOCK_MALICIOUS
value: "on"
- name: PROXY_LOG_LEVEL
value: Critical
- name: qbit
image: linuxserver/deluge
securityContext:
runAsUser: 0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8112
name: web-port
protocol: TCP
env:
- name: TZ
value: Australia/Melbourne
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: DELUGE_LOGLEVEL
value: error
volumeMounts:
- name: config
mountPath: /config
subPath: deluge
- name: downloads
mountPath: /downloads
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 300m
memory: 700Mi
# livenessProbe:
# exec:
# command:
# - curl
# - http://localhost:8001
# initialDelaySeconds: 60
# periodSeconds: 60
- name: youtube-dl
image: modenaf360/youtube-dl-nas
securityContext:
runAsUser: 0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: youtube-dl-port
protocol: TCP
env:
- name: TZ
value: Australia/Melbourne
- name: MY_ID
valueFrom:
secretKeyRef:
name: basic-auth-credentials
key: username
- name: MY_PW
valueFrom:
secretKeyRef:
name: basic-auth-credentials
key: password
volumeMounts:
- name: downloads
subPath: youtube-dl
mountPath: /downfolder
resources:
requests:
cpu: 50m
memory: 126Mi
limits:
cpu: 100m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: qbit
labels:
app: qbit
spec:
type: ClusterIP
ports:
- port: 80
targetPort: web-port
protocol: TCP
name: web
selector:
app: qbit
---
apiVersion: v1
kind: Service
metadata:
name: youtube-dl
labels:
app: youtube-dl
spec:
type: ClusterIP
ports:
- port: 80
targetPort: youtube-dl-port
protocol: TCP
name: web
selector:
app: qbit
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: youtube-dl-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- dl.junv.me
secretName: youtube-dl-tls
rules:
- host: dl.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: youtube-dl
port:
number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbit-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- download.junv.me
secretName: qbit-tls
rules:
- host: download.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbit
port:
number: 80
---
# Refused to send form data to 'http://cloud.junv.me/' because it violates the following Content Security Policy directive: "form-action 'self'".
# It is not regression, I think, CSP directive form-action 'self' added intentionally. I suppose your problem is that nextcloud doesn't know that it was accessed through https. Maybe traefik don't add X-Forwarded-Proto header. You can try to add 'overwriteprotocol' => 'https' to your config and see if problem persists.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextcloud
spec:
selector:
matchLabels:
app: nextcloud
replicas: 1
template:
metadata:
labels:
app: nextcloud
spec:
volumes:
- name: nextcloud-config
persistentVolumeClaim:
claimName: configs
- name: data
persistentVolumeClaim:
claimName: nextcloud-nfs
initContainers:
- name: take-data-dir-ownership
image: alpine:3
securityContext:
runAsUser: 0
command:
- chown
- -R
- 1000:1000
- /data
volumeMounts:
- name: data
mountPath: /data
containers:
- name: nextcloud
image: wonderfall/nextcloud:20
securityContext:
# nextcloud uses www-data which id is 33
runAsUser: 0
imagePullPolicy: Always
ports:
- containerPort: 8888
name: web-port
protocol: TCP
env:
- name: UID
value: "1000"
- name: GID
value: "1000"
- name: NEXTCLOUD_UPDATE
value: "1"
- name: ADMIN_USER
valueFrom:
secretKeyRef:
name: nextcloud-credentials
key: username
- name: ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: nextcloud-credentials
key: password
- name: DB_TYPE
value: pgsql
- name: DB_NAME
value: nextcloud
- name: DB_HOST
value: new-postgres-postgresql.db.svc.cluster.local
- name: DB_USER
valueFrom:
secretKeyRef:
name: postgresql-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: postgresql-credentials
key: password
- name: TZ
value: Australia/Melbourne
volumeMounts:
- name: nextcloud-config
subPath: nextcloud/config
mountPath: /config
- name: nextcloud-config
subPath: nextcloud/apps
mountPath: /apps2
- name: nextcloud-config
subPath: nextcloud/apps
mountPath: /var/www/html/apps
- name: data
mountPath: /data
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 700m
memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: nextcloud
labels:
app: nextcloud
spec:
type: ClusterIP
ports:
- port: 80
targetPort: web-port
protocol: TCP
name: web
selector:
app: nextcloud
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nextcloud-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acxme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/proxy-body-size: 10240m
spec:
tls:
- hosts:
- cloud.junv.me
secretName: nextcloud-tls
rules:
- host: cloud.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nextcloud
port:
number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: files
spec:
selector:
matchLabels:
app: files
replicas: 1
template:
metadata:
labels:
app: files
spec:
volumes:
- name: config
persistentVolumeClaim:
claimName: configs
- name: downloads
persistentVolumeClaim:
claimName: downloads-nfs
containers:
- name: files
image: wahyd4/aria2-ui:latest
imagePullPolicy: Always
ports:
- containerPort: 80
name: files-port
protocol: TCP
env:
- name: ARIA2_EXTERNAL_PORT
value: "443"
- name: PUID
value: "1000"
- name: PGID
value: "1000"
volumeMounts:
- name: config
subPath: aria
mountPath: /app/conf
- name: downloads
mountPath: /data
- name: config
subPath: files/filebrowser.db
mountPath: /app/filebrowser.db
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: files
labels:
app: files
spec:
type: ClusterIP
ports:
- port: 80
targetPort: files-port
protocol: TCP
name: web
selector:
app: files
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: files-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/proxy-body-size: 1024m
nginx.ingress.kubernetes.io/auth-url: "https://id.junv.me/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://id.junv.me/oauth2/start?rd=https%3A%2F%2F$host$request_uri"
spec:
tls:
- hosts:
- files.junv.me
secretName: files-tls
rules:
- host: files.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: files
port:
number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: books
spec:
selector:
matchLabels:
app: books
replicas: 1
template:
metadata:
labels:
app: books
spec:
volumes:
- name: books
persistentVolumeClaim:
claimName: books-nfs
containers:
- name: books
image: bixidock/h5ai
# securityContext:
# runAsUser: 1000
imagePullPolicy: Always
ports:
- containerPort: 8080
name: books-port
protocol: TCP
volumeMounts:
- name: books
mountPath: /var/www
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
---
apiVersion: v1
kind: Service
metadata:
name: books
labels:
app: books
spec:
type: ClusterIP
ports:
- port: 80
targetPort: books-port
protocol: TCP
name: web
selector:
app: books
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: books-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/auth-url: "https://id.junv.me/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://id.junv.me/oauth2/start?rd=https%3A%2F%2F$host$request_uri"
spec:
tls:
- hosts:
- books.junv.me
secretName: books-tls
rules:
- host: books.junv.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: books
port:
number: 80