# FileBrowser + Webpage deployment for felhom.eu --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: felhom-website-content namespace: felhom-system spec: accessModes: - ReadWriteMany storageClassName: longhorn resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: filebrowser-db namespace: felhom-system spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 100Mi --- apiVersion: v1 kind: ConfigMap metadata: name: filebrowser-config namespace: felhom-system data: .filebrowser.json: | { "port": 8080, "baseURL": "", "address": "0.0.0.0", "log": "stdout", "database": "/database/filebrowser.db", "root": "/srv" } --- # =================== # FILEBROWSER # =================== apiVersion: apps/v1 kind: Deployment metadata: name: filebrowser namespace: felhom-system labels: app: filebrowser spec: replicas: 1 selector: matchLabels: app: filebrowser template: metadata: labels: app: filebrowser spec: containers: - name: filebrowser image: filebrowser/filebrowser:v2-alpine ports: - containerPort: 8080 volumeMounts: - name: website-content mountPath: /srv - name: database mountPath: /database - name: config mountPath: /.filebrowser.json subPath: .filebrowser.json resources: requests: memory: "64Mi" cpu: "50m" limits: memory: "256Mi" cpu: "500m" livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 30 readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 volumes: - name: website-content persistentVolumeClaim: claimName: felhom-website-content - name: database persistentVolumeClaim: claimName: filebrowser-db - name: config configMap: name: filebrowser-config --- apiVersion: v1 kind: Service metadata: name: filebrowser namespace: felhom-system spec: selector: app: filebrowser ports: - port: 80 targetPort: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: filebrowser namespace: felhom-system annotations: cert-manager.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/proxy-body-size: "100m" spec: ingressClassName: nginx-internal tls: - hosts: - files.felhom.eu secretName: filebrowser-tls rules: - host: files.felhom.eu http: paths: - path: / pathType: Prefix backend: service: name: filebrowser port: number: 80 --- # =================== # WEBPAGE (nginx) # =================== apiVersion: apps/v1 kind: Deployment metadata: name: felhom-webpage namespace: felhom-system labels: app: felhom-webpage spec: replicas: 1 selector: matchLabels: app: felhom-webpage template: metadata: labels: app: felhom-webpage spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80 volumeMounts: - name: website-content mountPath: /usr/share/nginx/html resources: requests: memory: "32Mi" cpu: "10m" limits: memory: "128Mi" cpu: "200m" livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 30 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 3 periodSeconds: 10 volumes: - name: website-content persistentVolumeClaim: claimName: felhom-website-content --- apiVersion: v1 kind: Service metadata: name: felhom-webpage namespace: felhom-system spec: selector: app: felhom-webpage ports: - port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: felhom-webpage namespace: felhom-system annotations: cert-manager.io/cluster-issuer: letsencrypt-prod spec: ingressClassName: nginx-internal tls: - hosts: - felhom.eu - www.felhom.eu secretName: felhom-webpage-tls rules: - host: felhom.eu http: paths: - path: / pathType: Prefix backend: service: name: felhom-webpage port: number: 80 - host: www.felhom.eu http: paths: - path: / pathType: Prefix backend: service: name: felhom-webpage port: number: 80