feat(librephotos): move to stable (#1894)

This commit is contained in:
Stavros Kois
2022-02-14 10:18:34 +01:00
committed by GitHub
parent 99123afb52
commit 5ef74c6fdf
11 changed files with 1 additions and 1 deletions
+18
View File
@@ -0,0 +1,18 @@
# Changelog<br>
<a name="librephotos-0.0.2"></a>
### [librephotos-0.0.2](https://github.com/truecharts/apps/compare/librephotos-0.0.1...librephotos-0.0.2) (2022-02-13)
#### Fix
* fix nginx host ([#1891](https://github.com/truecharts/apps/issues/1891))
<a name="librephotos-0.0.1"></a>
### librephotos-0.0.1 (2022-02-13)
#### Feat
* Add librephotos ([#1882](https://github.com/truecharts/apps/issues/1882))
+8
View File
@@ -0,0 +1,8 @@
# Configuration Options
##### Connecting to other apps
If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Internally" quick-start guide:
https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/
##### Available config options
In the future this page is going to contain an automated list of options available in the installation/edit UI.
+35
View File
@@ -0,0 +1,35 @@
apiVersion: v2
appVersion: "2022w06"
dependencies:
- name: common
repository: https://truecharts.org
version: 8.15.2
- condition: postgresql.enabled
name: postgresql
repository: https://truecharts.org/
version: 6.0.66
- condition: redis.enabled
name: redis
repository: https://truecharts.org
version: 1.0.71
description: "A self-hosted open source photo management service."
home: https://github.com/truecharts/apps/tree/master/charts/stable/librephotos
icon: https://truecharts.org/_static/img/appicons/librephotos-icon.png
keywords:
- photos
- gallery
kubeVersion: '>=1.16.0-0'
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: librephotos
sources:
- https://github.com/LibrePhotos/librephotos
- https://hub.docker.com/r/reallibrephotos/librephotos
version: 1.0.0
annotations:
truecharts.org/catagories: |
- media
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U
+40
View File
@@ -0,0 +1,40 @@
# Introduction
A self-hosted open source photo management service.
TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
## Source Code
* <https://github.com/LibrePhotos/librephotos>
* <https://hub.docker.com/r/reallibrephotos/librephotos>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://truecharts.org/ | postgresql | 6.0.66 |
| https://truecharts.org | common | 8.15.2 |
| https://truecharts.org | redis | 1.0.71 |
## Installing the Chart
To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/).
## Uninstalling the Chart
To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/).
## Support
- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first.
- See the [Wiki](https://truecharts.org)
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
---
All Rights Reserved - The TrueCharts Project
+85
View File
@@ -0,0 +1,85 @@
# Default Helm-Values
TrueCharts is primarily build to supply TrueNAS SCALE Apps.
However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file.
Most of our Apps also consume our "common" Helm Chart.
If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart.
You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document.
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| additionalContainers.frontend.image | string | `"{{ .Values.frontendImage.repository }}:{{ .Values.frontendImage.tag }}"` | |
| additionalContainers.frontend.name | string | `"frontend"` | |
| additionalContainers.proxy.image | string | `"{{ .Values.proxyImage.repository }}:{{ .Values.proxyImage.tag }}"` | |
| additionalContainers.proxy.name | string | `"proxy"` | |
| additionalContainers.proxy.ports[0].containerPort | int | `80` | |
| additionalContainers.proxy.ports[0].name | string | `"main"` | |
| additionalContainers.proxy.volumeMounts[0].mountPath | string | `"/etc/nginx/nginx.conf"` | |
| additionalContainers.proxy.volumeMounts[0].name | string | `"librephotos-config"` | |
| additionalContainers.proxy.volumeMounts[0].readOnly | bool | `true` | |
| additionalContainers.proxy.volumeMounts[0].subPath | string | `"nginx-config"` | |
| additionalContainers.proxy.volumeMounts[1].mountPath | string | `"/data"` | |
| additionalContainers.proxy.volumeMounts[1].name | string | `"media"` | |
| additionalContainers.proxy.volumeMounts[2].mountPath | string | `"/protected_media"` | |
| additionalContainers.proxy.volumeMounts[2].name | string | `"protected-media"` | |
| env.BACKEND_HOST | string | `"localhost"` | |
| env.DB_BACKEND | string | `"postgresql"` | |
| env.DB_NAME | string | `"{{ .Values.postgresql.postgresqlDatabase }}"` | |
| env.DB_PORT | string | `"5432"` | |
| env.DB_USER | string | `"{{ .Values.postgresql.postgresqlUsername }}"` | |
| env.DEBUG | int | `0` | |
| env.HEAVYWEIGHT_PROCESS | int | `1` | |
| env.REDIS_PORT | string | `"6379"` | |
| env.SKIP_PATTERNS | string | `""` | |
| env.TZ | string | `"UTC"` | |
| env.WEB_CONCURRENCY | int | `2` | |
| envValueFrom.DB_HOST.secretKeyRef.key | string | `"plainhost"` | |
| envValueFrom.DB_HOST.secretKeyRef.name | string | `"dbcreds"` | |
| envValueFrom.DB_PASS.secretKeyRef.key | string | `"postgresql-password"` | |
| envValueFrom.DB_PASS.secretKeyRef.name | string | `"dbcreds"` | |
| envValueFrom.REDIS_HOST.secretKeyRef.key | string | `"plainhost"` | |
| envValueFrom.REDIS_HOST.secretKeyRef.name | string | `"rediscreds"` | |
| envValueFrom.REDIS_PASS.secretKeyRef.key | string | `"redis-password"` | |
| envValueFrom.REDIS_PASS.secretKeyRef.name | string | `"rediscreds"` | |
| envValueFrom.SECRET_KEY.secretKeyRef.key | string | `"SECRET_KEY"` | |
| envValueFrom.SECRET_KEY.secretKeyRef.name | string | `"librephotos-secrets"` | |
| frontendImage.repository | string | `"tccr.io/truecharts/librephotos-frontend"` | |
| frontendImage.tag | string | `"v2022w06@sha256:9cb2cb4865197d460405fecd79bdd7808333443cb2089753825f7f97365a53a3"` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"tccr.io/truecharts/librephotos-backend"` | |
| image.tag | string | `"v2022w06@sha256:4c24ce4ea5b340f83da0be0935eaea4ca525a15ed6da014f8ad8c709b377a837"` | |
| persistence.cache.enabled | bool | `true` | |
| persistence.cache.mountPath | string | `"/root/.cache"` | |
| persistence.logs.enabled | bool | `true` | |
| persistence.logs.mountPath | string | `"/logs"` | |
| persistence.media.enabled | bool | `true` | |
| persistence.media.mountPath | string | `"/data"` | |
| persistence.protected-media.enabled | bool | `true` | |
| persistence.protected-media.mountPath | string | `"/protected_media"` | |
| podSecurityContext.runAsGroup | int | `0` | |
| podSecurityContext.runAsUser | int | `0` | |
| postgresql.enabled | bool | `true` | |
| postgresql.existingSecret | string | `"dbcreds"` | |
| postgresql.postgresqlDatabase | string | `"librephotos"` | |
| postgresql.postgresqlUsername | string | `"librephotos"` | |
| probes.liveness.path | string | `"/login"` | |
| probes.readiness.path | string | `"/login"` | |
| probes.startup.path | string | `"/login"` | |
| proxyImage.repository | string | `"tccr.io/truecharts/librephotos-proxy"` | |
| proxyImage.tag | string | `"v2022w06@sha256:c147eaa3e96348e44132958ca871114a2ce240f0fa3604f738801317af09a160"` | |
| redis.enabled | bool | `true` | |
| redis.existingSecret | string | `"rediscreds"` | |
| redis.redisUsername | string | `"default"` | |
| secret.ADMIN_EMAIL | string | `"admin@mydomain.com"` | |
| secret.ADMIN_PASSWORD | string | `"password"` | |
| secret.ADMIN_USERNAME | string | `"admin"` | |
| secret.MAPBOX_API_KEY | string | `""` | |
| securityContext.readOnlyRootFilesystem | bool | `false` | |
| securityContext.runAsNonRoot | bool | `false` | |
| service.main.ports.main.port | int | `10161` | |
| service.main.ports.main.targetPort | int | `80` | |
All Rights Reserved - The TrueCharts Project
+462
View File
@@ -0,0 +1,462 @@
# Include{groups}
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
questions:
- variable: portal
group: "Container Image"
label: "Configure Portal Button"
schema:
type: dict
hidden: true
attrs:
- variable: enabled
label: "Enable"
description: "enable the portal button"
schema:
hidden: true
editable: false
type: boolean
default: true
# Include{global}
- variable: controller
group: "Controller"
label: ""
schema:
additional_attrs: true
type: dict
attrs:
- variable: advanced
label: "Show Advanced Controller Settings"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
description: "Please specify type of workload to deploy"
label: "(Advanced) Controller Type"
schema:
type: string
default: "deployment"
required: true
enum:
- value: "deployment"
description: "Deployment"
- value: "statefulset"
description: "Statefulset"
- value: "daemonset"
description: "Daemonset"
- variable: replicas
description: "Number of desired pod replicas"
label: "Desired Replicas"
schema:
type: int
default: 1
required: true
- variable: strategy
description: "Please specify type of workload to deploy"
label: "(Advanced) Update Strategy"
schema:
type: string
default: "Recreate"
required: true
enum:
- value: "Recreate"
description: "Recreate: Kill existing pods before creating new ones"
- value: "RollingUpdate"
description: "RollingUpdate: Create new pods and then kill old ones"
- value: "OnDelete"
description: "(Legacy) OnDelete: ignore .spec.template changes"
# Include{controllerExpert}
# Docker specific env
- variable: env
group: "Container Configuration"
label: "Image Environment"
schema:
additional_attrs: true
type: dict
attrs:
# Include{fixedEnv}
- variable: SKIP_PATTERNS
label: "SKIP_PATTERNS"
description: "Comma delimited list of patterns to ignore"
schema:
type: string
default: ""
- variable: WEB_CONCURRENCY
label: "WEB_CONCURRENCY"
description: "Number of workers, which take care of the request to the api. This setting can dramatically affect the ram usage."
schema:
type: int
required: true
default: 2
- variable: HEAVYWEIGHT_PROCESS
label: "HEAVYWEIGHT_PROCESS"
description: "Number of workers, when scanning pictures. This setting can dramatically affect the ram usage"
schema:
type: int
required: true
default: 1
- variable: DEBUG
label: "DEBUG"
description: "Enable Debug"
schema:
type: boolean
default: false
- variable: secret
group: "Container Configuration"
label: "Secret Image Environment"
schema:
additional_attrs: true
type: dict
attrs:
- variable: ADMIN_EMAIL
label: "ADMIN_EMAIL"
description: "Email for the administrative user"
schema:
type: string
required: true
default: ""
- variable: ADMIN_USERNAME
label: "ADMIN_USERNAME"
description: "Username for the Administrator login"
schema:
type: string
required: true
default: ""
- variable: ADMIN_PASSWORD
label: "ADMIN_PASSWORD"
description: "Password for the administrative user you set above"
schema:
type: string
required: true
default: ""
- variable: MAPBOX_API_KEY
label: "MAPBOX_API_KEY"
description: "Get a Map box API Key https://account.mapbox.com/auth/signup/"
schema:
type: string
default: ""
# Include{containerConfig}
- variable: service
group: "Networking and Services"
label: "Configure Service(s)"
schema:
additional_attrs: true
type: dict
attrs:
- variable: main
label: "Main Service"
description: "The Primary service on which the healthcheck runs, often the webUI"
schema:
additional_attrs: true
type: dict
attrs:
# Include{serviceSelector}
- variable: main
label: "Main Service Port Configuration"
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: "Port"
description: "This port exposes the container port on the service"
schema:
type: int
default: 10161
required: true
- variable: advanced
label: "Show Advanced settings"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "HTTP"
enum:
- value: HTTP
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- value: TCP
description: "TCP"
- value: "UDP"
description: "UDP"
- variable: nodePort
label: "Node Port (Optional)"
description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer"
schema:
type: int
min: 9000
max: 65535
- variable: targetPort
label: "Target Port"
description: "The internal(!) port on the container the Application runs on"
schema:
type: int
default: 80
- variable: serviceexpert
group: "Networking and Services"
label: "Show Expert Config"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostNetwork
group: "Networking and Services"
label: "Host-Networking (Complicated)"
schema:
type: boolean
default: false
# Include{serviceExpert}
# Include{serviceList}
- variable: persistence
label: "Integrated Persistent Storage"
description: "Integrated Persistent Storage"
group: "Storage and Persistence"
schema:
additional_attrs: true
type: dict
attrs:
- variable: media
label: "App Media Storage"
description: "Stores the Application Media."
schema:
additional_attrs: true
type: dict
attrs:
- variable: type
label: "Type of Storage"
description: "Sets the persistence type, Anything other than PVC could break rollback!"
schema:
type: string
default: "simplePVC"
enum:
- value: "simplePVC"
description: "PVC (simple)"
- value: "simpleHP"
description: "HostPath (simple)"
- value: "emptyDir"
description: "emptyDir"
- value: "pvc"
description: "pvc"
- value: "hostPath"
description: "hostPath"
# Include{persistenceBasic}
- variable: hostPath
label: "hostPath"
description: "Path inside the container the storage is mounted"
schema:
show_if: [["type", "=", "hostPath"]]
type: hostpath
- variable: medium
label: "EmptyDir Medium"
schema:
show_if: [["type", "=", "emptyDir"]]
type: string
default: ""
enum:
- value: ""
description: "Default"
- value: "Memory"
description: "Memory"
# Include{persistenceAdvanced}
- variable: protected-media
label: "App Protected Media Storage"
description: "Stores the Application Protected Media."
schema:
additional_attrs: true
type: dict
attrs:
- variable: type
label: "Type of Storage"
description: "Sets the persistence type, Anything other than PVC could break rollback!"
schema:
type: string
default: "simplePVC"
enum:
- value: "simplePVC"
description: "PVC (simple)"
- value: "simpleHP"
description: "HostPath (simple)"
- value: "emptyDir"
description: "emptyDir"
- value: "pvc"
description: "pvc"
- value: "hostPath"
description: "hostPath"
# Include{persistenceBasic}
- variable: hostPath
label: "hostPath"
description: "Path inside the container the storage is mounted"
schema:
show_if: [["type", "=", "hostPath"]]
type: hostpath
- variable: medium
label: "EmptyDir Medium"
schema:
show_if: [["type", "=", "emptyDir"]]
type: string
default: ""
enum:
- value: ""
description: "Default"
- value: "Memory"
description: "Memory"
# Include{persistenceAdvanced}
- variable: logs
label: "App Log Storage"
description: "Stores the Application Logs."
schema:
additional_attrs: true
type: dict
attrs:
- variable: type
label: "Type of Storage"
description: "Sets the persistence type, Anything other than PVC could break rollback!"
schema:
type: string
default: "simplePVC"
enum:
- value: "simplePVC"
description: "PVC (simple)"
- value: "simpleHP"
description: "HostPath (simple)"
- value: "emptyDir"
description: "emptyDir"
- value: "pvc"
description: "pvc"
- value: "hostPath"
description: "hostPath"
# Include{persistenceBasic}
- variable: hostPath
label: "hostPath"
description: "Path inside the container the storage is mounted"
schema:
show_if: [["type", "=", "hostPath"]]
type: hostpath
- variable: medium
label: "EmptyDir Medium"
schema:
show_if: [["type", "=", "emptyDir"]]
type: string
default: ""
enum:
- value: ""
description: "Default"
- value: "Memory"
description: "Memory"
# Include{persistenceAdvanced}
# Include{persistenceList}
- variable: ingress
label: ""
group: "Ingress"
schema:
additional_attrs: true
type: dict
attrs:
- variable: main
label: "Main Ingress"
schema:
additional_attrs: true
type: dict
attrs:
# Include{ingressDefault}
# Include{ingressTLS}
# Include{ingressTraefik}
# Include{ingressExpert}
# Include{ingressList}
- variable: advancedSecurity
label: "Show Advanced Security Settings"
group: "Security and Permissions"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: securityContext
label: "Security Context"
schema:
additional_attrs: true
type: dict
attrs:
- variable: privileged
label: "Privileged mode"
schema:
type: boolean
default: false
- variable: readOnlyRootFilesystem
label: "ReadOnly Root Filesystem"
schema:
type: boolean
default: false
- variable: allowPrivilegeEscalation
label: "Allow Privilege Escalation"
schema:
type: boolean
default: false
- variable: runAsNonRoot
label: "runAsNonRoot"
schema:
type: boolean
default: false
# Include{securityContextAdvanced}
- variable: podSecurityContext
group: "Security and Permissions"
label: "Pod Security Context"
schema:
additional_attrs: true
type: dict
attrs:
- variable: runAsUser
label: "runAsUser"
description: "The UserID of the user running the application"
schema:
type: int
default: 0
- variable: runAsGroup
label: "runAsGroup"
description: The groupID this App of the user running the application"
schema:
type: int
default: 0
- variable: fsGroup
label: "fsGroup"
description: "The group that should own ALL storage."
schema:
type: int
default: 568
# Include{podSecurityContextAdvanced}
# Include{resources}
# Include{advanced}
# Include{addons}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,20 @@
{{/* Define the secrets */}}
{{- define "librephotos.secrets" -}}
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: librephotos-secrets
{{- $librephotosprevious := lookup "v1" "Secret" .Release.Namespace "librephotos-secrets" }}
{{- $secret_key := "" }}
data:
{{- if $librephotosprevious}}
SECRET_KEY: {{ index $librephotosprevious.data "SECRET_KEY" }}
{{- else }}
{{- $secret_key := randAlphaNum 32 }}
SECRET_KEY: {{ $secret_key | b64enc | quote }}
{{- end }}
{{- end -}}
@@ -0,0 +1,19 @@
{{- include "common.setup" . }}
{{/* Append the general configMap volume to the volumes */}}
{{- define "librephotos.harcodedValues" -}}
persistence:
librephotos-config:
enabled: "true"
mountPath: "/etc/nginx/nginx.conf"
subPath: "nginx-config"
type: "custom"
volumeSpec:
configMap:
name: {{ printf "%v-config" (include "common.names.fullname" .) }}
{{- end -}}
{{- $_ := mergeOverwrite .Values (include "librephotos.harcodedValues" . | fromYaml) -}}
{{- include "librephotos.secrets" . }}
{{ include "common.postSetup" . }}
@@ -0,0 +1,63 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "common.names.fullname" . }}-config
labels:
{{- include "common.labels" . | nindent 4 }}
data:
nginx-config: |-
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
# React routes are entirely on the App side in the web broswer
# Always proxy to root with the same page request when nginx 404s
error_page 404 /;
proxy_intercept_errors on;
proxy_set_header Host $host;
proxy_pass http://localhost:3000/;
}
location ~ ^/(api|media)/ {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host localhost;
include uwsgi_params;
proxy_pass http://localhost:8001;
}
# Django media
location /protected_media {
internal;
alias /protected_media/;
}
location /static/drf-yasg {
proxy_pass http://localhost:8001;
}
location /data {
internal;
alias /data/;
}
# Original Photos
location /original {
internal;
alias /data/;
}
# Nextcloud Original Photos
location /nextcloud_original {
internal;
alias /data/nextcloud_media/;
}
}
}
+121
View File
@@ -0,0 +1,121 @@
image:
repository: tccr.io/truecharts/librephotos-backend
tag: v2022w06@sha256:4c24ce4ea5b340f83da0be0935eaea4ca525a15ed6da014f8ad8c709b377a837
pullPolicy: IfNotPresent
frontendImage:
repository: tccr.io/truecharts/librephotos-frontend
tag: v2022w06@sha256:9cb2cb4865197d460405fecd79bdd7808333443cb2089753825f7f97365a53a3
proxyImage:
repository: tccr.io/truecharts/librephotos-proxy
tag: v2022w06@sha256:c147eaa3e96348e44132958ca871114a2ce240f0fa3604f738801317af09a160
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
podSecurityContext:
runAsUser: 0
runAsGroup: 0
secret:
ADMIN_EMAIL: "admin@mydomain.com"
ADMIN_USERNAME: "admin"
ADMIN_PASSWORD: "password"
MAPBOX_API_KEY: ""
env:
TZ: UTC
BACKEND_HOST: "localhost"
DB_BACKEND: "postgresql"
DB_NAME: "{{ .Values.postgresql.postgresqlDatabase }}"
DB_USER: "{{ .Values.postgresql.postgresqlUsername }}"
DB_PORT: "5432"
REDIS_PORT: "6379"
WEB_CONCURRENCY: 2
SKIP_PATTERNS: ""
HEAVYWEIGHT_PROCESS: 1
DEBUG: 0
envValueFrom:
DB_PASS:
secretKeyRef:
name: dbcreds
key: postgresql-password
DB_HOST:
secretKeyRef:
name: dbcreds
key: plainhost
REDIS_HOST:
secretKeyRef:
name: rediscreds
key: plainhost
REDIS_PASS:
secretKeyRef:
name: rediscreds
key: redis-password
SECRET_KEY:
secretKeyRef:
name: librephotos-secrets
key: SECRET_KEY
probes:
liveness:
path: "/login"
readiness:
path: "/login"
startup:
path: "/login"
redis:
enabled: true
existingSecret: "rediscreds"
redisUsername: default
postgresql:
enabled: true
existingSecret: "dbcreds"
postgresqlUsername: librephotos
postgresqlDatabase: librephotos
service:
main:
ports:
main:
port: 10161
targetPort: 80
additionalContainers:
proxy:
name: proxy
image: "{{ .Values.proxyImage.repository }}:{{ .Values.proxyImage.tag }}"
ports:
- containerPort: 80
name: main
volumeMounts:
- name: librephotos-config
mountPath: "/etc/nginx/nginx.conf"
subPath: nginx-config
readOnly: true
- name: media
mountPath: "/data"
- name: protected-media
mountPath: "/protected_media"
frontend:
name: frontend
image: "{{ .Values.frontendImage.repository }}:{{ .Values.frontendImage.tag }}"
persistence:
media:
enabled: true
mountPath: "/data"
protected-media:
enabled: true
mountPath: "/protected_media"
logs:
enabled: true
mountPath: "/logs"
cache:
enabled: true
mountPath: "/root/.cache"