From a80a4c440b68cf8d49eff91170e064ba1ac4ec5b Mon Sep 17 00:00:00 2001 From: Mira Date: Wed, 20 Aug 2025 15:47:51 -0400 Subject: [PATCH] add caddy, forgejo --- argentumcation-website.yaml | 184 +++++++++++++++++++++++++++++ forgejo.yaml | 227 ++++++++++++++++++++++++++++++++++++ 2 files changed, 411 insertions(+) create mode 100644 argentumcation-website.yaml create mode 100644 forgejo.yaml diff --git a/argentumcation-website.yaml b/argentumcation-website.yaml new file mode 100644 index 0000000..76cd9df --- /dev/null +++ b/argentumcation-website.yaml @@ -0,0 +1,184 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: caddy + name: caddy +spec: + replicas: 1 + selector: + matchLabels: + app: caddy + template: + metadata: + labels: + app: caddy + spec: + containers: + - image: caddy:latest + name: argentumcation-website + ports: + - containerPort: 80 + protocol: TCP + #- containerPort: 443 + # protocol: TCP + - containerPort: 2019 + protocol: TCP + volumeMounts: + - mountPath: /etc/caddy + name: caddy-config-volume + - mountPath: /data + name: caddy-data-volume + restartPolicy: Always + volumes: + - name: caddy-config-volume + persistentVolumeClaim: + claimName: caddy-config-pvc + - name: caddy-data-volume + persistentVolumeClaim: + claimName: caddy-data-pvc +--- +apiVersion: v1 +kind: Service +metadata: + name: caddy-svc +spec: + ports: + - name: "caddy-http" + port: 80 + targetPort: 80 + nodePort: 31180 + # - name: "caddy-https" + # port: 443 + # targetPort: 443 + - name: "caddy-admin" + port: 2019 + targetPort: 2019 + nodePort: 32019 + type: NodePort + selector: + app: caddy +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: caddy-http + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: web +spec: + rules: + - host: reticulum.lan + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: caddy-svc + port: + number: 80 + - host: argentumcation.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: caddy-svc + port: + number: 80 + - host: xn--2dkua.xn--tckwe + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: caddy-svc + port: + number: 80 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + annotations: + pv.kubernetes.io/provisioned-by: smb.csi.k8s.io + name: caddy-data-pv +spec: + capacity: + storage: 100Gi + accessModes: + - ReadOnlyMany + persistentVolumeReclaimPolicy: Retain + storageClassName: smb + mountOptions: + - dir_mode=0777 + - file_mode=0777 + # - vers=3.0 + csi: + driver: smb.csi.k8s.io + # volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name} + # make sure this value is unique for every share in the cluster + volumeHandle: lipotropin.lan#meta/services/caddy#raid# + volumeAttributes: + source: //192.168.1.146/raid + subDir: 00_meta/02_services/caddy + nodeStageSecretRef: + name: smbcreds + namespace: default +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: caddy-data-pvc +spec: + accessModes: + - ReadOnlyMany + resources: + requests: + storage: 100Gi + volumeName: caddy-data-pv + storageClassName: smb +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + annotations: + pv.kubernetes.io/provisioned-by: smb.csi.k8s.io + name: caddy-config-pv +spec: + capacity: + storage: 100Gi + accessModes: + - ReadOnlyMany + persistentVolumeReclaimPolicy: Retain + storageClassName: smb + mountOptions: + - dir_mode=0777 + - file_mode=0777 + # - vers=3.0 + csi: + driver: smb.csi.k8s.io + # volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name} + # make sure this value is unique for every share in the cluster + volumeHandle: lipotropin.lan#meta/services_config/caddy#raid# + volumeAttributes: + source: //192.168.1.146/raid + subDir: 00_meta/05_service_config/caddy + nodeStageSecretRef: + name: smbcreds + namespace: default +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: caddy-config-pvc +spec: + accessModes: + - ReadOnlyMany + resources: + requests: + storage: 100Gi + volumeName: caddy-config-pv + storageClassName: smb diff --git a/forgejo.yaml b/forgejo.yaml new file mode 100644 index 0000000..8b658fa --- /dev/null +++ b/forgejo.yaml @@ -0,0 +1,227 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: forgejo + name: forgejo +spec: + replicas: 1 + selector: + matchLabels: + app: forgejo + strategy: + type: Recreate + template: + metadata: + labels: + app: forgejo + spec: + containers: + - image: codeberg.org/forgejo/forgejo:10 + name: forgejo + env: + - name: GITEA__database__DB_TYPE + value: "mysql" + - name: GITEA__database__HOST + value: "192.168.1.146:31306" + - name: GITEA__database__NAME + value: "gitea" + - name: USER_UID + value: "1000" + - name: USER_GID + value: "1000" + + - name: GITEA__database__USER + valueFrom: + configMapKeyRef: + key: MYSQL_USER + name: mariadb-secrets-env + - name: GITEA__database__PASSWD + valueFrom: + configMapKeyRef: + key: MYSQL_PASSWORD + name: mariadb-secrets-env + ports: + - containerPort: 3000 + protocol: TCP + - containerPort: 22 + protocol: TCP + volumeMounts: + - mountPath: /data + name: forgejo-config-volume + # - mountPath: /data/gitea/repo-archive + # name: forgejo-data-volume + - mountPath: /etc/timezone + name: forgejo-timezone-volume + readOnly: true + subPath: timezone + - mountPath: /etc/localtime + name: forgejo-localtime-volume + readOnly: true + subPath: localtime + restartPolicy: Always + volumes: + - name: forgejo-config-volume + persistentVolumeClaim: + claimName: forgejo-config-pvc + # - name: forgejo-data-volume + # persistentVolumeClaim: + # claimName: forgejo-data-pvc + - configMap: + items: + - key: timezone + path: timezone + name: forgejo-timezone-configmap + name: forgejo-timezone-volume + - configMap: + items: + - key: localtime + path: localtime + name: forgejo-localtime-configmap + name: forgejo-localtime-volume +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: forgejo + name: forgejo-svc +spec: + ports: + - name: "3000" + port: 3000 + targetPort: 3000 + - name: "2552" + port: 2552 + targetPort: 22 + selector: + app: forgejo +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: forgejo-http + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: web +spec: + rules: + - host: git.reticulum.lan + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: forgejo-svc + port: + number: 3000 + - host: git.reticulum.lan + # http: + # paths: + # - path: / + # pathType: Prefix + # backend: + # service: + # name: forgejo-svc + # port: + # number: 2552 + - host: git.argentumcation.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: forgejo-svc + port: + number: 3000 + # - host: git.argentumcation.com + # http: + # paths: + # - path: / + # pathType: Prefix + # backend: + # service: + # name: forgejo-svc + # port: + # number: 2552 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: forgejo-config-pv +spec: + capacity: + storage: 100Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: "" + nfs: + path: /mnt/raid/00_meta/02_services/forgejo/ + server: 192.168.1.146 +# --- +# apiVersion: v1 +# kind: PersistentVolume +# metadata: +# name: forgejo-data-pv +# spec: +# capacity: +# storage: 100Gi +# accessModes: +# - ReadWriteOnce +# persistentVolumeReclaimPolicy: Retain +# storageClassName: "" +# nfs: +# path: /mnt/raid/00_meta/05_service_config/forgejo/ +# server: 192.168.1.146 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: forgejo-config-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Gi + volumeName: forgejo-config-pv + storageClassName: "" +# --- +# apiVersion: v1 +# kind: PersistentVolumeClaim +# metadata: +# name: forgejo-data-pvc +# spec: +# accessModes: +# - ReadWriteOnce +# resources: +# requests: +# storage: 100Gi +# volumeName: forgejo-data-pv +# storageClassName: "" +--- +apiVersion: v1 +data: + timezone: | + America/New_York +kind: ConfigMap +metadata: + annotations: + use-subpath: "true" + labels: + app: forgejo + name: forgejo-timezone-configmap +--- +apiVersion: v1 +binaryData: + localtime: VkZwcFpqSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQUFBQmdBQUFBQUFBQURzQUFBQUJnQUFBQlNBQUFBQW5xWWVjSis2NjJDZ2hnQndvWnJOWUtKbDRuQ2pnK25ncEdxdWNLVTFwMkNtVThyd3B4V0pZS2d6clBDby9xWGdxaE9POEtyZWgrQ3I4M0R3ckw1cDRLM1RVdkN1bmt2Z3I3TTA4TEIrTGVDeG5GRndzbWRLWUxOOE0zQzBSeXhndFZ3VmNMWW5EbUMzTy9kd3VBYndZTGtiMlhDNTV0Smd1d1QxOEx2R3RHQzg1TmZ3dmEvUTRMN0V1ZkMvajdMZ3dLU2I4TUZ2bE9EQ2hIM3d3MDkyNE1Sa1gvREZMMWpneGsxOGNNY1BPdURJTFY1d3lQaFhZTW9OUUhESzJEbGd5NGp3Y05JajlIRFNZUHZnMDNYazhOUkEzZURWVmNidzFpQy80TmMxcVBEWUFLSGcyUldLOE5uZ2crRGEvcWR3MjhCbDROemVpWERkcVlKZzNyNXJjTitKWkdEZ25rMXc0V2xHWU9KK0wzRGpTU2hnNUY0UmNPVlhMdURtUnkzdzV6Y1E0T2duRC9EcEZ2TGc2Z2J4OE9yMjFPRHI1dFB3N05hMjRPM0d0ZkR1djlOZzc2L1NjUENmdFdEeGo3Unc4bitYWVBOdmxuRDBYM2xnOVU5NGNQWS9XMkQzTDFwdytDaDM0UGtQUEhENkNGbmcrdmhZOFB2b08rRDgyRHJ3L2NnZDRQNjRIUEQvcC8vZ0FKZis4QUdINGVBQ2QrRHdBM0QrWUFSZy9YQUZVT0JnQmtEZmNBY3d3bUFIalJsd0NSQ2tZQW10bFBBSzhJWmdDK0NGY0F6Wm91QU53R2R3RHJtRTRBK3BnL0FRbVdiZ0VZbGw4Qko1U09BVGFVZndGRmtxNEJWSktmQVdPUXpnRnlrTDhCZ2lLV0FaQ08zd0dnSUxZQnJ5Q25BYjRlMWdITkhzY0IzQnoyQWVzYzV3SDZHeFlDQjJBUEFoZ1pOZ0lsWGk4Q05xcitBa05jVHdKVXFSNENZVnB2QW5LblBnSi83RGNDa0tWZUFwM3FWd0t1bzM0Q3UraDNBczAxUmdMWjVwY0M2ek5tQXZma3R3TUpNWVlERm5aL0F5Y3ZwZ00wZEo4RFJTM0dBMUp5dndOaksrWURjSERmQTRHOXJnT09idjhEbjd2T0E2eHRId085dWU0RHl2N25BOXU0RGdQby9RY0QrYll1QkFiN0p3UVlSL1lFSlBsSEJEWkdGZ1JDOTJjRVZFUTJCRjg2andSeTFmNEVmVGl2QkpEVUhnU2JOczhFcnRJK0JMbklsd1ROWkFZRTE4YTNCT3RpSmdUMXhOY0ZDV0JHQlJQQzl3VW5YbVlGTWNFWEJVVmNoZ1ZQdnpjRlkxcW1CVzVRL3dXQjdHNEZqRThmQlovcWpnV3FUVDhGdmVpdUJjaExYd1hiNXM0RjVrbC9CZm5rN2dZRTIwY0dHSGEyQmlMWlp3WTJkTllHUU5lSEJsUnk5Z1plMWFjR2NuRVdCbnpUeHdhUWJ6WUdtdEhuQnE1dFZnYTVZNjhHelA4ZUJ0ZGh6d2JxL1Q0RzlWL3ZCd2o3WGdjVFhnOEhKdmwrQnpGY0x3ZEU5NTRIVCszM0IyT0paZ2R0N0JjSGdZZUdCNHZxTndlZmhhWUhxZWhYQjcyRHhnZkg1bmNIMjRIbUIrWGtsd2Y1Z0FZQU1CQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJRUJRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDLy8rNm5nQUEvLy9Id0FFRS8vKzVzQUFJLy8rNXNBQUkvLy9Id0FFTS8vL0h3QUVRVEUxVUFFVkVWQUJGVTFRQVJWZFVBRVZRVkFBQUFBQUJBQUVBQUFBQkFBRlVXbWxtTWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUdBQUFBQUFBQUFPd0FBQUFHQUFBQUZQLy8vLzllQS9DUS8vLy8vNTZtSG5ELy8vLy9uN3JyWVAvLy8vK2doZ0J3Ly8vLy82R2F6V0QvLy8vL29tWGljUC8vLy8ramcrbmcvLy8vLzZScXJuRC8vLy8vcFRXbllQLy8vLyttVThydy8vLy8vNmNWaVdELy8vLy9xRE9zOFAvLy8vK28vcVhnLy8vLy82b1RqdkQvLy8vL3F0Nkg0UC8vLy8rcjgzRHcvLy8vLzZ5K2FlRC8vLy8vcmROUzhQLy8vLyt1bmt2Zy8vLy8vNit6TlBELy8vLy9zSDR0NFAvLy8vK3huRkZ3Ly8vLy83Sm5TbUQvLy8vL3Mzd3pjUC8vLy8rMFJ5eGcvLy8vLzdWY0ZYRC8vLy8vdGljT1lQLy8vLyszTy9kdy8vLy8vN2dHOEdELy8vLy91UnZaY1AvLy8vKzU1dEpnLy8vLy83c0U5ZkQvLy8vL3U4YTBZUC8vLy8rODVOZncvLy8vLzcydjBPRC8vLy8vdnNTNThQLy8vLysvajdMZy8vLy8vOENrbS9ELy8vLy93VytVNFAvLy8vL0NoSDN3Ly8vLy84TlBkdUQvLy8vL3hHUmY4UC8vLy8vRkwxamcvLy8vLzhaTmZIRC8vLy8veHc4NjRQLy8vLy9JTFY1dy8vLy8vOGo0VjJELy8vLy95ZzFBY1AvLy8vL0syRGxnLy8vLy84dUk4SEQvLy8vLzBpUDBjUC8vLy8vU1lQdmcvLy8vLzlOMTVQRC8vLy8vMUVEZDRQLy8vLy9WVmNidy8vLy8vOVlnditELy8vLy8xeldvOFAvLy8vL1lBS0hnLy8vLy85a1ZpdkQvLy8vLzJlQ0Q0UC8vLy8vYS9xZHcvLy8vLzl2QVplRC8vLy8vM042SmNQLy8vLy9kcVlKZy8vLy8vOTYrYTNELy8vLy8zNGxrWVAvLy8vL2duazF3Ly8vLy8rRnBSbUQvLy8vLzRuNHZjUC8vLy8valNTaGcvLy8vLytSZUVYRC8vLy8vNVZjdTRQLy8vLy9tUnkzdy8vLy8vK2MzRU9ELy8vLy82Q2NQOFAvLy8vL3BGdkxnLy8vLy8rb0c4ZkQvLy8vLzZ2YlU0UC8vLy8vcjV0UHcvLy8vLyt6V3R1RC8vLy8vN2NhMThQLy8vLy91djlOZy8vLy8vKyt2MG5ELy8vLy84SisxWVAvLy8vL3hqN1J3Ly8vLy8vSi9sMkQvLy8vLzgyK1djUC8vLy8vMFgzbGcvLy8vLy9WUGVIRC8vLy8vOWo5YllQLy8vLy8zTDFwdy8vLy8vL2dvZCtELy8vLy8rUTg4Y1AvLy8vLzZDRm5nLy8vLy8vcjRXUEQvLy8vLysrZzc0UC8vLy8vODJEcncvLy8vLy8zSUhlRC8vLy8vL3JnYzhQLy8vLy8vcC8vZ0FBQUFBQUNYL3ZBQUFBQUFBWWZoNEFBQUFBQUNkK0R3QUFBQUFBTncvbUFBQUFBQUJHRDljQUFBQUFBRlVPQmdBQUFBQUFaQTMzQUFBQUFBQnpEQ1lBQUFBQUFIalJsd0FBQUFBQWtRcEdBQUFBQUFDYTJVOEFBQUFBQUs4SVpnQUFBQUFBdmdoWEFBQUFBQURObWk0QUFBQUFBTndHZHdBQUFBQUE2NWhPQUFBQUFBRDZtRDhBQUFBQUFRbVdiZ0FBQUFBQkdKWmZBQUFBQUFFbmxJNEFBQUFBQVRhVWZ3QUFBQUFCUlpLdUFBQUFBQUZVa3A4QUFBQUFBV09RemdBQUFBQUJjcEMvQUFBQUFBR0NJcFlBQUFBQUFaQ08zd0FBQUFBQm9DQzJBQUFBQUFHdklLY0FBQUFBQWI0ZTFnQUFBQUFCelI3SEFBQUFBQUhjSFBZQUFBQUFBZXNjNXdBQUFBQUIraHNXQUFBQUFBSUhZQThBQUFBQUFoZ1pOZ0FBQUFBQ0pWNHZBQUFBQUFJMnF2NEFBQUFBQWtOY1R3QUFBQUFDVktrZUFBQUFBQUpoV204QUFBQUFBbktuUGdBQUFBQUNmK3czQUFBQUFBS1FwVjRBQUFBQUFwM3FWd0FBQUFBQ3JxTitBQUFBQUFLNzZIY0FBQUFBQXMwMVJnQUFBQUFDMmVhWEFBQUFBQUxyTTJZQUFBQUFBdmZrdHdBQUFBQURDVEdHQUFBQUFBTVdkbjhBQUFBQUF5Y3ZwZ0FBQUFBRE5IU2ZBQUFBQUFORkxjWUFBQUFBQTFKeXZ3QUFBQUFEWXl2bUFBQUFBQU53Y044QUFBQUFBNEc5cmdBQUFBQURqbTcvQUFBQUFBT2Z1ODRBQUFBQUE2eHRId0FBQUFBRHZibnVBQUFBQUFQSy91Y0FBQUFBQTl1NERnQUFBQUFENlAwSEFBQUFBQVA1dGk0QUFBQUFCQWI3SndBQUFBQUVHRWYyQUFBQUFBUWsrVWNBQUFBQUJEWkdGZ0FBQUFBRVF2ZG5BQUFBQUFSVVJEWUFBQUFBQkY4Nmp3QUFBQUFFY3RYK0FBQUFBQVI5T0s4QUFBQUFCSkRVSGdBQUFBQUVtemJQQUFBQUFBU3UwajRBQUFBQUJMbklsd0FBQUFBRXpXUUdBQUFBQUFUWHhyY0FBQUFBQk90aUpnQUFBQUFFOWNUWEFBQUFBQVVKWUVZQUFBQUFCUlBDOXdBQUFBQUZKMTVtQUFBQUFBVXh3UmNBQUFBQUJVVmNoZ0FBQUFBRlQ3ODNBQUFBQUFWaldxWUFBQUFBQlc1US93QUFBQUFGZ2V4dUFBQUFBQVdNVHg4QUFBQUFCWi9xamdBQUFBQUZxazAvQUFBQUFBVzk2SzRBQUFBQUJjaExYd0FBQUFBRjIrYk9BQUFBQUFYbVNYOEFBQUFBQmZuazdnQUFBQUFHQk50SEFBQUFBQVlZZHJZQUFBQUFCaUxaWndBQUFBQUdOblRXQUFBQUFBWkExNGNBQUFBQUJsUnk5Z0FBQUFBR1h0V25BQUFBQUFaeWNSWUFBQUFBQm56VHh3QUFBQUFHa0c4MkFBQUFBQWFhMGVjQUFBQUFCcTV0VmdBQUFBQUd1V092QUFBQUFBYk0veDRBQUFBQUJ0ZGh6d0FBQUFBRzZ2MCtBQUFBQUFiMVgrOEFBQUFBQndqN1hnQUFBQUFIRTE0UEFBQUFBQWNtK1g0QUFBQUFCekZjTHdBQUFBQUhSUGVlQUFBQUFBZFA3ZmNBQUFBQUIyT0paZ0FBQUFBSGJld1hBQUFBQUFlQmg0WUFBQUFBQjR2cU53QUFBQUFIbjRXbUFBQUFBQWVwNkZjQUFBQUFCNzJEeGdBQUFBQUh4K1ozQUFBQUFBZmJnZVlBQUFBQUIrWGtsd0FBQUFBSCtZQUdBREFRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNCQVVDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkF2Ly91cDRBQVAvL3g4QUJCUC8vdWJBQUNQLy91YkFBQ1AvL3g4QUJEUC8veDhBQkVFeE5WQUJGUkZRQVJWTlVBRVZYVkFCRlVGUUFBQUFBQVFBQkFBQUFBUUFCQ2tWVFZEVkZSRlFzVFRNdU1pNHdMRTB4TVM0eExqQUs= +kind: ConfigMap +metadata: + annotations: + use-subpath: "true" + labels: + app: forgejo + name: forgejo-localtime-configmap