Chevereto - Install Notes

Moved and hosted all media used by my website here.

Issues or error encountered using chevereto official docker image. Using nfs-csi, might not encounter this issue in using different CSI.

  1. Permission error accessing /var/www/html/
1# kube exec to the pod
2$ chown -R www-data:www-data /var/www/html
  1. Cannot create folder /var/www/html/images/_assets/
1# kube exec to the pod
2$ mkdir -p /var/www/html/images/_assets/
3$ chown -R www-data:www-data /var/www/html/images/

config.yaml

 1apiVersion: v1
 2data:
 3  CHEVERETO_DB_HOST: db_host
 4  CHEVERETO_DB_USER: root
 5  CHEVERETO_DB_PASS: verystrongpassword
 6  CHEVERETO_DB_PORT: '3306'
 7  CHEVERETO_DB_NAME: chevereto
 8  CHEVERETO_HOSTNAME: chevereto.marktaguiad.dev
 9  CHEVERETO_HOSTNAME_PATH: /
10  CHEVERETO_HTTPS: '0'
11  CHEVERETO_ASSET_STORAGE_TYPE: local
12  CHEVERETO_ASSET_STORAGE_URL: http://chevereto.marktaguiad.dev/images/_assets/
13  CHEVERETO_ASSET_STORAGE_BUCKET: /var/www/html/images/_assets/
14  CHEVERETO_MAX_POST_SIZE: 2G
15  CHEVERETO_MAX_UPLOAD_SIZE: 2G
16kind: ConfigMap
17metadata:
18  creationTimestamp: null
19  labels:
20    app: chevereto
21  name: chevereto-config

deploy.yaml

 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  labels:
 5    app: chevereto
 6  name: chevereto
 7spec:
 8  replicas: 1
 9  selector:
10    matchLabels:
11      app: chevereto
12  strategy:
13    type: Recreate
14  template:
15    metadata:
16      labels:
17        app: chevereto
18    spec:
19      affinity:
20        nodeAffinity:
21          requiredDuringSchedulingIgnoredDuringExecution:
22            nodeSelectorTerms:
23              - matchExpressions:
24                  - key: kubernetes.io/os
25                    operator: In
26                    values:
27                      - linux
28          preferredDuringSchedulingIgnoredDuringExecution:
29            - weight: 15
30              preference:
31                matchExpressions:
32                  - key: core
33                    operator: In
34                    values:
35                      - "4"
36            - weight: 10
37              preference:
38                matchExpressions:
39                  - key: core
40                    operator: In
41                    values:
42                      - "3"
43            # - weight: 10
44            #   preference:
45            #     matchExpressions:
46            #     - key: kubernetes.io/role
47            #       operator: In
48            #       values:
49            #       - 'worker'
50            - weight: 5
51              preference:
52                matchExpressions:
53                  - key: disk
54                    operator: In
55                    values:
56                      - "ssd"
57      containers:
58        - image: chevereto/chevereto:4.1.4
59          name: chevereto
60          ports:
61            - containerPort: 80
62          resources: {}
63          volumeMounts:
64            - mountPath: /var/www/html/images/
65              subPath: data
66              name: chevereto-data
67          envFrom:
68            - configMapRef:
69                name: chevereto-config
70      initContainers:
71        - name: volume-permission
72          image: ghcr.io/chevereto/chevereto:4.1.4
73          command:
74            - sh
75            - -c
76            - "mkdir -p /var/www/html/images/_assets/ && chown -R www-data:www-data /var/www/html/images/"
77          volumeMounts:
78            - name: chevereto-data
79              subPath: data
80              mountPath: /var/www/html/images/
81          securityContext:
82            runAsUser: 0
83
84      restartPolicy: Always
85      volumes:
86        - name: chevereto-data
87          persistentVolumeClaim:
88            claimName: chevereto-pvc
89status: {}
90

service.yaml

 1apiVersion: v1
 2kind: Service
 3metadata:
 4  labels:
 5    app: chevereto
 6  name: chevereto
 7spec:
 8  ports:
 9    - name: "80"
10      port: 80
11      targetPort: 80
12  selector:
13    app: chevereto
14status:
15  loadBalancer: {}

ingress.yaml

 1---
 2apiVersion: networking.k8s.io/v1
 3kind: Ingress
 4metadata:
 5  name: chevereto-ingress
 6  annotations:
 7    # kubernetes.io/ingress.class: "nginx"
 8    cert-manager.io/cluster-issuer: "letsencrypt-prod"
 9    nginx.ingress.kubernetes.io/proxy-body-size: 1000m
10spec:
11  ingressClassName: nginx
12  tls:
13  - hosts:
14    - chevereto.marktaguiad.dev
15    secretName: chevereto-tls
16  rules:
17  - host: chevereto.marktaguiad.dev
18    http:
19      paths:
20      - pathType: Prefix
21        path: /
22        backend:
23          service:
24            name: chevereto
25            port:
26              number: 80