mirror of
https://github.com/wahyd4/home-docker.git
synced 2026-08-09 04:15:52 +10:00
722 lines
16 KiB
YAML
722 lines
16 KiB
YAML
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
|