feat(linkace): move to stable (#1898)

* feat(linkace): move to stable

* bump
This commit is contained in:
Stavros Kois
2022-02-14 11:01:55 +01:00
committed by GitHub
parent 058badb461
commit 93e8992033
11 changed files with 1 additions and 1 deletions
+18
View File
@@ -0,0 +1,18 @@
# Changelog<br>
<a name="linkace-0.0.2"></a>
### [linkace-0.0.2](https://github.com/truecharts/apps/compare/linkace-0.0.1...linkace-0.0.2) (2022-02-13)
#### Fix
* Overhaul setup ([#1890](https://github.com/truecharts/apps/issues/1890))
<a name="linkace-0.0.1"></a>
### linkace-0.0.1 (2022-02-13)
#### Feat
* Add linkace ([#1886](https://github.com/truecharts/apps/issues/1886))
+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: "1.9.1"
dependencies:
- name: common
repository: https://truecharts.org
version: 8.15.2
- condition: mariadb.enabled
name: mariadb
repository: https://truecharts.org/
version: 1.0.68
- condition: redis.enabled
name: redis
repository: https://truecharts.org
version: 1.0.71
description: Your self-hosted bookmark archive. Free and open source.
home: https://github.com/truecharts/apps/tree/master/charts/stable/linkace
icon: https://truecharts.org/_static/img/appicons/linkace-icon.png
keywords:
- linkace
kubeVersion: '>=1.16.0-0'
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: linkace
sources:
- https://www.linkace.org/docs/
- https://github.com/linkace/linkace
- https://hub.docker.com/r/linkace/linkace
version: 1.0.0
annotations:
truecharts.org/catagories: |
- media
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U
+41
View File
@@ -0,0 +1,41 @@
# Introduction
Your self-hosted bookmark archive. Free and open source.
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://www.linkace.org/docs/>
* <https://github.com/linkace/linkace>
* <https://hub.docker.com/r/linkace/linkace>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://truecharts.org/ | mariadb | 1.0.68 |
| 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
+89
View File
@@ -0,0 +1,89 @@
# 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 |
|-----|------|---------|-------------|
| cronjob.annotations | object | `{}` | |
| cronjob.failedJobsHistoryLimit | int | `5` | |
| cronjob.schedule | string | `"*/15 * * * *"` | |
| cronjob.successfulJobsHistoryLimit | int | `2` | |
| env.APP_DEBUG | bool | `false` | |
| env.APP_ENV | string | `"production"` | |
| env.APP_NAME | string | `"LinkAce"` | |
| env.APP_TIMEZONE | string | `"{{ .Values.env.TZ }}"` | |
| env.APP_URL | string | `"http://localhost"` | |
| env.BACKUP_DISK | string | `"s3"` | |
| env.BACKUP_ENABLED | bool | `false` | |
| env.BACKUP_MAX_SIZE | int | `512` | |
| env.BACKUP_NOTIFICATION_EMAIL | string | `"your@email.com"` | |
| env.CACHE_DRIVER | string | `"redis"` | |
| env.DB_CONNECTION | string | `"mysql"` | |
| env.DB_DATABASE | string | `"{{ .Values.mariadb.mariadbDatabase }}"` | |
| env.DB_PORT | string | `"3306"` | |
| env.DB_USERNAME | string | `"{{ .Values.mariadb.mariadbUsername }}"` | |
| env.REDIS_PORT | string | `"6379"` | |
| env.SESSION_DRIVER | string | `"redis"` | |
| env.TZ | string | `"UTC"` | |
| envValueFrom.APP_KEY.secretKeyRef.key | string | `"APP_KEY"` | |
| envValueFrom.APP_KEY.secretKeyRef.name | string | `"linkace-secrets"` | |
| envValueFrom.DB_HOST.secretKeyRef.key | string | `"plainhost"` | |
| envValueFrom.DB_HOST.secretKeyRef.name | string | `"mariadbcreds"` | |
| envValueFrom.DB_PASSWORD.secretKeyRef.key | string | `"mariadb-password"` | |
| envValueFrom.DB_PASSWORD.secretKeyRef.name | string | `"mariadbcreds"` | |
| envValueFrom.REDIS_HOST.secretKeyRef.key | string | `"plainhost"` | |
| envValueFrom.REDIS_HOST.secretKeyRef.name | string | `"rediscreds"` | |
| envValueFrom.REDIS_PASSWORD.secretKeyRef.key | string | `"redis-password"` | |
| envValueFrom.REDIS_PASSWORD.secretKeyRef.name | string | `"rediscreds"` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"tccr.io/truecharts/linkace"` | |
| image.tag | string | `"v1.9.1@sha256:88923f556900b0c6b79ea978e3692c690c0a6f9c28d048f2067a803095de1ef1"` | |
| initContainers.1-copy-app.args[0] | string | `"echo \"Copying app...\"; cp -R /app/* /tmp/;\n"` | |
| initContainers.1-copy-app.command[0] | string | `"/bin/sh"` | |
| initContainers.1-copy-app.command[1] | string | `"-c"` | |
| initContainers.1-copy-app.image | string | `"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` | |
| initContainers.1-copy-app.volumeMounts[0].mountPath | string | `"/tmp"` | |
| initContainers.1-copy-app.volumeMounts[0].name | string | `"app"` | |
| initContainers.2-create-env-file.args[0] | string | `"if [ ! -f \"/app/.env\" ]; then\n echo \"Preparing for initial installation\";\n echo \"SETUP_COMPLETED=false\" > /app/.env;\n echo \"File .env created.\";\nelse\n echo \"Initial installation has already completed.\";\nfi;\n"` | |
| initContainers.2-create-env-file.command[0] | string | `"/bin/sh"` | |
| initContainers.2-create-env-file.command[1] | string | `"-c"` | |
| initContainers.2-create-env-file.image | string | `"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` | |
| initContainers.2-create-env-file.volumeMounts[0].mountPath | string | `"/app"` | |
| initContainers.2-create-env-file.volumeMounts[0].name | string | `"app"` | |
| initContainers.3-chmod.args[0] | string | `"echo \"CHMOD-ing files...\"; chmod -R 777 /app; chmod -R 777 /app/storage/logs; chmod -R 777 /app/storage/app/backups; echo \"CHMOD Complete\";\n"` | |
| initContainers.3-chmod.command[0] | string | `"/bin/sh"` | |
| initContainers.3-chmod.command[1] | string | `"-c"` | |
| initContainers.3-chmod.image | string | `"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` | |
| initContainers.3-chmod.volumeMounts[0].mountPath | string | `"/app"` | |
| initContainers.3-chmod.volumeMounts[0].name | string | `"app"` | |
| initContainers.3-chmod.volumeMounts[1].mountPath | string | `"/app/storage/logs"` | |
| initContainers.3-chmod.volumeMounts[1].name | string | `"logs"` | |
| initContainers.3-chmod.volumeMounts[2].mountPath | string | `"/app/storage/app/backups"` | |
| initContainers.3-chmod.volumeMounts[2].name | string | `"backups"` | |
| mariadb.enabled | bool | `true` | |
| mariadb.existingSecret | string | `"mariadbcreds"` | |
| mariadb.mariadbDatabase | string | `"linkace"` | |
| mariadb.mariadbUsername | string | `"linkace"` | |
| persistence.app.enabled | bool | `true` | |
| persistence.app.mountPath | string | `"/app"` | |
| persistence.backups.enabled | bool | `true` | |
| persistence.backups.mountPath | string | `"/app/storage/app/backups"` | |
| persistence.logs.enabled | bool | `true` | |
| persistence.logs.mountPath | string | `"/app/storage/logs"` | |
| podSecurityContext.runAsGroup | int | `0` | |
| podSecurityContext.runAsUser | int | `0` | |
| redis.enabled | bool | `true` | |
| redis.existingSecret | string | `"rediscreds"` | |
| securityContext.readOnlyRootFilesystem | bool | `false` | |
| securityContext.runAsNonRoot | bool | `false` | |
| service.main.ports.main.port | int | `10160` | |
| service.main.ports.main.targetPort | int | `80` | |
All Rights Reserved - The TrueCharts Project
+449
View File
@@ -0,0 +1,449 @@
# 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: APP_URL
label: "APP_URL"
description: "Application URL eg. https://linkace.mydomain.com"
schema:
type: string
default: "http://localhost"
- variable: APP_DEBUG
label: "APP_DEBUG"
description: "Enables the debug info"
schema:
type: boolean
default: false
- variable: BACKUP_ENABLED
label: "BACKUP_ENABLED"
description: "Enables backups"
schema:
type: boolean
default: false
- variable: BACKUP_DISK
label: "BACKUP_DISK"
description: "Backup destination"
schema:
type: string
default: "local"
enum:
- value: "local"
description: "local"
- value: "s3"
description: "s3"
- variable: BACKUP_MAX_SIZE
label: "BACKUP_MAX_SIZE"
description: "Max size of backup in MB"
schema:
type: int
default: 512
- variable: secret
group: "Container Configuration"
label: "Secret Image Environment"
schema:
additional_attrs: true
type: dict
attrs:
- variable: CRON_TOKEN
label: "CRON_TOKEN (Generate this inside the app)"
description: "Generate token inside the app and come back later to fill this."
schema:
type: string
default: ""
- variable: AWS_ACCESS_KEY_ID
label: "AWS_ACCESS_KEY_ID"
description: "AWS Access Key ID"
schema:
type: string
default: ""
- variable: AWS_SECRET_ACCESS_KEY
label: "AWS_SECRET_ACCESS_KEY"
description: "AWS Secret Access Key"
schema:
type: string
default: ""
- variable: AWS_DEFAULT_REGION
label: "AWS_DEFAULT_REGION"
description: "AWS Default Region"
schema:
type: string
default: ""
- variable: AWS_BUCKET
label: "AWS_BUCKET"
description: "AWS Bucket"
schema:
type: string
default: ""
- variable: MAIL_FROM_ADDRESS
label: "MAIL_FROM_ADDRESS"
description: "Mail from Address"
schema:
type: string
default: ""
- variable: MAIL_FROM_NAME
label: "MAIL_FROM_NAME"
description: "Mail from Name"
schema:
type: string
default: ""
- variable: MAIL_DRIVER
label: "MAIL_DRIVER"
description: "Mail Driver"
schema:
type: string
default: "smtp"
enum:
- value: "smtp"
description: "smtp"
- value: "mailgun"
description: "mailgun"
- value: "sendmail"
description: "sendmail"
- value: "ses"
description: "ses"
- value: "postmark"
description: "postmark"
- value: "log"
description: "log"
- value: "array"
description: "array"
- variable: MAIL_HOST
label: "MAIL_HOST"
description: "Mail Host"
schema:
type: string
default: ""
- variable: MAIL_PORT
label: "MAIL_PORT"
description: "Mail Port"
schema:
type: int
- variable: MAIL_USERNAME
label: "MAIL_USERNAME"
description: "Mail Username"
schema:
type: string
default: ""
- variable: MAIL_PASSWORD
label: "MAIL_PASSWORD"
description: "Mail Password"
schema:
type: string
default: ""
- variable: MAIL_ENCRYPTION
label: "MAIL_ENCRYPTION"
description: "Mail Encryption"
schema:
type: string
default: "tls"
# 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: 10160
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: backups
label: "App Backup Storage"
description: "Stores the Application Backup."
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,53 @@
{{/* Define the cronjob */}}
{{- define "linkace.cronjob" -}}
{{- if .Values.secret.CRON_TOKEN }}
{{- $jobName := include "common.names.fullname" . }}
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: {{ printf "%s-cronjob" $jobName }}
labels:
{{- include "common.labels" . | nindent 4 }}
spec:
schedule: "{{ .Values.cronjob.schedule }}"
concurrencyPolicy: Forbid
{{- with .Values.cronjob.failedJobsHistoryLimit }}
failedJobsHistoryLimit: {{ . }}
{{- end }}
{{- with .Values.cronjob.successfulJobsHistoryLimit }}
successfulJobsHistoryLimit: {{ . }}
{{- end }}
jobTemplate:
metadata:
spec:
template:
metadata:
spec:
securityContext:
runAsUser: 568
runAsGroup: 568
restartPolicy: Never
containers:
- name: {{ .Chart.Name }}
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
capabilities:
drop:
- ALL
env:
- name: CRON_TOKEN
value: {{ .Values.secret.CRON_TOKEN }}
image: "{{ .Values.alpineImage.repository }}:{{ .Values.alpineImage.tag }}"
args:
- curl
- "http://{{ $jobName }}.ix-{{ .Release.Name }}.svc.cluster.local:{{ .Values.service.main.ports.main.port }}/cron/$(CRON_TOKEN)"
resources:
{{ toYaml .Values.resources | indent 16 }}
{{- end -}}
{{- end }}
@@ -0,0 +1,20 @@
{{/* Define the secrets */}}
{{- define "linkace.secrets" -}}
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: linkace-secrets
{{- $linkaceprevious := lookup "v1" "Secret" .Release.Namespace "linkace-secrets" }}
{{- $app_key := "" }}
data:
{{- if $linkaceprevious}}
APP_KEY: {{ index $linkaceprevious.data "APP_KEY" }}
{{- else }}
{{- $app_key := randAlphaNum 32 }}
APP_KEY: {{ $app_key | b64enc | quote }}
{{- end }}
{{- end -}}
@@ -0,0 +1,9 @@
{{/* Make sure all variables are set properly */}}
{{ include "common.setup" . }}
{{ include "linkace.cronjob" . }}
{{ include "linkace.secrets" . }}
{{/* Render the templates */}}
{{ include "common.postSetup" . }}
+141
View File
@@ -0,0 +1,141 @@
image:
repository: tccr.io/truecharts/linkace
tag: v1.9.1@sha256:88923f556900b0c6b79ea978e3692c690c0a6f9c28d048f2067a803095de1ef1
pullPolicy: IfNotPresent
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
podSecurityContext:
runAsUser: 0
runAsGroup: 0
env:
# Internal Envs
DB_CONNECTION: "mysql"
DB_PORT: "3306"
DB_DATABASE: "{{ .Values.mariadb.mariadbDatabase }}"
DB_USERNAME: "{{ .Values.mariadb.mariadbUsername }}"
REDIS_PORT: "6379"
CACHE_DRIVER: "redis"
SESSION_DRIVER: "redis"
APP_NAME: "LinkAce"
APP_ENV: "production"
APP_TIMEZONE: "{{ .Values.env.TZ }}"
# User Envs
TZ: UTC
APP_URL: "http://localhost"
APP_DEBUG: false
BACKUP_ENABLED: false
BACKUP_DISK: s3
BACKUP_NOTIFICATION_EMAIL: your@email.com
BACKUP_MAX_SIZE: 512
envValueFrom:
DB_HOST:
secretKeyRef:
name: mariadbcreds
key: plainhost
DB_PASSWORD:
secretKeyRef:
name: mariadbcreds
key: mariadb-password
REDIS_HOST:
secretKeyRef:
name: rediscreds
key: plainhost
REDIS_PASSWORD:
secretKeyRef:
name: rediscreds
key: redis-password
APP_KEY:
secretKeyRef:
name: linkace-secrets
key: APP_KEY
initContainers:
# Copy app to a temp folder as we gonna need it, so we can create the ".env" file in there.
1-copy-app:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
volumeMounts:
- name: app
mountPath: "/tmp"
command: ["/bin/sh", "-c"]
args:
- >
echo "Copying app...";
cp -R /app/* /tmp/;
# App checks ".env" for "SETUP_COMPELTED" status, to determine if it needs to run initial setup or not.
# We create this file and set it to false if it doesn't exists.
# If it exists, we let the app decide it's value (true|false) and how to proceed.
2-create-env-file:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
volumeMounts:
- name: app
mountPath: "/app"
command: ["/bin/sh", "-c"]
args:
- >
if [ ! -f "/app/.env" ];
then
echo "Preparing for initial installation";
echo "SETUP_COMPLETED=false" > /app/.env;
echo "File .env created.";
else
echo "Initial installation has already completed.";
fi;
# App does not like 775 perms on dirs.. So we have to set 777
3-chmod:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
volumeMounts:
- name: app
mountPath: "/app"
- name: logs
mountPath: "/app/storage/logs"
- name: backups
mountPath: "/app/storage/app/backups"
command: ["/bin/sh", "-c"]
args:
- >
echo "CHMOD-ing files...";
chmod -R 777 /app;
chmod -R 777 /app/storage/logs;
chmod -R 777 /app/storage/app/backups;
echo "CHMOD Complete";
# Set cron every 15 min, official docs says every minute, but seems excesive.
# It just checks for dead links and sends a request to WayBack Machine to archive.
cronjob:
schedule: "*/15 * * * *"
annotations: {}
failedJobsHistoryLimit: 5
successfulJobsHistoryLimit: 2
service:
main:
ports:
main:
port: 10160
targetPort: 80
persistence:
app:
enabled: true
mountPath: "/app"
logs:
enabled: true
mountPath: "/app/storage/logs"
backups:
enabled: true
mountPath: "/app/storage/app/backups"
mariadb:
enabled: true
mariadbUsername: linkace
mariadbDatabase: linkace
existingSecret: "mariadbcreds"
redis:
enabled: true
existingSecret: "rediscreds"