├── syncthing ├── README.md └── syncthing.yml ├── README.md ├── speedtest-tracker ├── README.md ├── postgres.yml └── speedtest-tracker.yml ├── nextcloud ├── environment.yml ├── redis.yml ├── cron.yml ├── mariadb.yml └── nextcloud.yml ├── nginx └── nginx.yml ├── redis └── redis.yml ├── guacamole ├── guacd.yml ├── guacamole.yml └── postgresql.yml ├── adminer └── adminer.yml ├── rabbitmq └── rabbitmq.yml ├── firefly-iii ├── firefly-iii.yml ├── postgresql.yml └── firefly-iii-env-secret.yml ├── minio ├── console.yml └── minio.yml ├── mongo-express └── mongo-express.yml ├── mongodb └── mongodb.yml ├── node-red └── node-red.yml ├── metabase ├── postgres │ ├── metabase.yml │ └── postgres.yml └── sqlite │ └── metabase.yml ├── homebox └── homebox.yml ├── apache-answer └── answer.yml ├── filestash └── filestash.yml ├── qdrant └── qdrant.yml ├── garage ├── webui.yml ├── configuration-cm.yml └── garage.yml ├── trilium └── trilium.yml ├── cloudBeaver └── cloudBeaver.yml ├── vaultWarden └── vaultWarden.yml ├── neo4j └── neo4j.yml ├── gatus └── gatus.yml ├── homeassistant └── homeassistant.yml ├── pyiserver └── pypiserver.yml ├── focalboard └── focalboard.yml ├── grafana └── grafana.yml ├── timescaledb └── timescaledb.yml ├── redmine ├── postgres.yml └── redmine.yml ├── nocodb ├── nocodb.yml └── postgres.yml ├── gitea └── gitea.yml ├── heimdall └── heimdall.yml ├── rally ├── rally.yml └── postgres.yml ├── mysql └── mysql.yml ├── keycloak ├── postgres.yml └── keycloak.yml ├── pgadmin └── pgadmin.yml ├── kong └── kong.yml ├── photoprism ├── mariadb.yml └── photoprism.yml ├── wordpress ├── mysql.yml └── wordpress.yml ├── postgres └── postgres.yml ├── navidrome └── navidrome.yml ├── haproxy └── haproxy.yml ├── influxdb └── influxdb.yml ├── dashy └── dashy.yml ├── emqx └── emqx.yml ├── shinobi └── shinobi.yml ├── homarr └── homarr.yml ├── privoxy └── privoxy.yml └── mosquitto └── mosquitto.yml /syncthing/README.md: -------------------------------------------------------------------------------- 1 | # Syncthing 2 | 3 | Replace the path in the PV with one of your choice 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # K8s manifests 2 | 3 | A collection of K8s manifests to deploy common applications. 4 | 5 | Those manifests are meant to deploy the bare minimum for applications to run according to expections. 6 | This generally consists of deployments, services as well as PVCs if the application requires persistent storage. 7 | -------------------------------------------------------------------------------- /speedtest-tracker/README.md: -------------------------------------------------------------------------------- 1 | # SpeedTest-Tracker 2 | 3 | Please configure the `dnsConfig` section of the pod specification according to your needs: 4 | 5 | ```yml 6 | dnsPolicy: None 7 | dnsConfig: 8 | nameservers: 9 | - 10.152.183.10 10 | - 8.8.8.8 11 | searches: 12 | - speedtest-tracker.svc.cluster.local 13 | options: 14 | - name: ndots 15 | value: "5" 16 | ``` 17 | -------------------------------------------------------------------------------- /nextcloud/environment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: environment 5 | type: Opaque 6 | stringData: 7 | # MariaDB 8 | MYSQL_DATABASE: nextcloud 9 | MYSQL_USER: nextcloud 10 | MYSQL_PASSWORD: keyboardcat 11 | MYSQL_ROOT_PASSWORD: keyboardcat 12 | 13 | # Redis 14 | REDIS_HOST: redis 15 | REDIS_PORT: "6379" 16 | 17 | # NextCloud config 18 | OVERWRITEPROTOCOL: https 19 | #TRUSTED_PROXIES: 192.168.1.2 20 | -------------------------------------------------------------------------------- /nginx/nginx.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: nginx 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: nginx 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: nginx 14 | spec: 15 | containers: 16 | - name: nginx 17 | image: nginx 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: nginx 23 | spec: 24 | ports: 25 | - port: 80 26 | selector: 27 | app.kubernetes.io/name: nginx 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /nextcloud/redis.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: redis 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: redis 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: redis 14 | spec: 15 | containers: 16 | - name: redis 17 | image: redis:7.2.1 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: redis 23 | spec: 24 | ports: 25 | - port: 6379 26 | selector: 27 | app.kubernetes.io/name: redis 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /redis/redis.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: redis 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: redis 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: redis 14 | spec: 15 | containers: 16 | - name: redis 17 | image: redis:6-alpine 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: redis 23 | spec: 24 | ports: 25 | - port: 6379 26 | selector: 27 | app.kubernetes.io/name: redis 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /guacamole/guacd.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: guacd 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: guacd 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: guacd 14 | spec: 15 | containers: 16 | - name: guacd 17 | image: guacamole/guacd 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: guacd 23 | spec: 24 | ports: 25 | - port: 4822 26 | selector: 27 | app.kubernetes.io/name: guacd 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /adminer/adminer.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: adminer 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: adminer 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: adminer 14 | spec: 15 | containers: 16 | - name: adminer 17 | image: adminer 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: adminer 23 | spec: 24 | ports: 25 | - port: 8080 26 | selector: 27 | app.kubernetes.io/name: adminer 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /rabbitmq/rabbitmq.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: rabbitmq 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: rabbitmq 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: rabbitmq 14 | spec: 15 | containers: 16 | - name: rabbitmq 17 | image: rabbitmq:3 18 | --- 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: rabbitmq 23 | spec: 24 | ports: 25 | - port: 5672 26 | selector: 27 | app.kubernetes.io/name: rabbitmq 28 | type: ClusterIP 29 | -------------------------------------------------------------------------------- /firefly-iii/firefly-iii.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: firefly-iii 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: firefly-iii 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: firefly-iii 14 | spec: 15 | containers: 16 | - name: firefly-iii 17 | image: fireflyiii/core:latest 18 | envFrom: 19 | - secretRef: 20 | name: firefly-iii-env 21 | --- 22 | apiVersion: v1 23 | kind: Service 24 | metadata: 25 | name: firefly-iii 26 | spec: 27 | ports: 28 | - port: 8080 29 | selector: 30 | app.kubernetes.io/name: firefly-iii 31 | type: ClusterIP 32 | -------------------------------------------------------------------------------- /minio/console.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: minio-console 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: minio-console 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: minio-console 14 | spec: 15 | containers: 16 | - name: minio-console 17 | image: huncrys/minio-console:v1.8.1 18 | env: 19 | - name: CONSOLE_MINIO_SERVER 20 | value: http://minio:9000 21 | --- 22 | apiVersion: v1 23 | kind: Service 24 | metadata: 25 | name: minio-console 26 | spec: 27 | type: ClusterIP 28 | ports: 29 | - port: 9090 30 | selector: 31 | app.kubernetes.io/name: minio-console 32 | -------------------------------------------------------------------------------- /mongo-express/mongo-express.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mongo-express 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: mongo-express 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: mongo-express 14 | spec: 15 | containers: 16 | - name: mongo-express 17 | image: mongo-express 18 | env: 19 | - name: ME_CONFIG_MONGODB_URL 20 | value: mongodb://172.16.98.151 21 | 22 | --- 23 | apiVersion: v1 24 | kind: Service 25 | metadata: 26 | name: mongo-express 27 | spec: 28 | ports: 29 | - port: 8081 30 | selector: 31 | app.kubernetes.io/name: mongo-express 32 | type: ClusterIP 33 | -------------------------------------------------------------------------------- /nextcloud/cron.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: cron 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: cron 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: cron 14 | spec: 15 | containers: 16 | - image: nextcloud:30.0.2 17 | name: cron 18 | command: 19 | - /cron.sh 20 | envFrom: 21 | - secretRef: 22 | name: environment 23 | volumeMounts: 24 | - mountPath: /var/www/html 25 | name: nextcloud 26 | restartPolicy: Always 27 | volumes: 28 | - name: nextcloud 29 | persistentVolumeClaim: 30 | claimName: nextcloud 31 | -------------------------------------------------------------------------------- /mongodb/mongodb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mongo 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mongo 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mongo 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mongo 25 | spec: 26 | volumes: 27 | - name: mongo 28 | persistentVolumeClaim: 29 | claimName: mongo 30 | containers: 31 | - name: mongo 32 | image: mongo 33 | volumeMounts: 34 | - mountPath: /data/db 35 | name: mongo 36 | --- 37 | apiVersion: v1 38 | kind: Service 39 | metadata: 40 | name: mongo 41 | spec: 42 | ports: 43 | - port: 27017 44 | selector: 45 | app.kubernetes.io/name: mongo 46 | type: ClusterIP 47 | -------------------------------------------------------------------------------- /node-red/node-red.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: node-red 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 100Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: node-red 17 | spec: 18 | replicas: 1 19 | selector: 20 | matchLabels: 21 | app.kubernetes.io/name: node-red 22 | template: 23 | metadata: 24 | labels: 25 | app.kubernetes.io/name: node-red 26 | spec: 27 | volumes: 28 | - name: node-red 29 | persistentVolumeClaim: 30 | claimName: node-red 31 | containers: 32 | - name: node-red 33 | image: nodered/node-red 34 | volumeMounts: 35 | - mountPath: /data 36 | name: node-red 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: node-red 42 | spec: 43 | ports: 44 | - port: 1880 45 | selector: 46 | app.kubernetes.io/name: node-red 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /metabase/postgres/metabase.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: metabase 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: metabase 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: metabase 14 | spec: 15 | containers: 16 | - name: metabase 17 | image: metabase/metabase 18 | env: 19 | - name: MB_DB_TYPE 20 | value: postgres 21 | - name: MB_DB_DBNAME 22 | value: metabase 23 | - name: MB_DB_PORT 24 | value: "5432" 25 | - name: MB_DB_USER 26 | value: postgres 27 | - name: MB_DB_PASS 28 | value: mypassword 29 | - name: MB_DB_HOST 30 | value: postgres 31 | --- 32 | apiVersion: v1 33 | kind: Service 34 | metadata: 35 | name: metabase 36 | spec: 37 | ports: 38 | - port: 3000 39 | selector: 40 | app.kubernetes.io/name: metabase 41 | type: ClusterIP 42 | -------------------------------------------------------------------------------- /homebox/homebox.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: homebox 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: homebox 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: homebox 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: homebox 25 | spec: 26 | volumes: 27 | - name: homebox 28 | persistentVolumeClaim: 29 | claimName: homebox 30 | containers: 31 | - name: homebox 32 | image: ghcr.io/sysadminsmedia/homebox:latest 33 | volumeMounts: 34 | - mountPath: /data 35 | name: homebox 36 | 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: homebox 42 | namespace: homebox 43 | spec: 44 | ports: 45 | - port: 7745 46 | selector: 47 | app.kubernetes.io/name: homebox 48 | type: ClusterIP 49 | -------------------------------------------------------------------------------- /apache-answer/answer.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: apache-answer 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: apache-answer 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: apache-answer 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: apache-answer 25 | spec: 26 | containers: 27 | - name: apache-answer 28 | image: apache/answer:latest 29 | volumeMounts: 30 | - mountPath: /data 31 | name: data 32 | volumes: 33 | - name: data 34 | persistentVolumeClaim: 35 | claimName: apache-answer 36 | 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: apache-answer 42 | spec: 43 | ports: 44 | - port: 80 45 | selector: 46 | app.kubernetes.io/name: apache-answer 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /filestash/filestash.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: filestash 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: filestash 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: filestash 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: filestash 25 | spec: 26 | containers: 27 | - name: filestash 28 | image: machines/filestash:6b271d3 29 | # env: 30 | volumeMounts: 31 | - mountPath: /app/data/state 32 | name: state 33 | volumes: 34 | - name: state 35 | persistentVolumeClaim: 36 | claimName: filestash 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: filestash 42 | spec: 43 | ports: 44 | - port: 8334 45 | selector: 46 | app.kubernetes.io/name: filestash 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /qdrant/qdrant.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: qdrant 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: qdrant 16 | spec: 17 | replicas: 1 18 | strategy: 19 | type: Recreate 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: qdrant 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: qdrant 27 | spec: 28 | containers: 29 | - name: qdrant 30 | image: qdrant/qdrant:v1.15.4 31 | volumeMounts: 32 | - mountPath: /qdrant/storage 33 | name: qdrant 34 | volumes: 35 | - name: qdrant 36 | persistentVolumeClaim: 37 | claimName: qdrant 38 | --- 39 | apiVersion: v1 40 | kind: Service 41 | metadata: 42 | name: qdrant 43 | spec: 44 | ports: 45 | - port: 6333 46 | selector: 47 | app.kubernetes.io/name: qdrant 48 | type: ClusterIP 49 | --- 50 | 51 | -------------------------------------------------------------------------------- /garage/webui.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: garage-webui 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: garage-webui 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: garage-webui 14 | spec: 15 | containers: 16 | - name: garage-webui 17 | image: khairul169/garage-webui:latest 18 | env: 19 | - name: API_BASE_URL 20 | value: http://garage:3903 21 | - name: S3_ENDPOINT_URL 22 | value: http://garage:3900 23 | volumeMounts: 24 | - mountPath: /etc/garage.toml 25 | name: configuration 26 | subPath: garage.toml 27 | volumes: 28 | - name: configuration 29 | configMap: 30 | name: configuration 31 | --- 32 | apiVersion: v1 33 | kind: Service 34 | metadata: 35 | name: garage-webui 36 | spec: 37 | ports: 38 | - port: 3909 39 | selector: 40 | app.kubernetes.io/name: garage-webui 41 | type: ClusterIP 42 | -------------------------------------------------------------------------------- /trilium/trilium.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: trilium 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 300Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: trilium 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: trilium 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: trilium 25 | spec: 26 | containers: 27 | - name: trilium 28 | image: zadam/trilium 29 | volumeMounts: 30 | - mountPath: /home/node/trilium-data 31 | name: trilium 32 | volumes: 33 | - name: trilium 34 | persistentVolumeClaim: 35 | claimName: trilium 36 | --- 37 | apiVersion: v1 38 | kind: Service 39 | metadata: 40 | labels: 41 | app.kubernetes.io/name: trilium 42 | name: trilium 43 | spec: 44 | ports: 45 | - port: 8080 46 | selector: 47 | app.kubernetes.io/name: trilium 48 | type: ClusterIP 49 | -------------------------------------------------------------------------------- /cloudBeaver/cloudBeaver.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: cloudbeaver 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: cloudbeaver 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: cloudbeaver 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: cloudbeaver 25 | spec: 26 | volumes: 27 | - name: workspace 28 | persistentVolumeClaim: 29 | claimName: cloudbeaver 30 | containers: 31 | - name: cloudbeaver 32 | image: dbeaver/cloudbeaver:23.2.5 33 | volumeMounts: 34 | - mountPath: /opt/cloudbeaver/workspace 35 | name: workspace 36 | 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: cloudbeaver 42 | spec: 43 | ports: 44 | - port: 8978 45 | selector: 46 | app.kubernetes.io/name: cloudbeaver 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /vaultWarden/vaultWarden.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: vaultwarden-data 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 20Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: vaultwarden 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: vaultwarden 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: vaultwarden 25 | spec: 26 | containers: 27 | - name: vaultwarden 28 | image: vaultwarden/server:latest 29 | volumeMounts: 30 | - mountPath: /data 31 | name: vaultwarden-data 32 | 33 | volumes: 34 | - name: vaultwarden-data 35 | persistentVolumeClaim: 36 | claimName: vaultwarden-data 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: vaultwarden 42 | spec: 43 | ports: 44 | - port: 80 45 | selector: 46 | app.kubernetes.io/name: vaultwarden 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /neo4j/neo4j.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: neo4j 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: neo4j 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: neo4j 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: neo4j 25 | spec: 26 | enableServiceLinks: false 27 | containers: 28 | - name: neo4j 29 | image: neo4j:5.12.0 30 | volumeMounts: 31 | - mountPath: /data 32 | name: data 33 | volumes: 34 | - name: data 35 | persistentVolumeClaim: 36 | claimName: neo4j 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: neo4j 42 | spec: 43 | type: ClusterIP 44 | selector: 45 | app.kubernetes.io/name: neo4j 46 | ports: 47 | - port: 7474 48 | name: neo4j-http 49 | - port: 7687 50 | name: neo4j-bolt 51 | -------------------------------------------------------------------------------- /garage/configuration-cm.yml: -------------------------------------------------------------------------------- 1 | # TODO: should be a secret 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: configuration 6 | namespace: garage 7 | data: 8 | garage.toml: | 9 | 10 | # Generated following https://garagehq.deuxfleurs.fr/documentation/quick-start/ 11 | 12 | metadata_dir = "/mnt/meta" 13 | data_dir = "/mnt/data" 14 | db_engine = "sqlite" # Or "lmdb" 15 | 16 | replication_factor = 1 17 | 18 | rpc_bind_addr = "[::]:3901" 19 | rpc_public_addr = "127.0.0.1:3901" 20 | rpc_secret = "1bf2edfc6808068c734e65c1189e0010650b3e8f37602b327ba223bbb823630d" 21 | 22 | [s3_api] 23 | s3_region = "garage" 24 | api_bind_addr = "[::]:3900" 25 | root_domain = ".s3.garage.localhost" 26 | 27 | [s3_web] 28 | bind_addr = "[::]:3902" 29 | root_domain = ".web.garage.localhost" 30 | index = "index.html" 31 | 32 | [k2v_api] 33 | api_bind_addr = "[::]:3904" 34 | 35 | [admin] 36 | api_bind_addr = "[::]:3903" 37 | admin_token = "q+4+WgR8CQ3e6rD/H0qo8+Zac/n8fTD7xoJ2hjxpZa4=" 38 | metrics_token = "+zwltFcZWoSk11bPgkeZNc0WSo48SnQlsJsQVsPAaKI=" 39 | -------------------------------------------------------------------------------- /gatus/gatus.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: gatus 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: gatus 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: gatus 14 | spec: 15 | containers: 16 | - name: gatus 17 | image: twinproduction/gatus 18 | volumeMounts: 19 | - mountPath: /config 20 | name: config 21 | volumes: 22 | - name: config 23 | configMap: 24 | name: gatus-config 25 | 26 | --- 27 | apiVersion: v1 28 | kind: ConfigMap 29 | metadata: 30 | name: gatus-config 31 | data: 32 | config.yml: | 33 | client: 34 | timeout: 5s 35 | endpoints: 36 | - name: app-01 37 | url: "http://192.168.1.3" 38 | interval: 5s 39 | conditions: 40 | - "[STATUS] == 200" 41 | 42 | --- 43 | apiVersion: v1 44 | kind: Service 45 | metadata: 46 | name: gatus 47 | spec: 48 | ports: 49 | - port: 8080 50 | selector: 51 | app.kubernetes.io/name: gatus 52 | type: ClusterIP 53 | -------------------------------------------------------------------------------- /homeassistant/homeassistant.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: homeassistant 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 5Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: homeassistant 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: homeassistant 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: homeassistant 25 | spec: 26 | volumes: 27 | - name: homeassistant 28 | persistentVolumeClaim: 29 | claimName: homeassistant 30 | containers: 31 | - name: homeassistant 32 | image: ghcr.io/home-assistant/home-assistant:latest 33 | volumeMounts: 34 | - mountPath: /config 35 | name: homeassistant 36 | --- 37 | apiVersion: v1 38 | kind: Service 39 | metadata: 40 | name: homeassistant 41 | namespace: homeassistant 42 | spec: 43 | ports: 44 | - port: 8123 45 | selector: 46 | app.kubernetes.io/name: homeassistant 47 | type: ClusterIP 48 | -------------------------------------------------------------------------------- /guacamole/guacamole.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: guacamole 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: guacamole 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: guacamole 14 | spec: 15 | containers: 16 | - name: guacamole 17 | image: guacamole/guacamole 18 | env: 19 | - name: POSTGRESQL_HOSTNAME 20 | value: postgres 21 | - name: POSTGRES_PORT 22 | value: "5432" 23 | - name: POSTGRESQL_DATABASE 24 | value: postgres 25 | - name: POSTGRESQL_USER 26 | value: postgres 27 | - name: POSTGRESQL_PASSWORD 28 | value: guacpassword 29 | - name: GUACD_HOSTNAME 30 | value: guacd 31 | - name: GUACD_PORT 32 | value: "4822" 33 | 34 | --- 35 | apiVersion: v1 36 | kind: Service 37 | metadata: 38 | name: guacamole 39 | spec: 40 | ports: 41 | - port: 8080 42 | selector: 43 | app.kubernetes.io/name: guacamole 44 | type: ClusterIP 45 | -------------------------------------------------------------------------------- /guacamole/postgresql.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 100Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | containers: 27 | - name: postgres 28 | image: postgres:15.1 29 | env: 30 | - name: POSTGRES_PASSWORD 31 | value: guacpassword 32 | volumeMounts: 33 | - mountPath: /var/lib/postgresql/data 34 | name: postgres 35 | volumes: 36 | - name: postgres 37 | persistentVolumeClaim: 38 | claimName: postgres 39 | 40 | --- 41 | apiVersion: v1 42 | kind: Service 43 | metadata: 44 | name: postgres 45 | spec: 46 | ports: 47 | - port: 5432 48 | selector: 49 | app.kubernetes.io/name: postgres 50 | type: ClusterIP 51 | -------------------------------------------------------------------------------- /pyiserver/pypiserver.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: pypiserver 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: pypiserver 16 | spec: 17 | replicas: 1 18 | strategy: 19 | type: Recreate 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: pypiserver 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: pypiserver 27 | spec: 28 | containers: 29 | - name: pypiserver 30 | image: pypiserver/pypiserver:v2.4.0 31 | args: ["run", "-a", ".", "-P", "."] 32 | volumeMounts: 33 | - mountPath: /data/packages 34 | name: packages 35 | volumes: 36 | - name: packages 37 | persistentVolumeClaim: 38 | claimName: pypiserver 39 | --- 40 | apiVersion: v1 41 | kind: Service 42 | metadata: 43 | name: pypiserver 44 | spec: 45 | type: ClusterIP 46 | selector: 47 | app.kubernetes.io/name: pypiserver 48 | ports: 49 | - port: 8080 50 | -------------------------------------------------------------------------------- /focalboard/focalboard.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: focalboard 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: focalboard 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: focalboard 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: focalboard 25 | spec: 26 | enableServiceLinks: false 27 | containers: 28 | - name: focalboard 29 | image: mattermost/focalboard 30 | volumeMounts: 31 | - mountPath: /opt/focalboard/data 32 | name: focalboard 33 | volumes: 34 | - name: focalboard 35 | persistentVolumeClaim: 36 | claimName: focalboard 37 | --- 38 | apiVersion: v1 39 | kind: Service 40 | metadata: 41 | name: focalboard 42 | labels: 43 | app.kubernetes.io/name: focalboard 44 | spec: 45 | ports: 46 | - port: 8000 47 | selector: 48 | app.kubernetes.io/name: focalboard 49 | type: ClusterIP 50 | -------------------------------------------------------------------------------- /nextcloud/mariadb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mariadb 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mariadb 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mariadb 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mariadb 25 | spec: 26 | containers: 27 | - name: mariadb 28 | image: mariadb:11.5.2 29 | envFrom: 30 | - secretRef: 31 | name: environment 32 | volumeMounts: 33 | - mountPath: /var/lib/mysql 34 | name: mariadb 35 | volumes: 36 | - name: mariadb 37 | persistentVolumeClaim: 38 | claimName: mariadb 39 | --- 40 | apiVersion: v1 41 | kind: Service 42 | metadata: 43 | name: mariadb 44 | spec: 45 | type: ClusterIP 46 | selector: 47 | app.kubernetes.io/name: mariadb 48 | ports: 49 | - port: 3306 50 | -------------------------------------------------------------------------------- /nextcloud/nextcloud.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: nextcloud 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 100Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: nextcloud 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: nextcloud 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: nextcloud 25 | spec: 26 | containers: 27 | - name: nextcloud 28 | image: nextcloud:30.0.2 29 | volumeMounts: 30 | - mountPath: /var/www/html 31 | name: nextcloud 32 | envFrom: 33 | - secretRef: 34 | name: environment 35 | volumes: 36 | - name: nextcloud 37 | persistentVolumeClaim: 38 | claimName: nextcloud 39 | --- 40 | apiVersion: v1 41 | kind: Service 42 | metadata: 43 | name: nextcloud 44 | spec: 45 | ports: 46 | - port: 80 47 | selector: 48 | app.kubernetes.io/name: nextcloud 49 | type: ClusterIP 50 | -------------------------------------------------------------------------------- /minio/minio.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: minio 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 500Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: minio 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: minio 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: minio 25 | spec: 26 | volumes: 27 | - name: minio 28 | persistentVolumeClaim: 29 | claimName: minio 30 | containers: 31 | - name: minio 32 | image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z 33 | command: 34 | - /bin/bash 35 | - -c 36 | args: 37 | - minio server /data --address :9000 38 | volumeMounts: 39 | - mountPath: /data 40 | name: minio 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: minio 46 | spec: 47 | type: ClusterIP 48 | ports: 49 | - port: 9000 50 | selector: 51 | app.kubernetes.io/name: minio 52 | --- 53 | 54 | -------------------------------------------------------------------------------- /grafana/grafana.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: grafana 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: grafana 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: grafana 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: grafana 25 | spec: 26 | volumes: 27 | - name: grafana 28 | persistentVolumeClaim: 29 | claimName: grafana 30 | containers: 31 | - name: grafana 32 | image: grafana/grafana 33 | # env: 34 | # - name: GF_INSTALL_PLUGINS 35 | # value: yesoreyeram-infinity-datasource 36 | volumeMounts: 37 | - mountPath: /var/lib/grafana 38 | name: grafana 39 | --- 40 | apiVersion: v1 41 | kind: Service 42 | metadata: 43 | name: grafana 44 | spec: 45 | ports: 46 | - port: 3000 47 | selector: 48 | app.kubernetes.io/name: grafana 49 | type: ClusterIP 50 | -------------------------------------------------------------------------------- /timescaledb/timescaledb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: timescaledb 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: timescaledb 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: timescaledb 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: timescaledb 25 | spec: 26 | volumes: 27 | - name: timescaledb 28 | persistentVolumeClaim: 29 | claimName: timescaledb 30 | containers: 31 | - name: timescaledb 32 | image: timescale/timescaledb:2.17.0-pg16 33 | env: 34 | - name: POSTGRES_PASSWORD 35 | value: mypassword 36 | volumeMounts: 37 | - name: timescaledb 38 | mountPath: /var/lib/postgresql/data 39 | 40 | --- 41 | apiVersion: v1 42 | kind: Service 43 | metadata: 44 | name: timescaledb 45 | spec: 46 | ports: 47 | - port: 5432 48 | selector: 49 | app.kubernetes.io/name: timescaledb 50 | type: ClusterIP 51 | -------------------------------------------------------------------------------- /redmine/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | containers: 27 | - name: postgres 28 | image: postgres 29 | env: 30 | - name: POSTGRES_USER 31 | value: redmine 32 | - name: POSTGRES_PASSWORD 33 | value: mypassword 34 | volumeMounts: 35 | - mountPath: /var/lib/postgresql/data 36 | name: postgres 37 | volumes: 38 | - name: postgres 39 | persistentVolumeClaim: 40 | claimName: postgres 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: postgres 46 | spec: 47 | type: ClusterIP 48 | ports: 49 | - port: 5432 50 | selector: 51 | app.kubernetes.io/name: postgres 52 | -------------------------------------------------------------------------------- /nocodb/nocodb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: nocodb 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 200Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: nocodb 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: nocodb 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: nocodb 25 | spec: 26 | containers: 27 | - name: nocodb 28 | image: nocodb/nocodb 29 | env: 30 | - name: NC_DB 31 | value: pg://postgres:5432?u=nocodb&p=nocodb&d=nocodb 32 | - name: NC_AUTH_JWT_SECRET 33 | value: keyboardcat 34 | volumeMounts: 35 | - mountPath: /usr/app/data 36 | name: nocodb 37 | volumes: 38 | - name: nocodb 39 | persistentVolumeClaim: 40 | claimName: nocodb 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: nocodb 46 | spec: 47 | type: ClusterIP 48 | selector: 49 | app.kubernetes.io/name: nocodb 50 | ports: 51 | - port: 8080 52 | -------------------------------------------------------------------------------- /gitea/gitea.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: gitea 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: gitea 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: gitea 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: gitea 25 | spec: 26 | containers: 27 | - name: gitea 28 | image: docker.gitea.com/gitea:1.23.5 29 | env: 30 | - name: USER_UID 31 | value: "1000" 32 | - name: USER_GID 33 | value: "1000" 34 | volumeMounts: 35 | - mountPath: /data 36 | name: data 37 | volumes: 38 | - name: data 39 | persistentVolumeClaim: 40 | claimName: gitea 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: gitea 46 | spec: 47 | ports: 48 | - name: http 49 | port: 3000 50 | - name: ssh 51 | port: 22 52 | selector: 53 | app.kubernetes.io/name: gitea 54 | type: ClusterIP 55 | -------------------------------------------------------------------------------- /metabase/postgres/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | volumes: 27 | - name: postgres 28 | persistentVolumeClaim: 29 | claimName: postgres 30 | containers: 31 | - name: postgres 32 | image: postgres 33 | env: 34 | - name: POSTGRES_PASSWORD 35 | value: mypassword 36 | - name: POSTGRES_DB 37 | value: metabase 38 | volumeMounts: 39 | - mountPath: /var/lib/postgresql/data 40 | name: postgres 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: postgres 46 | spec: 47 | ports: 48 | - port: 5432 49 | selector: 50 | app.kubernetes.io/name: postgres 51 | type: ClusterIP 52 | -------------------------------------------------------------------------------- /heimdall/heimdall.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: heimdall 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: heimdall 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: heimdall 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: heimdall 25 | spec: 26 | volumes: 27 | - name: heimdall 28 | persistentVolumeClaim: 29 | claimName: heimdall 30 | containers: 31 | - name: heimdall 32 | image: lscr.io/linuxserver/heimdall:latest 33 | env: 34 | - name: TZ 35 | value: Asia/Tokyo 36 | - name: PUID 37 | value: "1000" 38 | - name: PGID 39 | value: "1000" 40 | volumeMounts: 41 | - mountPath: /config 42 | name: heimdall 43 | --- 44 | apiVersion: v1 45 | kind: Service 46 | metadata: 47 | name: heimdall 48 | spec: 49 | ports: 50 | - port: 80 51 | selector: 52 | app.kubernetes.io/name: heimdall 53 | type: ClusterIP 54 | -------------------------------------------------------------------------------- /rally/rally.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: rally 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: rally 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: rally 14 | spec: 15 | containers: 16 | - name: rally 17 | image: rally/rally 18 | env: 19 | - name: DATABASE_URL 20 | value: postgres://postgres:mypassword@postgres:5432/rally 21 | - name: SECRET_PASSWORD 22 | value: WKjejTdIx3oaI5DD1waDAq2sPP4lFeXw 23 | - name: NEXT_PUBLIC_BASE_URL 24 | value: "192.168.1.2:30350" 25 | - name: SMTP_HOST 26 | value: "mail.example.com" 27 | - name: SMTP_PORT 28 | value: "25" 29 | - name: SMTP_SECURE 30 | value: "true" 31 | - name: NOREPLY_EMAIL 32 | value: "noreply@example.com" 33 | - name: SUPPORT_EMAIL 34 | value: "support@example.com" 35 | --- 36 | apiVersion: v1 37 | kind: Service 38 | metadata: 39 | name: rally 40 | spec: 41 | ports: 42 | - port: 3000 43 | selector: 44 | app.kubernetes.io/name: rally 45 | type: ClusterIP 46 | -------------------------------------------------------------------------------- /metabase/sqlite/metabase.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: metabase 5 | namespace: metabase 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 10Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: metabase 17 | namespace: metabase 18 | spec: 19 | replicas: 1 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: metabase 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: metabase 27 | spec: 28 | containers: 29 | - name: metabase 30 | image: metabase/metabase 31 | env: 32 | - name: MB_DB_FILE 33 | value: /metabase-data/metabase.db 34 | volumeMounts: 35 | - mountPath: /metabase-data 36 | name: metabase 37 | volumes: 38 | - name: metabase 39 | persistentVolumeClaim: 40 | claimName: metabase 41 | --- 42 | apiVersion: v1 43 | kind: Service 44 | metadata: 45 | name: metabase 46 | namespace: metabase 47 | spec: 48 | type: ClusterIP 49 | selector: 50 | app.kubernetes.io/name: metabase 51 | ports: 52 | - port: 3000 53 | -------------------------------------------------------------------------------- /mysql/mysql.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mysql 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mysql 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mysql 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mysql 25 | spec: 26 | volumes: 27 | - name: mysql 28 | persistentVolumeClaim: 29 | claimName: mysql 30 | containers: 31 | - name: mysql 32 | image: mysql 33 | env: 34 | - name: MYSQL_ROOT_PASSWORD 35 | value: keyboardcat 36 | - name: MYSQL_DATABASE 37 | value: myDb 38 | - name: MYSQL_USER 39 | value: myuser 40 | - name: MYSQL_PASSWORD 41 | value: mypassword 42 | volumeMounts: 43 | - mountPath: /var/lib/mysql 44 | name: mysql 45 | --- 46 | apiVersion: v1 47 | kind: Service 48 | metadata: 49 | name: mysql 50 | spec: 51 | ports: 52 | - port: 3306 53 | selector: 54 | app.kubernetes.io/name: mysql 55 | type: ClusterIP 56 | -------------------------------------------------------------------------------- /speedtest-tracker/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | containers: 27 | - name: postgres 28 | image: postgres:15.1 29 | env: 30 | - name: POSTGRES_PASSWORD 31 | value: password 32 | - name: POSTGRES_DB 33 | value: speedtest_tracker 34 | - name: POSTGRES_USER 35 | value: speedy 36 | volumeMounts: 37 | - mountPath: /var/lib/postgresql/data 38 | name: postgres 39 | volumes: 40 | - name: postgres 41 | persistentVolumeClaim: 42 | claimName: postgres 43 | 44 | --- 45 | apiVersion: v1 46 | kind: Service 47 | metadata: 48 | name: postgres 49 | spec: 50 | ports: 51 | - port: 5432 52 | selector: 53 | app.kubernetes.io/name: postgres 54 | type: ClusterIP 55 | -------------------------------------------------------------------------------- /keycloak/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | volumes: 27 | - name: postgres 28 | persistentVolumeClaim: 29 | claimName: postgres 30 | containers: 31 | - name: postgres 32 | image: postgres 33 | env: 34 | - name: POSTGRES_PASSWORD 35 | value: keycloak 36 | - name: POSTGRES_USER 37 | value: keycloak 38 | - name: POSTGRES_DB 39 | value: keycloak 40 | volumeMounts: 41 | - mountPath: /var/lib/postgresql/data 42 | name: postgres 43 | --- 44 | apiVersion: v1 45 | kind: Service 46 | metadata: 47 | name: postgres 48 | spec: 49 | ports: 50 | - port: 5432 51 | selector: 52 | app.kubernetes.io/name: postgres 53 | type: ClusterIP 54 | -------------------------------------------------------------------------------- /keycloak/keycloak.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: keycloak 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: keycloak 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: keycloak 14 | spec: 15 | containers: 16 | - name: keycloak 17 | image: quay.io/keycloak/keycloak:25.0.4 18 | args: ["start-dev"] 19 | env: 20 | - name: KEYCLOAK_ADMIN 21 | value: "admin" 22 | - name: KEYCLOAK_ADMIN_PASSWORD 23 | value: "admin" 24 | - name: KC_PROXY 25 | value: "edge" 26 | # DB 27 | - name: KC_DB 28 | value: postgres 29 | - name: KC_DB_USERNAME 30 | value: keycloak 31 | - name: KC_DB_PASSWORD 32 | value: keycloak 33 | - name: KC_DB_SCHEMA 34 | value: public 35 | - name: KC_DB_URL_HOST 36 | value: postgres 37 | - name: KC_DB_URL_DATABASE 38 | value: keycloak 39 | --- 40 | apiVersion: v1 41 | kind: Service 42 | metadata: 43 | name: keycloak 44 | spec: 45 | ports: 46 | - port: 8080 47 | selector: 48 | app.kubernetes.io/name: keycloak 49 | type: ClusterIP 50 | -------------------------------------------------------------------------------- /nocodb/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | namespace: nocodb 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 100Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: postgres 17 | namespace: nocodb 18 | spec: 19 | replicas: 1 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: postgres 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: postgres 27 | spec: 28 | volumes: 29 | - name: postgres 30 | persistentVolumeClaim: 31 | claimName: postgres 32 | containers: 33 | - name: postgres 34 | image: postgres:13 35 | env: 36 | - name: POSTGRES_PASSWORD 37 | value: nocodb 38 | - name: POSTGRES_USER 39 | value: nocodb 40 | - name: POSTGRES_DB 41 | value: nocodb 42 | volumeMounts: 43 | - mountPath: /var/lib/postgresql/data 44 | name: postgres 45 | --- 46 | apiVersion: v1 47 | kind: Service 48 | metadata: 49 | name: postgres 50 | namespace: nocodb 51 | spec: 52 | type: ClusterIP 53 | ports: 54 | - port: 5432 55 | selector: 56 | app.kubernetes.io/name: postgres 57 | -------------------------------------------------------------------------------- /pgadmin/pgadmin.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: pgadmin 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 10Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: pgadmin 17 | spec: 18 | replicas: 1 19 | selector: 20 | matchLabels: 21 | app.kubernetes.io/name: pgadmin 22 | template: 23 | metadata: 24 | labels: 25 | app.kubernetes.io/name: pgadmin 26 | spec: 27 | containers: 28 | - env: 29 | - name: PGADMIN_DEFAULT_EMAIL 30 | value: admin@example.com 31 | - name: PGADMIN_DEFAULT_PASSWORD 32 | value: keyboardcat 33 | - name: PGADMIN_PORT 34 | value: "80" 35 | image: dpage/pgadmin4 36 | name: pgadmin 37 | volumeMounts: 38 | - mountPath: /var/lib/pgadmin 39 | name: pgadmin 40 | volumes: 41 | - name: pgadmin 42 | persistentVolumeClaim: 43 | claimName: pgadmin 44 | --- 45 | apiVersion: v1 46 | kind: Service 47 | metadata: 48 | labels: 49 | app.kubernetes.io/name: pgadmin 50 | name: pgadmin 51 | spec: 52 | ports: 53 | port: 80 54 | selector: 55 | app.kubernetes.io/name: pgadmin 56 | type: ClusterIP 57 | -------------------------------------------------------------------------------- /kong/kong.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: kong 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: kong 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: kong 14 | spec: 15 | containers: 16 | - name: kong 17 | image: kong:3.4.0 18 | ports: 19 | - containerPort: 8000 20 | env: 21 | - name: KONG_DATABASE 22 | value: "off" 23 | - name: KONG_DECLARATIVE_CONFIG 24 | value: /kong/declarative/kong.yml 25 | volumeMounts: 26 | - mountPath: /kong/declarative/ 27 | name: config 28 | volumes: 29 | - name: config 30 | configMap: 31 | name: kong 32 | --- 33 | apiVersion: v1 34 | kind: Service 35 | metadata: 36 | name: kong 37 | spec: 38 | ports: 39 | - port: 8000 40 | selector: 41 | app.kubernetes.io/name: kong 42 | type: ClusterIP 43 | --- 44 | apiVersion: v1 45 | kind: ConfigMap 46 | metadata: 47 | name: kong 48 | data: 49 | kong.yml: | 50 | 51 | _format_version: "3.0" 52 | _transform: true 53 | services: 54 | - name: my-service 55 | url: http://my-service 56 | routes: 57 | - name: my-route 58 | paths: 59 | - / 60 | -------------------------------------------------------------------------------- /photoprism/mariadb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mariadb 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 100Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mariadb 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mariadb 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mariadb 25 | spec: 26 | containers: 27 | - name: mariadb 28 | image: mariadb:10.11 29 | env: 30 | - name: MYSQL_ROOT_PASSWORD 31 | value: photoprism 32 | - name: MYSQL_DATABASE 33 | value: photoprism 34 | - name: MYSQL_USER 35 | value: photoprism 36 | - name: MYSQL_PASSWORD 37 | value: photoprism 38 | volumeMounts: 39 | - mountPath: /var/lib/mysql 40 | name: mariadb 41 | volumes: 42 | - name: mariadb 43 | persistentVolumeClaim: 44 | claimName: mariadb 45 | --- 46 | apiVersion: v1 47 | kind: Service 48 | metadata: 49 | name: mariadb 50 | spec: 51 | type: ClusterIP 52 | selector: 53 | app.kubernetes.io/name: mariadb 54 | ports: 55 | - port: 3306 56 | -------------------------------------------------------------------------------- /rally/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | volumes: 27 | - name: postgres 28 | persistentVolumeClaim: 29 | claimName: postgres 30 | containers: 31 | - name: postgres:14.2 32 | image: postgres 33 | envFrom: 34 | - secretRef: 35 | name: postgresql-env 36 | volumeMounts: 37 | - mountPath: /var/lib/postgresql/data 38 | name: postgres 39 | --- 40 | apiVersion: v1 41 | kind: Secret 42 | metadata: 43 | name: postgresql-env 44 | type: Opaque 45 | stringData: 46 | POSTGRES_PASSWORD: dbpassword 47 | POSTGRES_DB: dbname 48 | POSTGRES_USER: dbuser 49 | --- 50 | apiVersion: v1 51 | kind: Service 52 | metadata: 53 | name: postgres 54 | spec: 55 | ports: 56 | - port: 5432 57 | selector: 58 | app.kubernetes.io/name: postgres 59 | type: ClusterIP 60 | -------------------------------------------------------------------------------- /firefly-iii/postgresql.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | volumes: 27 | - name: postgres 28 | persistentVolumeClaim: 29 | claimName: postgres 30 | containers: 31 | - name: postgres 32 | image: postgres 33 | envFrom: 34 | - secretRef: 35 | name: postgresql-env 36 | volumeMounts: 37 | - mountPath: /var/lib/postgresql/data 38 | name: postgres 39 | --- 40 | apiVersion: v1 41 | kind: Secret 42 | metadata: 43 | name: postgresql-env 44 | type: Opaque 45 | stringData: 46 | POSTGRES_PASSWORD: fireflydbpassword 47 | POSTGRES_DB: firefly 48 | POSTGRES_USER: firefly 49 | --- 50 | apiVersion: v1 51 | kind: Service 52 | metadata: 53 | name: postgres 54 | spec: 55 | ports: 56 | - port: 5432 57 | selector: 58 | app.kubernetes.io/name: postgres 59 | type: ClusterIP 60 | -------------------------------------------------------------------------------- /wordpress/mysql.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mysql 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mysql 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mysql 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mysql 25 | spec: 26 | volumes: 27 | - name: mysql 28 | persistentVolumeClaim: 29 | claimName: mysql 30 | containers: 31 | - name: mysql 32 | image: mysql:5.7 33 | env: 34 | - name: MYSQL_DATABASE 35 | value: wordpress 36 | - name: MYSQL_USER 37 | value: wordpress 38 | - name: MYSQL_PASSWORD 39 | value: YOUR_PASSWORD_HERE 40 | - name: MYSQL_RANDOM_ROOT_PASSWORD 41 | value: "1" 42 | volumeMounts: 43 | - mountPath: /var/lib/mysql 44 | name: mysql 45 | --- 46 | apiVersion: v1 47 | kind: Service 48 | metadata: 49 | name: mysql 50 | spec: 51 | ports: 52 | - port: 3306 53 | selector: 54 | app.kubernetes.io/name: mysql 55 | type: ClusterIP 56 | -------------------------------------------------------------------------------- /postgres/postgres.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgres 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: postgres 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: postgres 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: postgres 25 | spec: 26 | volumes: 27 | - name: postgres 28 | persistentVolumeClaim: 29 | claimName: postgres 30 | containers: 31 | - name: postgres 32 | image: postgres 33 | envFrom: 34 | - secretRef: 35 | name: postgresql-env 36 | volumeMounts: 37 | - mountPath: /var/lib/postgresql/data 38 | name: postgres 39 | --- 40 | apiVersion: v1 41 | kind: Secret 42 | metadata: 43 | name: postgresql-env 44 | type: Opaque 45 | stringData: 46 | POSTGRES_PASSWORD: dbpassword 47 | POSTGRES_DB: dbname 48 | POSTGRES_USER: dbuser 49 | --- 50 | apiVersion: v1 51 | kind: Service 52 | metadata: 53 | name: postgres 54 | spec: 55 | ports: 56 | - port: 5432 57 | selector: 58 | app.kubernetes.io/name: postgres 59 | type: ClusterIP 60 | -------------------------------------------------------------------------------- /redmine/redmine.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: redmine-files 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: redmine 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: redmine 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: redmine 25 | spec: 26 | containers: 27 | - name: redmine 28 | image: sameersbn/redmine:4.1.1-9 29 | env: 30 | - name: DB_ADAPTER 31 | value: postgresql 32 | - name: DB_USER 33 | value: redmine 34 | - name: DB_HOST 35 | value: postgres 36 | - name: DB_NAME 37 | value: redmine 38 | - name: DB_PASS 39 | value: mypassword 40 | volumeMounts: 41 | - mountPath: /home/redmine/data 42 | name: redmine-files 43 | volumes: 44 | - name: redmine-files 45 | persistentVolumeClaim: 46 | claimName: redmine-files 47 | --- 48 | apiVersion: v1 49 | kind: Service 50 | metadata: 51 | name: redmine 52 | spec: 53 | ports: 54 | - port: 80 55 | selector: 56 | app.kubernetes.io/name: redmine 57 | type: ClusterIP 58 | -------------------------------------------------------------------------------- /navidrome/navidrome.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: navidrome-data 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 5Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: navidrome-music 16 | spec: 17 | accessModes: 18 | - ReadWriteMany 19 | resources: 20 | requests: 21 | storage: 20Gi 22 | --- 23 | apiVersion: apps/v1 24 | kind: Deployment 25 | metadata: 26 | name: navidrome 27 | spec: 28 | replicas: 1 29 | selector: 30 | matchLabels: 31 | app.kubernetes.io/name: navidrome 32 | template: 33 | metadata: 34 | labels: 35 | app.kubernetes.io/name: navidrome 36 | spec: 37 | containers: 38 | - name: navidrome 39 | image: deluan/navidrome 40 | volumeMounts: 41 | - mountPath: /music 42 | name: music 43 | - mountPath: /data 44 | name: data 45 | volumes: 46 | - name: music 47 | persistentVolumeClaim: 48 | claimName: navidrome-music 49 | - name: data 50 | persistentVolumeClaim: 51 | claimName: navidrome-data 52 | --- 53 | apiVersion: v1 54 | kind: Service 55 | metadata: 56 | name: navidrome 57 | spec: 58 | ports: 59 | - port: 4533 60 | selector: 61 | app.kubernetes.io/name: navidrome 62 | type: ClusterIP 63 | -------------------------------------------------------------------------------- /wordpress/wordpress.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: wordpress 5 | namespace: wordpress 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 100Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: wordpress 17 | namespace: wordpress 18 | spec: 19 | replicas: 1 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: wordpress 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: wordpress 27 | spec: 28 | volumes: 29 | - name: wordpress 30 | persistentVolumeClaim: 31 | claimName: wordpress 32 | containers: 33 | - name: wordpress 34 | image: wordpress 35 | env: 36 | - name: WORDPRESS_DB_HOST 37 | value: mysql 38 | - name: WORDPRESS_DB_USER 39 | value: wordpress 40 | - name: WORDPRESS_DB_PASSWORD 41 | value: YOUR_PASSWORD_HERE 42 | - name: WORDPRESS_DB_NAME 43 | value: wordpress 44 | volumeMounts: 45 | - mountPath: /var/www/html 46 | name: wordpress 47 | --- 48 | apiVersion: v1 49 | kind: Service 50 | metadata: 51 | name: wordpress 52 | namespace: wordpress 53 | spec: 54 | ports: 55 | - port: 80 56 | selector: 57 | app.kubernetes.io/name: wordpress 58 | type: ClusterIP 59 | -------------------------------------------------------------------------------- /haproxy/haproxy.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: haproxy 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: haproxy 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: haproxy 14 | spec: 15 | containers: 16 | - name: haproxy 17 | image: haproxy:2.3 18 | volumeMounts: 19 | - mountPath: /usr/local/etc/haproxy/haproxy.cfg 20 | name: haproxy-config 21 | subPath: haproxy.cfg 22 | volumes: 23 | - name: haproxy-config 24 | configMap: 25 | name: haproxy-config 26 | 27 | --- 28 | apiVersion: v1 29 | kind: ConfigMap 30 | metadata: 31 | name: haproxy-config 32 | data: 33 | haproxy.cfg: | 34 | global 35 | stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners 36 | log stdout format raw local0 info 37 | 38 | defaults 39 | mode http 40 | timeout client 10s 41 | timeout connect 5s 42 | timeout server 10s 43 | timeout http-request 10s 44 | log global 45 | 46 | frontend front 47 | bind :80 48 | default_backend back 49 | 50 | backend back 51 | server server-0 192.168.1.1 check port 80 52 | 53 | --- 54 | apiVersion: v1 55 | kind: Service 56 | metadata: 57 | name: haproxy 58 | spec: 59 | type: ClusterIP 60 | selector: 61 | app.kubernetes.io/name: haproxy 62 | ports: 63 | - port: 80 64 | -------------------------------------------------------------------------------- /influxdb/influxdb.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: influxdb 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: influxdb 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: influxdb 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: influxdb 25 | spec: 26 | containers: 27 | - name: influxdb 28 | image: influxdb 29 | volumeMounts: 30 | - mountPath: /var/lib/influxdb2 31 | name: influxdb 32 | env: 33 | - name: DOCKER_INFLUXDB_INIT_MODE 34 | value: setup 35 | - name: DOCKER_INFLUXDB_INIT_USERNAME 36 | value: admin 37 | - name: DOCKER_INFLUXDB_INIT_PASSWORD 38 | value: mypassword 39 | - name: DOCKER_INFLUXDB_INIT_ORG 40 | value: my_org 41 | - name: DOCKER_INFLUXDB_INIT_BUCKET 42 | value: my_bucket 43 | volumes: 44 | - name: influxdb 45 | persistentVolumeClaim: 46 | claimName: influxdb 47 | --- 48 | apiVersion: v1 49 | kind: Service 50 | metadata: 51 | name: influxdb 52 | spec: 53 | ports: 54 | - port: 8086 55 | selector: 56 | app.kubernetes.io/name: influxdb 57 | type: ClusterIP 58 | -------------------------------------------------------------------------------- /dashy/dashy.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: dashy 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: dashy 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: dashy 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: dashy 25 | spec: 26 | containers: 27 | - name: dashy 28 | image: lissy93/dashy:latest 29 | volumeMounts: 30 | - mountPath: /app/public/ 31 | name: dashy 32 | volumes: 33 | - name: dashy 34 | persistentVolumeClaim: 35 | claimName: dashy 36 | --- 37 | # A Single-use pod to create the content of /app/public in the PV 38 | # TODO: this should be an initcontainer 39 | apiVersion: v1 40 | kind: Pod 41 | metadata: 42 | name: dashy-seeder 43 | spec: 44 | restartPolicy: OnFailure 45 | containers: 46 | - name: dashy-seeder 47 | image: lissy93/dashy:latest 48 | command: ["cp"] 49 | args: ["-r", "/app/public/", "/mnt/"] 50 | volumeMounts: 51 | - mountPath: /mnt/public 52 | name: dashy-seeder 53 | volumes: 54 | - name: dashy-seeder 55 | persistentVolumeClaim: 56 | claimName: dashy 57 | --- 58 | apiVersion: v1 59 | kind: Service 60 | metadata: 61 | name: dashy 62 | spec: 63 | ports: 64 | - port: 80 65 | selector: 66 | app.kubernetes.io/name: dashy 67 | type: ClusterIP 68 | -------------------------------------------------------------------------------- /emqx/emqx.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: emqx-data 5 | namespace: emqx 6 | spec: 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 10Gi 12 | --- 13 | apiVersion: apps/v1 14 | kind: Deployment 15 | metadata: 16 | name: emqx 17 | namespace: emqx 18 | spec: 19 | replicas: 1 20 | selector: 21 | matchLabels: 22 | app.kubernetes.io/name: emqx 23 | template: 24 | metadata: 25 | labels: 26 | app.kubernetes.io/name: emqx 27 | spec: 28 | containers: 29 | - name: emqx 30 | image: emqx:5.4.1 31 | env: 32 | - name: EMQX_NAME 33 | value: emqx 34 | - name: EMQX_HOST 35 | value: "192.168.1.2" 36 | volumeMounts: 37 | - mountPath: /opt/emqx/data/ 38 | name: data 39 | volumes: 40 | - name: data 41 | persistentVolumeClaim: 42 | claimName: emqx-data 43 | --- 44 | apiVersion: v1 45 | kind: Service 46 | metadata: 47 | name: emqx 48 | namespace: emqx 49 | spec: 50 | type: ClusterIP 51 | selector: 52 | app.kubernetes.io/name: emqx 53 | ports: 54 | 55 | --- 56 | apiVersion: v1 57 | kind: Service 58 | metadata: 59 | name: emqx 60 | namespace: emqx 61 | spec: 62 | type: ClusterIP 63 | selector: 64 | app.kubernetes.io/name: emqx 65 | ports: 66 | - port: 1883 67 | name: mqtt 68 | - port: 8883 69 | name: mqtts 70 | - port: 8083 71 | name: ws 72 | - port: 8084 73 | name: wss 74 | - port: 18083 75 | name: ui 76 | -------------------------------------------------------------------------------- /garage/garage.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: garage-data 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 10Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: garage-meta 16 | spec: 17 | accessModes: 18 | - ReadWriteOnce 19 | resources: 20 | requests: 21 | storage: 1Gi 22 | --- 23 | apiVersion: apps/v1 24 | kind: Deployment 25 | metadata: 26 | name: garage 27 | spec: 28 | replicas: 1 29 | selector: 30 | matchLabels: 31 | app.kubernetes.io/name: garage 32 | template: 33 | metadata: 34 | labels: 35 | app.kubernetes.io/name: garage 36 | spec: 37 | containers: 38 | - name: garage 39 | image: dxflrs/garage:v2.1.0 40 | volumeMounts: 41 | - mountPath: /etc/garage.toml 42 | name: configuration 43 | subPath: garage.toml 44 | - mountPath: /mnt/meta 45 | name: meta 46 | - mountPath: /mnt/data 47 | name: data 48 | volumes: 49 | - name: configuration 50 | configMap: 51 | name: configuration 52 | - name: meta 53 | persistentVolumeClaim: 54 | claimName: garage-meta 55 | - name: data 56 | persistentVolumeClaim: 57 | claimName: garage-data 58 | --- 59 | apiVersion: v1 60 | kind: Service 61 | metadata: 62 | name: garage 63 | spec: 64 | ports: 65 | - name: s3 66 | port: 3900 67 | - name: web 68 | port: 3902 69 | - name: admin 70 | port: 3903 71 | selector: 72 | app.kubernetes.io/name: garage 73 | type: ClusterIP 74 | -------------------------------------------------------------------------------- /shinobi/shinobi.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: shinobi-config 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 5Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: shinobi-mysql 16 | spec: 17 | accessModes: 18 | - ReadWriteOnce 19 | resources: 20 | requests: 21 | storage: 25Gi 22 | --- 23 | apiVersion: v1 24 | kind: PersistentVolumeClaim 25 | metadata: 26 | name: shinobi-videos 27 | spec: 28 | accessModes: 29 | - ReadWriteOnce 30 | resources: 31 | requests: 32 | storage: 100Gi 33 | --- 34 | apiVersion: apps/v1 35 | kind: Deployment 36 | metadata: 37 | name: shinobi 38 | spec: 39 | replicas: 1 40 | selector: 41 | matchLabels: 42 | app.kubernetes.io/name: shinobi 43 | template: 44 | metadata: 45 | labels: 46 | app.kubernetes.io/name: shinobi 47 | spec: 48 | containers: 49 | - name: shinobi 50 | image: registry.gitlab.com/shinobi-systems/shinobi:dev 51 | volumeMounts: 52 | - mountPath: /config 53 | name: shinobi-config 54 | - mountPath: /var/lib/mysql 55 | name: shinobi-mysql 56 | - mountPath: /home/Shinobi/videos 57 | name: shinobi-videos 58 | volumes: 59 | - name: shinobi-config 60 | persistentVolumeClaim: 61 | claimName: shinobi-config 62 | - name: shinobi-mysql 63 | persistentVolumeClaim: 64 | claimName: shinobi-mysql 65 | - name: shinobi-videos 66 | persistentVolumeClaim: 67 | claimName: shinobi-videos 68 | --- 69 | apiVersion: v1 70 | kind: Service 71 | metadata: 72 | name: shinobi 73 | spec: 74 | ports: 75 | - port: 8080 76 | selector: 77 | app.kubernetes.io/name: shinobi 78 | type: ClusterIP 79 | -------------------------------------------------------------------------------- /homarr/homarr.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: homarr-configs 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 5Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: homarr-icons 16 | spec: 17 | accessModes: 18 | - ReadWriteMany 19 | resources: 20 | requests: 21 | storage: 10Gi 22 | --- 23 | apiVersion: v1 24 | kind: PersistentVolumeClaim 25 | metadata: 26 | name: homarr-data 27 | spec: 28 | accessModes: 29 | - ReadWriteOnce 30 | resources: 31 | requests: 32 | storage: 2Gi 33 | --- 34 | apiVersion: apps/v1 35 | kind: Deployment 36 | metadata: 37 | name: homarr 38 | spec: 39 | replicas: 1 40 | selector: 41 | matchLabels: 42 | app.kubernetes.io/name: homarr 43 | template: 44 | metadata: 45 | labels: 46 | app.kubernetes.io/name: homarr 47 | spec: 48 | containers: 49 | - name: homarr 50 | image: ghcr.io/ajnart/homarr:0.15.3 51 | env: 52 | - name: PASSWORD 53 | value: mypassword 54 | volumeMounts: 55 | - mountPath: /data 56 | name: homarr-data 57 | - mountPath: /app/data/configs 58 | name: homarr-configs 59 | - mountPath: /app/public/icons 60 | name: homarr-icons 61 | volumes: 62 | - name: homarr-configs 63 | persistentVolumeClaim: 64 | claimName: homarr-configs 65 | - name: homarr-icons 66 | persistentVolumeClaim: 67 | claimName: homarr-icons 68 | - name: homarr-data 69 | persistentVolumeClaim: 70 | claimName: homarr-data 71 | --- 72 | apiVersion: v1 73 | kind: Service 74 | metadata: 75 | name: homarr 76 | spec: 77 | ports: 78 | - port: 7575 79 | selector: 80 | app.kubernetes.io/name: homarr 81 | type: ClusterIP 82 | -------------------------------------------------------------------------------- /privoxy/privoxy.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: privoxy 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | app.kubernetes.io/name: privoxy 10 | template: 11 | metadata: 12 | labels: 13 | app.kubernetes.io/name: privoxy 14 | spec: 15 | containers: 16 | - name: privoxy 17 | image: vimagick/privoxy 18 | env: 19 | volumeMounts: 20 | - mountPath: /etc/privoxy/config 21 | name: privoxy-config 22 | subPath: config 23 | volumes: 24 | - name: privoxy-config 25 | configMap: 26 | name: privoxy-config 27 | --- 28 | apiVersion: v1 29 | kind: ConfigMap 30 | metadata: 31 | name: privoxy-config 32 | data: 33 | config: | 34 | 35 | user-manual /usr/share/doc/privoxy/user-manual 36 | confdir /etc/privoxy 37 | logdir /var/log/privoxy 38 | actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on. 39 | actionsfile default.action # Main actions file 40 | actionsfile user.action # User customizations 41 | filterfile default.filter 42 | filterfile user.filter # User customizations 43 | logfile logfile 44 | listen-address :8118 45 | toggle 1 46 | enable-remote-toggle 0 47 | enable-remote-http-toggle 0 48 | enable-edit-actions 0 49 | enforce-blocks 0 50 | buffer-limit 4096 51 | enable-proxy-authentication-forwarding 0 52 | forwarded-connect-retries 0 53 | accept-intercepted-requests 0 54 | allow-cgi-request-crunching 0 55 | split-large-forms 0 56 | keep-alive-timeout 5 57 | tolerate-pipelining 1 58 | socket-timeout 300 59 | max-client-connections 512 60 | --- 61 | apiVersion: v1 62 | kind: Service 63 | metadata: 64 | name: privoxy 65 | spec: 66 | type: ClusterIP 67 | selector: 68 | app.kubernetes.io/name: privoxy 69 | ports: 70 | - port: 8118 71 | -------------------------------------------------------------------------------- /mosquitto/mosquitto.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mosquitto-data 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: mosquitto 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: mosquitto 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: mosquitto 25 | spec: 26 | containers: 27 | - name: mosquitto 28 | image: eclipse-mosquitto 29 | volumeMounts: 30 | - mountPath: /mosquitto/config/ 31 | name: config 32 | - mountPath: /mosquitto/data/ 33 | name: data 34 | 35 | volumes: 36 | - name: config 37 | configMap: 38 | name: mosquitto-config 39 | - name: data 40 | persistentVolumeClaim: 41 | claimName: mosquitto-data 42 | --- 43 | apiVersion: v1 44 | kind: ConfigMap 45 | metadata: 46 | name: mosquitto-config 47 | namespace: moreillon 48 | data: 49 | mosquitto.conf: | 50 | 51 | persistence true 52 | persistence_location /mosquitto/data/ 53 | 54 | log_dest stdout 55 | 56 | # Enforce user authentication 57 | allow_anonymous false 58 | password_file /mosquitto/config/passwd 59 | 60 | # Default listener for direct MQTT traffic 61 | listener 1883 62 | protocol mqtt 63 | 64 | 65 | # Listener for MQTT traffic over Websockets 66 | listener 9001 67 | protocol websockets 68 | 69 | # Your user credentials generated with mosquitto_passwd go here 70 | passwd: | 71 | username:encodedpassword 72 | 73 | --- 74 | apiVersion: v1 75 | kind: Service 76 | metadata: 77 | name: mosquitto 78 | spec: 79 | type: ClusterIP 80 | selector: 81 | app.kubernetes.io/name: mosquitto 82 | ports: 83 | - port: 1883 84 | name: mqtt 85 | - port: 9001 86 | name: ws 87 | -------------------------------------------------------------------------------- /syncthing/syncthing.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: syncthing-data 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 100Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: syncthing-config 16 | spec: 17 | accessModes: 18 | - ReadWriteOnce 19 | resources: 20 | requests: 21 | storage: 10Gi 22 | --- 23 | apiVersion: apps/v1 24 | kind: Deployment 25 | metadata: 26 | name: syncthing 27 | namespace: syncthing 28 | spec: 29 | replicas: 1 30 | selector: 31 | matchLabels: 32 | app.kubernetes.io/name: syncthing 33 | template: 34 | metadata: 35 | labels: 36 | app.kubernetes.io/name: syncthing 37 | spec: 38 | containers: 39 | - name: syncthing 40 | image: syncthing/syncthing 41 | env: 42 | - name: PUID 43 | value: "1000" 44 | - name: GUID 45 | value: "1000" 46 | volumeMounts: 47 | - mountPath: /var/syncthing 48 | name: syncthing-config 49 | - mountPath: /var/syncthing/Sync 50 | name: syncthing-data 51 | volumes: 52 | - name: syncthing-config 53 | persistentVolumeClaim: 54 | claimName: syncthing-config 55 | - name: syncthing-data 56 | persistentVolumeClaim: 57 | claimName: syncthing-data 58 | --- 59 | apiVersion: v1 60 | kind: Service 61 | metadata: 62 | name: syncthing 63 | spec: 64 | ports: 65 | - name: ui 66 | port: 8384 67 | protocol: TCP 68 | targetPort: 8384 69 | - name: tcp-file-transfer 70 | port: 22000 71 | protocol: TCP 72 | targetPort: 22000 73 | - name: quic-file-transfer 74 | port: 22000 75 | protocol: UDP 76 | targetPort: 22000 77 | - name: discovery 78 | port: 21027 79 | protocol: UDP 80 | targetPort: 21027 81 | selector: 82 | app.kubernetes.io/name: syncthing 83 | type: ClusterIP 84 | -------------------------------------------------------------------------------- /photoprism/photoprism.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: photoprism-storage 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 50Gi 11 | --- 12 | apiVersion: v1 13 | kind: PersistentVolumeClaim 14 | metadata: 15 | name: photoprism-originals 16 | spec: 17 | accessModes: 18 | - ReadWriteOnce 19 | resources: 20 | requests: 21 | storage: 500Gi 22 | --- 23 | apiVersion: apps/v1 24 | kind: Deployment 25 | metadata: 26 | name: photoprism 27 | spec: 28 | replicas: 1 29 | selector: 30 | matchLabels: 31 | app.kubernetes.io/name: photoprism 32 | template: 33 | metadata: 34 | labels: 35 | app.kubernetes.io/name: photoprism 36 | spec: 37 | containers: 38 | - name: photoprism 39 | image: photoprism/photoprism 40 | env: 41 | - name: PHOTOPRISM_ADMIN_USER 42 | value: admin 43 | - name: PHOTOPRISM_ADMIN_PASSWORD 44 | value: photoprism 45 | - name: PHOTOPRISM_AUTH_MODE 46 | value: password 47 | - name: PHOTOPRISM_SITE_URL 48 | value: https://photoprism.home.maximemoreillon.com 49 | # DB 50 | - name: PHOTOPRISM_DATABASE_DRIVER 51 | value: mysql 52 | - name: PHOTOPRISM_DATABASE_SERVER 53 | value: mariadb:3306 54 | - name: PHOTOPRISM_DATABASE_NAME 55 | value: photoprism 56 | - name: PHOTOPRISM_DATABASE_USER 57 | value: photoprism 58 | - name: PHOTOPRISM_DATABASE_PASSWORD 59 | value: photoprism 60 | volumeMounts: 61 | - mountPath: /photoprism/storage 62 | name: photoprism-storage 63 | - mountPath: /photoprism/originals 64 | name: photoprism-originals 65 | volumes: 66 | - name: photoprism-storage 67 | persistentVolumeClaim: 68 | claimName: photoprism-storage 69 | - name: photoprism-originals 70 | persistentVolumeClaim: 71 | claimName: photoprism-originals 72 | --- 73 | apiVersion: v1 74 | kind: Service 75 | metadata: 76 | name: photoprism 77 | spec: 78 | type: ClusterIP 79 | selector: 80 | app.kubernetes.io/name: photoprism 81 | ports: 82 | - port: 2342 83 | -------------------------------------------------------------------------------- /speedtest-tracker/speedtest-tracker.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: speedtest-tracker 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 5Gi 11 | --- 12 | apiVersion: apps/v1 13 | kind: Deployment 14 | metadata: 15 | name: speedtest-tracker 16 | spec: 17 | replicas: 1 18 | selector: 19 | matchLabels: 20 | app.kubernetes.io/name: speedtest-tracker 21 | template: 22 | metadata: 23 | labels: 24 | app.kubernetes.io/name: speedtest-tracker 25 | spec: 26 | dnsPolicy: None 27 | dnsConfig: 28 | nameservers: 29 | - 10.152.183.10 30 | - 8.8.8.8 31 | searches: 32 | - speedtest-tracker.svc.cluster.local 33 | options: 34 | - name: ndots 35 | value: "5" 36 | containers: 37 | - name: speedtest-tracker 38 | image: lscr.io/linuxserver/speedtest-tracker:latest 39 | env: 40 | - name: PUID 41 | value: "1000" 42 | - name: PGID 43 | value: "1000" 44 | - name: APP_KEY 45 | value: # You can generate a key at https://speedtest-tracker.dev 46 | - name: DISPLAY_TIMEZONE 47 | value: UTC 48 | - name: DB_CONNECTION 49 | value: pgsql 50 | - name: DB_HOST 51 | value: postgres 52 | - name: DB_PORT 53 | value: "5432" 54 | - name: DB_DATABASE 55 | value: speedtest_tracker 56 | - name: DB_USERNAME 57 | value: speedy 58 | - name: DB_PASSWORD 59 | value: password 60 | - name: SPEEDTEST_SCHEDULE 61 | value: 62 | - name: SPEEDTEST_SERVERS 63 | value: 64 | 65 | volumeMounts: 66 | - mountPath: /config 67 | name: speedtest-tracker 68 | volumes: 69 | - name: speedtest-tracker 70 | persistentVolumeClaim: 71 | claimName: speedtest-tracker 72 | --- 73 | apiVersion: v1 74 | kind: Service 75 | metadata: 76 | labels: 77 | app.kubernetes.io/name: speedtest-tracker 78 | name: speedtest-tracker 79 | spec: 80 | ports: 81 | - port: 80 82 | selector: 83 | app.kubernetes.io/name: speedtest-tracker 84 | type: ClusterIP 85 | -------------------------------------------------------------------------------- /firefly-iii/firefly-iii-env-secret.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: firefly-iii-env 5 | type: Opaque 6 | stringData: 7 | # You can leave this on "local". If you change it to production most console commands will ask for extra confirmation. 8 | # Never set it to "testing". 9 | # APP_ENV: production 10 | 11 | # Set to true if you want to see debug information in error screens. 12 | # APP_DEBUG: "false" 13 | 14 | # This should be your email address. 15 | # If you use Docker or similar, you can set this variable from a file by using SITE_OWNER_FILE 16 | # The variable is used in some errors shown to users who aren't admin. 17 | SITE_OWNER: admin@example.com 18 | 19 | # The encryption key for your sessions. Keep this very secure. 20 | # Change it to a string of exactly 32 chars or use something like `php artisan key:generate` to generate it. 21 | # If you use Docker or similar, you can set this variable from a file by using APP_KEY_FILE 22 | # 23 | # Avoid the "#" character in your APP_KEY, it may break things. 24 | # 25 | APP_KEY: abcdefghijklmnopabcdefghijklmnop 26 | 27 | # Firefly III will launch using this language (for new users and unauthenticated visitors) 28 | # For a list of available languages: https://github.com/firefly-iii/firefly-iii/blob/main/config/firefly.php#L123 29 | # 30 | # If text is still in English, remember that not everything may have been translated. 31 | DEFAULT_LANGUAGE: en_US 32 | 33 | # The locale defines how numbers are formatted. 34 | # by default this value is the same as whatever the language is. 35 | # DEFAULT_LOCALE: ja_JP 36 | 37 | # Change this value to your preferred time zone. 38 | # Example: Europe/Amsterdam 39 | # For a list of supported time zones, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 40 | # TZ: Europe/Amsterdam 41 | 42 | # TRUSTED_PROXIES is a useful variable when using Docker and/or a reverse proxy. 43 | # Set it to ** and reverse proxies work just fine. 44 | TRUSTED_PROXIES: "**" 45 | 46 | # The log channel defines where your log entries go to. 47 | # Several other options exist. You can use 'single' for one big fat error log (not recommended). 48 | # Also available are 'syslog', 'errorlog' and 'stdout' which will log to the system itself. 49 | # A rotating log option is 'daily', creates 5 files that (surprise) rotate. 50 | # A cool option is 'papertrail' for cloud logging 51 | # Default setting 'stack' will log to 'daily' and to 'stdout' at the same time. 52 | # LOG_CHANNEL: stack 53 | 54 | # Log level. You can set this from least severe to most severe: 55 | # debug, info, notice, warning, error, critical, alert, emergency 56 | # If you set it to debug your logs will grow large, and fast. If you set it to emergency probably 57 | # nothing will get logged, ever. 58 | # APP_LOG_LEVEL: notice 59 | 60 | # Audit log level. 61 | # The audit log is used to log notable Firefly III events on a separate channel. 62 | # These log entries may contain sensitive financial information. 63 | # The audit log is disabled by default. 64 | # 65 | # To enable it, set AUDIT_LOG_LEVEL to "info" 66 | # To disable it, set AUDIT_LOG_LEVEL to "emergency" 67 | # AUDIT_LOG_LEVEL: emergency 68 | 69 | # 70 | # If you want, you can redirect the audit logs to another channel. 71 | # Set 'audit_stdout', 'audit_syslog', 'audit_errorlog' to log to the system itself. 72 | # Use audit_daily to log to a rotating file. 73 | # Use audit_papertrail to log to papertrail. 74 | # 75 | # If you do this, the audit logs may be mixed with normal logs because the settings for these channels 76 | # are often the same as the settings for the normal logs. 77 | # AUDIT_LOG_CHANNEL: 78 | 79 | # 80 | # Used when logging to papertrail: 81 | # Also used when audit logs log to papertrail: 82 | # 83 | # PAPERTRAIL_HOST: 84 | # PAPERTRAIL_PORT: 85 | 86 | # Database credentials. Make sure the database exists. I recommend a dedicated user for Firefly III 87 | # For other database types, please see the FAQ: https://docs.firefly-iii.org/references/faq/install/#i-want-to-use-sqlite 88 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 89 | # Use "pgsql" for PostgreSQL 90 | # Use "mysql" for MySQL and MariaDB. 91 | # Use "sqlite" for SQLite. 92 | DB_CONNECTION: pgsql 93 | DB_HOST: postgres.postgresql 94 | DB_PORT: "5432" 95 | DB_DATABASE: firefly 96 | DB_USERNAME: firefly 97 | DB_PASSWORD: fireflydbpassword 98 | # leave empty or omit when not using a socket connection 99 | # DB_SOCKET: 100 | 101 | # MySQL supports SSL. You can configure it here. 102 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 103 | # MYSQL_USE_SSL: "false" 104 | # MYSQL_SSL_VERIFY_SERVER_CERT:true 105 | # You need to set at least of these options 106 | # MYSQL_SSL_CAPATH:/etc/ssl/certs/ 107 | # MYSQL_SSL_CA: 108 | # MYSQL_SSL_CERT: 109 | # MYSQL_SSL_KEY: 110 | # MYSQL_SSL_CIPHER: 111 | 112 | # PostgreSQL supports SSL. You can configure it here. 113 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 114 | # PGSQL_SSL_MODE:prefer 115 | # PGSQL_SSL_ROOT_CERT:null 116 | # PGSQL_SSL_CERT:null 117 | # PGSQL_SSL_KEY:null 118 | # PGSQL_SSL_CRL_FILE:null 119 | 120 | # For postgresql 15 and up, setting this to public will no longer work as expected, becasuse the 121 | # 'public' schema is without grants. This can be worked around by having a super user grant those 122 | # necessary privileges, but in security conscious setups that's not viable. 123 | # You will need to set this to the schema you want to use. 124 | PGSQL_SCHEMA: public 125 | 126 | # If you're looking for performance improvements, you could install memcached or redis 127 | # CACHE_DRIVER: file 128 | # SESSION_DRIVER: file 129 | 130 | # If you set either of the options above to 'redis', you might want to update these settings too 131 | # If you use Docker or similar, you can set REDIS_HOST_FILE, REDIS_PASSWORD_FILE or 132 | # REDIS_PORT_FILE to set the value from a file instead of from an environment variable 133 | 134 | # can be tcp or unix. http is not supported 135 | # REDIS_SCHEME:tcp 136 | 137 | # use only when using 'unix' for REDIS_SCHEME. Leave empty otherwise. 138 | # REDIS_PATH: 139 | 140 | # use only when using 'tcp' or 'http' for REDIS_SCHEME. Leave empty otherwise. 141 | # REDIS_HOST:127.0.0.1 142 | # REDIS_PORT:6379 143 | 144 | # Use only with Redis 6+ with proper ACL set. Leave empty otherwise. 145 | # REDIS_USERNAME: 146 | # REDIS_PASSWORD: 147 | 148 | # always use quotes and make sure redis db "0" and "1" exists. Otherwise change accordingly. 149 | # REDIS_DB:"0" 150 | # REDIS_CACHE_DB:"1" 151 | 152 | # Cookie settings. Should not be necessary to change these. 153 | # If you use Docker or similar, you can set COOKIE_DOMAIN_FILE to set 154 | # the value from a file instead of from an environment variable 155 | # Setting samesite to "strict" may give you trouble logging in. 156 | # COOKIE_PATH: "/" 157 | # COOKIE_DOMAIN: 158 | # COOKIE_SECURE: "false" 159 | # COOKIE_SAMESITE: "lax" 160 | 161 | # If you want Firefly III to email you, update these settings 162 | # For instructions, see: https://docs.firefly-iii.org/how-to/firefly-iii/advanced/notifications/#email 163 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 164 | # MAIL_MAILER:log 165 | # MAIL_HOST:null 166 | # MAIL_PORT:2525 167 | # MAIL_FROM:changeme@example.com 168 | # MAIL_USERNAME:null 169 | # MAIL_PASSWORD:null 170 | # MAIL_ENCRYPTION:null 171 | # MAIL_SENDMAIL_COMMAND: 172 | 173 | # 174 | # If you use self-signed certificates for your STMP server, you can use the following settings. 175 | # 176 | # MAIL_ALLOW_SELF_SIGNED: "false" 177 | # MAIL_VERIFY_PEER: "true" 178 | # MAIL_VERIFY_PEER_NAME: "true" 179 | 180 | # Other mail drivers: 181 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 182 | # MAILGUN_DOMAIN: 183 | # MAILGUN_SECRET: 184 | 185 | # If you are on EU region in mailgun, use api.eu.mailgun.net, otherwise use api.mailgun.net 186 | # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 187 | # MAILGUN_ENDPOINT: api.mailgun.net 188 | 189 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 190 | # MANDRILL_SECRET: 191 | # SPARKPOST_SECRET: 192 | # MAILERSEND_API_KEY: 193 | 194 | # Firefly III can send you the following messages. 195 | # SEND_ERROR_MESSAGE: "true" 196 | 197 | # These messages contain (sensitive) transaction information: 198 | # SEND_REPORT_JOURNALS: "true" 199 | 200 | # Set this value to true if you want to set the location of certain things, like transactions. 201 | # Since this involves an external service, it's optional and disabled by default. 202 | # ENABLE_EXTERNAL_MAP: "false" 203 | 204 | # 205 | # Enable or disable exchange rate conversion. 206 | # 207 | # ENABLE_EXCHANGE_RATES: "false" 208 | 209 | # Set this value to true if you want Firefly III to download currency exchange rates 210 | # from the internet. These rates are hosted by the creator of Firefly III inside 211 | # an Azure Storage Container. 212 | # Not all currencies may be available. Rates may be wrong. 213 | # ENABLE_EXTERNAL_RATES: "false" 214 | 215 | # The map will default to this location: 216 | # MAP_DEFAULT_LAT: "51.983333" 217 | # MAP_DEFAULT_LONG: "5.916667" 218 | # MAP_DEFAULT_ZOOM: "6" 219 | 220 | # 221 | # Some objects have room for an URL, like transactions and webhooks. 222 | # By default, the following protocols are allowed: 223 | # http, https, ftp, ftps, mailto 224 | # 225 | # To change this, set your preferred comma separated set below. 226 | # Be sure to include http, https and other default ones if you need to. 227 | # 228 | # VALID_URL_PROTOCOLS: 229 | 230 | # 231 | # Firefly III authentication settings 232 | # 233 | 234 | # 235 | # Firefly III supports a few authentication methods: 236 | # - 'web' (default, uses built in DB) 237 | # - 'remote_user_guard' for Authelia etc 238 | # Read more about these settings in the documentation. 239 | # https://docs.firefly-iii.org/how-to/firefly-iii/advanced/authentication/ 240 | # 241 | # LDAP is no longer supported :( 242 | # 243 | # AUTHENTICATION_GUARD: web 244 | 245 | # 246 | # Remote user guard settings 247 | # 248 | # AUTHENTICATION_GUARD_HEADER: REMOTE_USER 249 | # AUTHENTICATION_GUARD_EMAIL: 250 | 251 | # 252 | # Firefly III generates a basic keypair for your OAuth tokens. 253 | # If you want, you can overrule the key with your own (secure) value. 254 | # It's also possible to set PASSPORT_PUBLIC_KEY_FILE or PASSPORT_PRIVATE_KEY_FILE 255 | # if you're using Docker secrets or similar solutions for secret management 256 | # 257 | # PASSPORT_PRIVATE_KEY: 258 | # PASSPORT_PUBLIC_KEY: 259 | 260 | # 261 | # Extra authentication settings 262 | # 263 | # CUSTOM_LOGOUT_URL: 264 | 265 | # You can disable the X-Frame-Options header if it interferes with tools like 266 | # Organizr. This is at your own risk. Applications running in frames run the risk 267 | # of leaking information to their parent frame. 268 | # DISABLE_FRAME_HEADER: "false" 269 | 270 | # You can disable the Content Security Policy header when you're using an ancient browser 271 | # or any version of Microsoft Edge / Internet Explorer (which amounts to the same thing really) 272 | # This leaves you with the risk of not being able to stop XSS bugs should they ever surface. 273 | # This is at your own risk. 274 | # DISABLE_CSP_HEADER: "false" 275 | 276 | # If you wish to track your own behavior over Firefly III, set valid analytics tracker information here. 277 | # Nobody uses this except for me on the demo site. But hey, feel free to use this if you want to. 278 | # Do not prepend the TRACKER_URL with http:// or https:// 279 | # The only tracker supported is Matomo. 280 | # You can set the following variables from a file by appending them with _FILE: 281 | # TRACKER_SITE_ID: 282 | # TRACKER_URL: 283 | 284 | # 285 | # Firefly III supports webhooks. These are security sensitive and must be enabled manually first. 286 | # 287 | # ALLOW_WEBHOOKS: "false" 288 | 289 | # 290 | # The static cron job token can be useful when you use Docker and wish to manage cron jobs. 291 | # 1. Set this token to any 32-character value (this is important!). 292 | # 2. Use this token in the cron URL instead of a user's command line token that you can find in /profile 293 | # 294 | # For more info: https://docs.firefly-iii.org/how-to/firefly-iii/advanced/cron/ 295 | # 296 | # You can set this variable from a file by appending it with _FILE 297 | # 298 | # STATIC_CRON_TOKEN: 299 | 300 | # You can fine tune the start-up of a Docker container by editing these environment variables. 301 | # Use this at your own risk. Disabling certain checks and features may result in lots of inconsistent data. 302 | # However if you know what you're doing you can significantly speed up container start times. 303 | # Set each value to true to enable, or false to disable. 304 | 305 | # Set this to true to build all locales supported by Firefly III. 306 | # This may take quite some time (several minutes) and is generally not recommended. 307 | # If you wish to change or alter the list of locales, start your Docker container with 308 | # `docker run -v locale.gen:/etc/locale.gen -e DKR_BUILD_LOCALE: true` 309 | # and make sure your preferred locales are in your own locale.gen. 310 | # DKR_BUILD_LOCALE: "false" 311 | 312 | # Check if the SQLite database exists. Can be skipped if you're not using SQLite. 313 | # Won't significantly speed up things. 314 | # DKR_CHECK_SQLITE: "true" 315 | 316 | # Leave the following configuration vars as is. 317 | # Unless you like to tinker and know what you're doing. 318 | # APP_NAME: FireflyIII 319 | # BROADCAST_DRIVER: log 320 | # QUEUE_DRIVER: sync 321 | # CACHE_PREFIX: firefly 322 | # PUSHER_KEY: 323 | # IPINFO_TOKEN: 324 | # PUSHER_SECRET: 325 | # PUSHER_ID: 326 | # DEMO_USERNAME: 327 | # DEMO_PASSWORD: 328 | 329 | # 330 | # Disable or enable the running balance column data 331 | # Please disable this. It's a very experimental feature. 332 | # 333 | # USE_RUNNING_BALANCE: "false" 334 | 335 | # 336 | # The v2 layout is very experimental. If it breaks you get to keep both parts. 337 | # Be wary of data loss. 338 | # 339 | # FIREFLY_III_LAYOUT: v1 340 | 341 | # 342 | # Which Query Parser implementation to use for the search engine and rules 343 | # 'new' is experimental, 'legacy' is the classic one 344 | # 345 | # QUERY_PARSER_IMPLEMENTATION: legacy 346 | 347 | # 348 | # Please make sure this URL matches the external URL of your Firefly III installation. 349 | # It is used to validate specific requests and to generate URLs in emails. 350 | # 351 | APP_URL: http://localhost 352 | --------------------------------------------------------------------------------