Commit new App releases for TrueCharts

Signed-off-by: TrueCharts-Bot <bot@truecharts.org>
This commit is contained in:
TrueCharts-Bot 2022-02-13 12:15:25 +00:00
parent 602590543b
commit ced2b9eb2b
19 changed files with 4048 additions and 0 deletions

View File

@ -0,0 +1,10 @@
# Changelog<br>
<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))

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.

View File

@ -0,0 +1,12 @@
dependencies:
- name: common
repository: https://truecharts.org
version: 8.15.2
- name: mariadb
repository: https://truecharts.org/
version: 1.0.68
- name: redis
repository: https://truecharts.org
version: 1.0.71
digest: sha256:b1da3265f6cd1f2de737e63e8d697b533e3f12e3b717bfa59e79677a94d34a52
generated: "2022-02-13T12:10:30.367605563Z"

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: 0.0.1
annotations:
truecharts.org/catagories: |
- media
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U

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

View File

@ -0,0 +1,3 @@
Your self-hosted bookmark archive. Free and open source.
This App is supplied by TrueCharts, for more information please visit https://truecharts.org

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,84 @@
# 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.nginx.image | string | `"{{ .Values.nginxImage.repository }}:{{ .Values.nginxImage.tag }}"` | |
| additionalContainers.nginx.name | string | `"nginx"` | |
| additionalContainers.nginx.ports[0].containerPort | int | `80` | |
| additionalContainers.nginx.ports[0].name | string | `"main"` | |
| additionalContainers.nginx.volumeMounts[0].mountPath | string | `"/etc/nginx/conf.d/linkace.conf"` | |
| additionalContainers.nginx.volumeMounts[0].name | string | `"linkace-config"` | |
| additionalContainers.nginx.volumeMounts[0].readOnly | bool | `true` | |
| additionalContainers.nginx.volumeMounts[0].subPath | string | `"nginx-config"` | |
| additionalContainers.nginx.volumeMounts[1].mountPath | string | `"/app"` | |
| additionalContainers.nginx.volumeMounts[1].name | string | `"app"` | |
| cronjob.annotations | object | `{}` | |
| cronjob.failedJobsHistoryLimit | int | `5` | |
| cronjob.schedule | string | `"* * * * *"` | |
| 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:d56fa76113e3e5ab0889a13bdfb463d12b71b3e2ec839a8ff6fa99ec036be862"` | |
| initContainers.1-create-env-file.args[0] | string | `"if [ ! -f \"/app/.env\" ]; then\n echo \"Preparing for initial installation\";\n echo \"SETUP_COMPLETED=false\" > /app/.env;\nelse\n echo \"Initial installation has already completed.\";\nfi;\n"` | |
| initContainers.1-create-env-file.command[0] | string | `"/bin/sh"` | |
| initContainers.1-create-env-file.command[1] | string | `"-c"` | |
| initContainers.1-create-env-file.image | string | `"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` | |
| initContainers.1-create-env-file.volumeMounts[0].mountPath | string | `"/app"` | |
| initContainers.1-create-env-file.volumeMounts[0].name | string | `"app"` | |
| mariadb.enabled | bool | `true` | |
| mariadb.existingSecret | string | `"mariadbcreds"` | |
| mariadb.mariadbDatabase | string | `"linkace"` | |
| mariadb.mariadbUsername | string | `"linkace"` | |
| nginxImage.repository | string | `"tccr.io/truecharts/nginx"` | |
| nginxImage.tag | string | `"v1.21.6@sha256:80d87a1d4d67749d2caaa64ee061a66a946b81942ac56f4780e36f8356cee371"` | |
| 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.runAsNonRoot | bool | `false` | |
| service.main.ports.main.port | int | `10160` | |
| service.main.ports.main.targetPort | int | `80` | |
All Rights Reserved - The TrueCharts Project

View File

@ -0,0 +1,127 @@
image:
repository: tccr.io/truecharts/linkace
tag: v1.9.1@sha256:d56fa76113e3e5ab0889a13bdfb463d12b71b3e2ec839a8ff6fa99ec036be862
pullPolicy: IfNotPresent
nginxImage:
repository: tccr.io/truecharts/nginx
tag: v1.21.6@sha256:80d87a1d4d67749d2caaa64ee061a66a946b81942ac56f4780e36f8356cee371
securityContext:
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
additionalContainers:
nginx:
name: nginx
image: "{{ .Values.nginxImage.repository }}:{{ .Values.nginxImage.tag }}"
ports:
- containerPort: 80
name: main
volumeMounts:
- name: linkace-config
mountPath: "/etc/nginx/conf.d/linkace.conf"
subPath: nginx-config
readOnly: true
- name: app
mountPath: "/app"
initContainers:
# 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.
1-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;
else
echo "Initial installation has already completed.";
fi;
cronjob:
schedule: "* * * * *"
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"

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -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 }}

View File

@ -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 -}}

View File

@ -0,0 +1,23 @@
{{/* Make sure all variables are set properly */}}
{{ include "common.setup" . }}
{{/* Append the general configMap volume to the volumes */}}
{{- define "linkace.harcodedValues" -}}
persistence:
linkace-config:
enabled: "true"
mountPath: "/etc/nginx/conf.d/linkace.conf"
subPath: "nginx-config"
type: "custom"
volumeSpec:
configMap:
name: {{ printf "%v-config" (include "common.names.fullname" .) }}
{{- end -}}
{{- $_ := mergeOverwrite .Values (include "linkace.harcodedValues" . | fromYaml) -}}
{{- include "linkace.cronjob" . }}
{{- include "linkace.secrets" . }}
{{/* Render the templates */}}
{{ include "common.postSetup" . }}

View File

@ -0,0 +1,65 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "common.names.fullname" . }}-config
labels:
{{- include "common.labels" . | nindent 4 }}
data:
nginx-config: |-
server {
root /app/public;
server_name _;
index index.php;
charset utf-8;
client_max_body_size 20M;
port_in_redirect off;
# Choose the connection method
listen 0.0.0.0:8080;
# Content security headers for Laravel
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
# Gzip
gzip on;
gzip_vary on;
gzip_comp_level 8;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private auth;
gzip_types application/javascript application/x-javascript application/xhtml+xml font/woff font/woff2 image/svg+xml image/x-icon text/css text/javascript text/plain text/xml;
# Location configs
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Assets and media files
location ~* \.(?:css|js|map|scss|jpg|jpeg|png|gif|mp4|woff|woff2|ico|svg|webmanifest)$ {
expires max;
access_log off;
add_header Cache-Control "public";
try_files $uri =404;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Error pages
error_page 404 /index.php;
error_page 403 /index.php;
# PHP handling
location ~ \.php$ {
fastcgi_pass localhost:9000;
try_files $uri /index.php;
include fastcgi_params;
fastcgi_keep_conn on;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_read_timeout 300;
}
}

View File

View File

@ -0,0 +1,4 @@
icon_url: https://truecharts.org/_static/img/appicons/linkace-icon.png
categories:
- media