Add Stage-3 Apps

Please consider all these as mostly feature complete BETA Apps for the time being

Co-authored-by: Troy Prelog <35702532+tprelog@users.noreply.github.com>
Signed-off-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
This commit is contained in:
kjeld Schouten-Lebbing 2021-02-10 11:09:33 +01:00
parent 9888df7e4d
commit 91b7bc2c40
No known key found for this signature in database
GPG Key ID: 4CDAD4A532BC1EDB
114 changed files with 6257 additions and 1 deletions

View File

@ -37,7 +37,7 @@ jobs:
chartname=$(basename ${chart})
echo "Processing ${chart} version ${maxversion}"
mv ${chart}/${maxversion} ../charts/charts/${chartname}
rm ../charts/charts/${chartname}/Chart.lock
rm ../charts/charts/${chartname}/Chart.lock || echo "chart.lock missing for ${chartname}, continuing..."
fi
done
mv library/* ../charts/charts/

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,21 @@
apiVersion: v2
appVersion: 0.6.9
description: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
name: calibre-web
version: 0.0.1
upstream_version: 4.3.1
keywords:
- calibre
- ebook
home: https://github.com/truecharts/truecharts/tree/master/charts/calibre-web
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png
sources:
- https://hub.docker.com/r/linuxserver/calibre-web/
- https://github.com/janeczku/calibre-web
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,85 @@
# Calibre-Web
This is a helm chart for [Calibre-Web](https://github.com/janeczku/calibre-web).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/calibre-web
```
## Storage
If you plan to use networked storage to store your media or config for Booksonic, (NFS, etc.) please take a look at the
Fast Access option in the Booksonic settings. This will help improve the perfomance of the application
by not constantly monitoring media folders.
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/calibre-web
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/calibre-web/values.yaml)
file. It has several commented out suggested values. Most notably, these include several environment variables used to
customize the container.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install calibre-web \
--set env.TZ="America/New_York" \
k8s-at-home/calibre-web
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install calibre-web k8s-at-home/calibre-web -f values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
### Upgrading from 2.x.x to 3.x.x
Due to migrating to a centralized common library some values in `values.yaml` have changed.
Examples:
* `service.port` has been moved to `service.port.port`.
* `persistence.type` has been moved to `controllerType`.
Refer to the library values.yaml for more configuration options.

View File

@ -0,0 +1 @@
The calibre App is designed to deploy calibre in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,310 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "linuxserver/calibre-web"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "version-0.6.9"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 8083
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: media
label: "media dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "media"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/media"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,53 @@
# Default values for Calibre-Web.
image:
repository: linuxserver/calibre-web
pullPolicy: IfNotPresent
tag: version-0.6.9
strategy:
type: Recreate
service:
port:
port: 8083
env: {}
# TZ:
# PUID:
# PGID:
# UMASK:
# DOCKER_MODS:
persistence:
config:
enabled: false
emptyDir: false
books:
enabled: false
emptyDir: false
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Set to true to retain the PVC upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false

View File

@ -0,0 +1,53 @@
# Default values for Calibre-Web.
image:
repository: linuxserver/calibre-web
pullPolicy: IfNotPresent
tag: version-0.6.9
strategy:
type: Recreate
service:
port:
port: 8083
env: {}
# TZ:
# PUID:
# PGID:
# UMASK:
# DOCKER_MODS:
persistence:
config:
enabled: false
emptyDir: false
books:
enabled: false
emptyDir: false
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Set to true to retain the PVC upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false

View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
.vscode/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,21 @@
apiVersion: v2
appVersion: 1.17.0
description: FreshRSS is a self-hosted RSS feed aggregator
name: freshrss
version: 0.0.1
upstream_version: 2.3.1
keywords:
- freshrss
- rss
home: https://github.com/truecharts/truecharts/tree/master/charts/freshrss
icon: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true
sources:
- https://github.com/FreshRSS/FreshRSS
- https://hub.docker.com/r/linuxserver/freshrss
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,67 @@
# FreshRSS
This is a helm chart for [FreshRSS](https://github.com/FreshRSS/FreshRSS).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/freshrss
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/freshrss
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/freshrss/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install freshrss \
--set env.TZ="America/New_York" \
k8s-at-home/freshrss
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install freshrss k8s-at-home/freshrss --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 1.0.1 -> 2.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.

View File

@ -0,0 +1 @@
The freshrss App is designed to deploy freshrss in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,276 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "linuxserver/freshrss"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "version-1.17.0"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 80
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,32 @@
# Default values for FreshRSS.
image:
repository: linuxserver/freshrss
pullPolicy: IfNotPresent
tag: version-1.17.0
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

View File

@ -0,0 +1,31 @@
# Default values for FreshRSS.
image:
repository: linuxserver/freshrss
pullPolicy: IfNotPresent
tag: version-1.17.0
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,20 @@
apiVersion: v2
appVersion: latest
description: Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection.
name: gaps
version: 0.0.1
upstream_version: 1.1.1
keywords:
- plex
- plex-media-server
home: https://github.com/truecharts/truecharts/tree/master/charts/gaps
icon: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png
sources:
- https://github.com/JasonHHouse/gaps
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,67 @@
# Gaps
This is a helm chart for [Gaps](https://github.com/JasonHHouse/gaps).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/gaps
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/gaps
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/gaps/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install gaps \
--set env.TZ="America/New_York" \
k8s-at-home/gaps
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install gaps k8s-at-home/gaps --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.

View File

@ -0,0 +1 @@
The gaps App is designed to deploy gaps in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,277 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "housewrecker/gaps"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "latest"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 8484
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: data
label: "data dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "data"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/usr/data"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,31 @@
# Default values for Gaps.
image:
repository: housewrecker/gaps
pullPolicy: IfNotPresent
tag: latest
strategy:
type: Recreate
service:
port:
port: 8484
env: {}
# TZ: UTC
persistence:
data:
enabled: false
emptyDir: false
mountPath: /usr/data
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
data:
enabled: false
emptyDir: false

View File

@ -0,0 +1,31 @@
# Default values for Gaps.
image:
repository: housewrecker/gaps
pullPolicy: IfNotPresent
tag: latest
strategy:
type: Recreate
service:
port:
port: 8484
env: {}
# TZ: UTC
persistence:
data:
enabled: false
emptyDir: false
mountPath: /usr/data
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
data:
enabled: false
emptyDir: false

3
charts/gaps/item.yaml Normal file
View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,19 @@
apiVersion: v2
appVersion: v2.7.1
description: ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home
name: grocy
version: 0.0.1
upstream_version: 4.3.1
keywords:
- grocy
home: https://github.com/truecharts/truecharts/tree/master/charts/grocy
icon: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png
sources:
- https://github.com/grocy/grocy
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,69 @@
# grocy
This is a helm chart for [grocy](https://grocy.info/).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/grocy
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/grocy
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/grocy/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install grocy \
--set env.TZ="America/New_York" \
k8s-at-home/grocy
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install grocy k8s-at-home/grocy --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
Refer to the library values.yaml for more configuration options.

View File

@ -0,0 +1 @@
The grocy App is designed to deploy grocy in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,278 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "linuxserver/grocy"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "version-v2.7.1"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 80
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,31 @@
# Default values for grocy.
image:
repository: linuxserver/grocy
tag: version-v2.7.1
pullPolicy: IfNotPresent
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# TZ:
# PUID:
# PGID:
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

View File

@ -0,0 +1,31 @@
# Default values for grocy.
image:
repository: linuxserver/grocy
tag: version-v2.7.1
pullPolicy: IfNotPresent
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# TZ:
# PUID:
# PGID:
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

3
charts/grocy/item.yaml Normal file
View File

@ -0,0 +1,3 @@
categories:
- Home-Automation
icon_url: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,37 @@
apiVersion: v2
appVersion: 2021.2.2
description: Home Assistant
name: home-assistant
version: 0.0.1
upstream_version: 5.3.0
keywords:
- home-assistant
- hass
- homeassistant
home: https://github.com/truecharts/charts/tree/dev/charts/home-assistant
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Home_Assistant_Logo.svg/519px-Home_Assistant_Logo.svg.png
sources:
- https://github.com/home-assistant/home-assistant
- https://github.com/cdr/code-server
- https://github.com/k8s-at-home/charts/tree/master/charts/home-assistant
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.10.1
#- name: postgresql
# version: 10.2.0
# repository: https://charts.bitnami.com/bitnami
# condition: postgresql.enabled
## mariadb is currently not ported to SCALE yet.
# - name: mariadb
# version: 0.0.1
# repository: file://../../mariadb/0.0.1/
# condition: mariadb.enabled
## InfluxDB is currently not ported to SCALE yet.
#- name: influxdb
# version: 1.1.6
# repository: https://charts.bitnami.com/bitnami
# condition: influxdb.enabled

View File

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2020 k8s@Home
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,5 @@
# Home-Assistant helm chart
## Configuration
Please refer to questions.yaml for a detailed overview on supported configurable items.

View File

@ -0,0 +1,3 @@
# Home-Assistant
Home-Assistant chart is a chart designed to deploy Home-Assistant in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,363 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "network / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
questions:
# Image related
- variable: image
group: "Container Image"
label: "Home Assistant"
schema:
type: dict
required: true
attrs:
- variable: repository
label: "Image Repository"
schema:
type: string
default: "homeassistant/home-assistant"
editable: false
- variable: tag
label: "Image Tag"
description: "Tag to use for specified image"
schema:
type: string
default: "stable"
required: true
- variable: pullPolicy
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Update Policy
- variable: strategyType
group: "Container Image"
label: "Update Strategy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Time Zone
- variable: git
group: "Configuration"
label: "Git"
description: "Attatch git repository to Home-Assistant"
schema:
type: dict
attrs:
- variable: deployKey
label: "deployKey"
description: "Raw SSH private key"
schema:
type: string
default: ""
- variable: deployKeyBase64
label: "deployKey"
description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence"
schema:
type: string
default: ""
# Configure app volumes
- variable: appVolumeMounts
group: "Storage"
label: ""
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "Config Volume"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Name"
schema:
type: string
default: "config"
editable: false
- variable: mountPath
label: "Mount path inside the container"
schema:
type: path
default: "/config"
editable: false
- variable: hostPathEnabled
label: "Config - Enable Host Path"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Config Host Path"
schema:
type: hostpath
required: true
# Z-Wave device -----------------
- variable: zwave
label: "Z-Wave Device"
schema:
type: dict
attrs:
- variable: enabled
label: "USB Z-Wave Device"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Path to Z-Wave device on host"
schema:
type: path
required: true
default: "/dev/ttyAMC0"
- variable: mountPath
label: "Path to mount device inside the container"
schema:
type: path
required: true
default: "/dev/ttyAMC0"
# Zigbee device -----------------
- variable: zigbee
label: "Zigbee Device"
schema:
type: dict
attrs:
- variable: enabled
label: "USB Zigbee Device"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Path to Zigbee device on host"
schema:
type: path
required: true
default: "/dev/ttyAMC1"
- variable: mountPath
label: "Path to mount device inside the container"
schema:
type: path
required: true
default: "/dev/ttyAMC1"
# Enable privileged
- variable: securityContext
group: "Storage"
label: "Security Context"
schema:
type: dict
attrs:
- variable: privileged
label: "Enable privileged to pass thru a USB device from the host"
schema:
type: boolean
default: false
# Enable Host Network
- variable: hostNetwork
group: "Networking"
label: "Enable Host Network"
description: "Required if you want devices to be discoverable by Home Assistant"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: dnsPolicy
group: "Networking"
label: "Set the correct DNS policy"
description: "Required to be set to ClusterFirstWithHostNet when using hostNetwork"
schema:
type: string
default: "ClusterFirst"
enum:
- value: "ClusterFirst"
description: "ClusterFirst"
- value: "ClusterFirstWithHostNet"
description: "ClusterFirstWithHostNet"
# Service Configuration
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "NodePort"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 8123
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 38123
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,15 @@
{{- if or .Values.git.deployKey .Values.git.deployKeyBase64 }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "common.names.fullname" . }}-deploykey
labels:
{{- include "common.labels" . | nindent 4 }}
type: Opaque
data:
{{- if .Values.git.deployKey }}
id_rsa: {{ .Values.git.deployKey | b64enc | quote }}
{{- else }}
id_rsa: {{ .Values.git.deployKeyBase64 | quote }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,33 @@
{{- if .Values.prometheus.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ template "common.names.fullname" . }}
labels:
{{- include "common.labels" . | nindent 4 }}
{{- with .Values.prometheus.serviceMonitor.additionalLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
{{- include "common.labels.selectorLabels" . | nindent 6 }}
endpoints:
- port: {{ default "http" .Values.service.port.name }}
{{- with .Values.prometheus.serviceMonitor.interval }}
interval: {{ . }}
{{- end }}
{{- with .Values.prometheus.serviceMonitor.bearerTokenFile }}
bearerTokenFile: {{ . }}
{{- end }}
{{- with .Values.prometheus.serviceMonitor.bearerTokenSecret }}
bearerTokenSecret:
name: {{ .name }}
key: {{ .key }}
{{- with .optional }}
optional: {{ . }}
{{- end }}
{{- end }}
path: /api/prometheus
{{- end }}

View File

@ -0,0 +1,114 @@
# Default values for Home Assistant
image:
repository: homeassistant/home-assistant
pullPolicy: IfNotPresent
tag: 2021.1.5
strategy:
type: Recreate
env: {}
# TZ:
service:
port:
port: 8123
nodePort: 30023
# # Enable devices to be discoverable
# hostNetwork: true
# # When hostNetwork is true set dnsPolicy to ClusterFirstWithHostNet
# dnsPolicy: ClusterFirstWithHostNet
# # Enable passing thru a USB device to Home Assistant
# securityContext:
# privileged: true
# Allow access a Git repository by passing in a private SSH key
git:
# Raw SSH private key
deployKey: ""
# Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence.
deployKeyBase64: ""
# Enable a prometheus-operator servicemonitor
prometheus:
serviceMonitor:
enabled: false
# interval: 1m
# additionalLabels: {}
persistence:
config:
enabled: false
emptyDir: false
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
# # Path to your Z-Wave / Zigbee device in the container
# additionalVolumeMounts:
# - name: zwave-usb
# mountPath: /dev/serial/by-id/usb-0658_0200-if00
# # Path to your Z-Wave / Zigbee device on the host
# additionalVolumes:
# - name: zwave-usb
# hostPath:
# path: /dev/serial/by-id/usb-0658_0200-if00
# Enabled mariadb
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/mariadb
mariadb:
enabled: false
architecture: standalone
auth:
database: home-assistant
username: home-assistant
password: home-assistant-pass
rootPassword: home-assistantrootpass
primary:
persistence:
enabled: false
# storageClass: ""
# Enabled postgres
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
postgresql:
enabled: false
postgresqlUsername: home-assistant
postgresqlPassword: home-assistant-pass
postgresqlDatabase: home-assistant
persistence:
enabled: false
# storageClass: ""
# Enable influxdb
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/influxdb
influxdb:
enabled: false
architecture: standalone
database: home_assistant
authEnabled: false
persistence:
enabled: false
# storageClass: ""
# size: 8Gi
## TrueCharts Config
appVolumesEnabled: false
emptyDirVolumes: true

View File

@ -0,0 +1,124 @@
# Default values for zwave2mqtt.
image:
repository: homeassistant/home-assistant
pullPolicy: IfNotPresent
tag: 2021.1.5
strategy:
type: Recreate
env: {}
# TZ:
service:
type: NodePort
port:
port: 8123
nodePort: 38123
# # Enable devices to be discoverable
# hostNetwork: true
# # When hostNetwork is true set dnsPolicy to ClusterFirstWithHostNet
# dnsPolicy: ClusterFirstWithHostNet
# # Enable passing thru a USB device to Home Assistant
# securityContext:
# privileged: true
# Allow access a Git repository by passing in a private SSH key
git:
# Raw SSH private key
deployKey: ""
# Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence.
deployKeyBase64: ""
# Enable a prometheus-operator servicemonitor
prometheus:
serviceMonitor:
enabled: false
# interval: 1m
# additionalLabels: {}
persistence:
config:
enabled: false
emptyDir: false
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
# # Path to your Z-Wave / Zigbee device in the container
# additionalVolumeMounts:
# - name: zwave-usb
# mountPath: /dev/serial/by-id/usb-0658_0200-if00
# # Path to your Z-Wave / Zigbee device on the host
# additionalVolumes:
# - name: zwave-usb
# hostPath:
# path: /dev/serial/by-id/usb-0658_0200-if00
# Enabled mariadb
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/mariadb
mariadb:
enabled: false
architecture: standalone
auth:
database: home-assistant
username: home-assistant
password: home-assistant-pass
rootPassword: home-assistantrootpass
primary:
persistence:
enabled: false
# storageClass: ""
# Enabled postgres
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
postgresql:
enabled: false
postgresqlUsername: home-assistant
postgresqlPassword: home-assistant-pass
postgresqlDatabase: home-assistant
persistence:
enabled: false
# storageClass: ""
# Enable influxdb
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/influxdb
influxdb:
enabled: false
architecture: standalone
database: home_assistant
authEnabled: false
persistence:
enabled: false
# storageClass: ""
# size: 8Gi
## TrueCharts Config
appVolumesEnabled: true
emptyDirVolumes: false
appVolumeMounts:
config:
enabled: true
emptyDir: false
datasetName: "config"
mountPath: "/config"
hostPathEnabled: false
data:
enabled: false
emptyDir: false

View File

@ -0,0 +1,3 @@
categories:
- home-automation
icon_url: https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Home_Assistant_Logo.svg/519px-Home_Assistant_Logo.svg.png

View File

@ -0,0 +1,25 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,22 @@
apiVersion: v2
appVersion: 4.0.8
description: Lychee is a free photo-management tool, which runs on your server or web-space
name: lychee
version: 0.0.1
upstream_version: 2.3.1
keywords:
- lychee
- photo
- pictures
home: https://github.com/truecharts/truecharts/tree/master/charts/lychee
icon: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true
sources:
- https://github.com/LycheeOrg/Lychee
- https://hub.docker.com/r/lycheeorg/lychee
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,67 @@
# Lychee
This is a helm chart for [Lychee](https://github.com/LycheeOrg/Lychee).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/lychee
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/lychee
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/lychee/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install lychee \
--set env.TZ="America/New_York" \
k8s-at-home/lychee
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install lychee k8s-at-home/lychee --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 1.0.1 -> 2.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.

View File

@ -0,0 +1 @@
The lychee App is designed to deploy lychee in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,344 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "lycheeorg/lychee-laravel"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "v4.0.8"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 80
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/conf"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: uploads
label: "uploads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "uploads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/uploads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: sym
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "sym Name"
schema:
type: string
default: "sym"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/sym"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,85 @@
# Default values for Lychee.
image:
repository: lycheeorg/lychee-laravel
pullPolicy: IfNotPresent
tag: v4.0.8
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# PHP_TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
mountPath: /conf
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
uploads:
enabled: false
emptyDir: false
mountPath: /uploads
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
sym:
enabled: false
emptyDir: false
mountPath: /sym
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
uploads:
enabled: false
emptyDir: false
sym:
enabled: false
emptyDir: false

View File

@ -0,0 +1,84 @@
# Default values for Lychee.
image:
repository: lycheeorg/lychee-laravel
pullPolicy: IfNotPresent
tag: v4.0.8
strategy:
type: Recreate
service:
port:
port: 80
env: {}
# PHP_TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
mountPath: /conf
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
uploads:
enabled: false
emptyDir: false
mountPath: /uploads
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
sym:
enabled: false
emptyDir: false
mountPath: /sym
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
uploads:
enabled: false
emptyDir: false
sym:
enabled: false
emptyDir: false

3
charts/lychee/item.yaml Normal file
View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true

View File

@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,21 @@
apiVersion: v2
appVersion: v3.8.1
description: Usenet meta search
name: nzbhydra2
version: 0.0.1
upstream_version: 5.3.1
keywords:
- nzbhydra2
- usenet
home: https://github.com/truecharts/truecharts/tree/master/charts/nzbhydra2
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png
sources:
- https://hub.docker.com/r/linuxserver/nzbhydra2
- https://github.com/theotherp/nzbhydra2
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,78 @@
# Nzbhydra2
This is a helm chart for [Nzbhydra2](https://github.com/theotherp/nzbhydra2).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/nzbhydra2
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/nzbhydra2
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/nzbhydra2/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install nzbhydra2 \
--set env.TZ="America/New_York" \
k8s-at-home/nzbhydra2
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install nzbhydra2 k8s-at-home/nzbhydra2 --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
### Upgrading from 3.x.x to 4.x.x
Due to migrating to a centralized common library some values in `values.yaml` have changed.
Examples:
* `service.port` has been moved to `service.port.port`.
* `persistence.type` has been moved to `controllerType`.
Refer to the library values.yaml for more configuration options.

View File

@ -0,0 +1 @@
The nzbhydra App is designed to deploy nzbhydra in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,278 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "linuxserver/nzbhydra2"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "version-v3.8.1"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 5076
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,69 @@
# Default values for nzbhydra2.
image:
repository: linuxserver/nzbhydra2
pullPolicy: IfNotPresent
tag: version-v3.8.1
strategy:
type: Recreate
service:
port:
port: 5076
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
probes:
liveness:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/livenessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
readiness:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/readinessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
startup:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/readinessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

View File

@ -0,0 +1,69 @@
# Default values for nzbhydra2.
image:
repository: linuxserver/nzbhydra2
pullPolicy: IfNotPresent
tag: version-v3.8.1
strategy:
type: Recreate
service:
port:
port: 5076
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
probes:
liveness:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/livenessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
readiness:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/readinessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
startup:
custom: true
enabled: true
spec:
failureThreshold: 5
httpGet:
path: /actuator/health/readinessState
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
persistence:
config:
enabled: false
emptyDir: false
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false

View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png

View File

@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

View File

@ -0,0 +1,19 @@
apiVersion: v2
appVersion: 4.3.0
description: qBittorrent is a cross-platform free and open-source BitTorrent client
name: qbittorrent
version: 0.0.1
upstream_version: 7.2.1
keywords:
- qbittorrent
- torrrent
home: https://github.com/truecharts/truecharts/tree/master/charts/qbittorrent
icon: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png
sources:
- https://hub.docker.com/r/linuxserver/qbittorrent/
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,82 @@
# qBittorrent
This is a helm chart for [qbittorrent](https://qbittorrent.org/).
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/qbittorrent
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/qbittorrent
```
The default login details (change ASAP) are:
* login:admin
* password:adminadmin
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/qbittorrent/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install my-release \
--set env.TZ="America/New_York" \
k8s-at-home/qbittorrent
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install my-release k8s-at-home/qbittorrent --values values.yaml
```
```yaml
image:
tag: ...
```
---
**NOTE**
If you get
```console
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
```
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
---
## Upgrading an existing Release to a new major version
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
### Upgrading from 5.x.x to 6.x.x
Due to migrating to a centralized common library some values in `values.yaml` have changed.
Examples:
* `service.port` has been moved to `service.port.port`.
* `persistence.type` has been moved to `controllerType`.
Refer to the library values.yaml for more configuration options.

View File

@ -0,0 +1 @@
The qbittorrent App is designed to deploy qbittorrent in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,468 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "linuxserver/qbittorrent"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "version-4.3.0202010181232-7086-1c663adeeubuntu18.04.1"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 8787
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
- variable: appAdditionalServices
group: "Networking"
label: "Configure additional services"
schema:
type: dict
attrs:
- variable: tcp
label: ""
schema:
type: dict
attrs:
- variable: enabled
label: "Enable TCP port for Torrent Connections"
schema:
type: boolean
default: true
show_subquestions_if: true
subquestions:
- variable: port
label: "Configuration"
schema:
type: dict
attrs:
- variable: targetPort
label: "container targetPort"
schema:
type: int
default: 6881
required: false
- variable: port
label: "container port"
schema:
type: int
default: 51413
required: false
- variable: type
label: "service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "ClusterIP"
description: "ClusterIP"
- value: "NodePort"
description: "NodePort"
- variable: udp
label: ""
schema:
type: dict
attrs:
- variable: enabled
label: "Enable TCP port for Torrent Connections"
schema:
type: boolean
default: true
show_subquestions_if: true
subquestions:
- variable: port
label: "Configuration"
schema:
type: dict
attrs:
- variable: targetPort
label: "container targetPort"
schema:
type: int
default: 6881
required: false
- variable: port
label: "container port"
schema:
type: int
default: 51413
required: false
- variable: type
label: "service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "ClusterIP"
description: "ClusterIP"
- value: "NodePort"
description: "NodePort"
# Enable Host Network
- variable: hostNetwork
group: "Networking"
label: "Enable Host Network"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""
- variable: tcp
label: "TCP Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable TCP Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Select Ingress Type"
schema:
type: string
default: "TCP"
required: true
editable: false
enum:
- value: "TCP"
description: "Plain TCP Connections"
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "torrent-tcp"
required: true
enum:
- value: "torrent-tcp"
description: "Torrent-TCP: port 51413"
- variable: certType
label: "Select Certificate Type"
schema:
editable: false
type: string
default: ""
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- variable: udp
label: "UDP Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable UDP Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Select Ingress Type"
schema:
type: string
default: "UDP"
required: true
editable: false
enum:
- value: "UDP"
description: "Plain UDP Connections"
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "torrent-udp"
required: true
enum:
- value: "torrent-udp"
description: "Torrent-UDP: port 51413"

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,32 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "common.names.fullname" . }}-scripts
labels:
{{- include "common.labels" . | nindent 4 }}
data:
{{- /* Determine if the bittorrent port is set somewhere */ -}}
{{- $bittorrentPort := "" -}}
{{- range $extraServices := .Values.service.additionalServices }}
{{- if and .enabled (eq "bittorrent" .nameSuffix) -}}
{{- $bittorrentPort = .port.port -}}
{{- end }}
{{- end }}
{{- if $bittorrentPort }}
31-update-port: |-
#!/bin/bash
QBITTORRENT_CONFIGFILE="/config/qBittorrent/qBittorrent.conf"
INCOMING_PORT={{- $bittorrentPort }}
incoming_port_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin='${INCOMING_PORT})
if [[ -z "${incoming_port_exist}" ]]; then
incoming_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin')
if [[ ! -z "${incoming_exist}" ]]; then
# Get line number of Incoming
LINE_NUM=$(grep -Fn -m 1 'Connection\PortRangeMin' ${QBITTORRENT_CONFIGFILE} | cut -d: -f 1)
sed -i "${LINE_NUM}s@.*@Connection\\\PortRangeMin=${INCOMING_PORT}@" ${QBITTORRENT_CONFIGFILE}
else
echo "Connection\\PortRangeMin=${INCOMING_PORT}" >> ${QBITTORRENT_CONFIGFILE}
fi
fi
{{- end }}

View File

@ -0,0 +1,94 @@
# Default values for qbittorrent.
image:
repository: linuxserver/qbittorrent
pullPolicy: IfNotPresent
tag: version-4.3.0202010181232-7086-1c663adeeubuntu18.04.1
strategy:
type: Recreate
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
# UMASK: 022
service:
port:
port: 8080
additionalServices:
- enabled: true
nameSuffix: bittorrent
type: ClusterIP
port:
port: 6881
name: bittorrent
protocol: TCP
targetPort: 6881
persistence:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
downloads:
enabled: false
emptyDir: false
mountPath: /downloads
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
additionalVolumes:
- name: qbittorrent-scripts
emptyDir: {}
## When you want to enable automatic port configuration at startup, adjust this to:
# configMap:
# name: <RELEASENAME>-scripts
# defaultMode: 511
additionalVolumeMounts:
- mountPath: /config/custom-cont-init.d
name: qbittorrent-scripts
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
downloads:
enabled: false
emptyDir: false

View File

@ -0,0 +1,94 @@
# Default values for qbittorrent.
image:
repository: linuxserver/qbittorrent
pullPolicy: IfNotPresent
tag: version-4.3.0202010181232-7086-1c663adeeubuntu18.04.1
strategy:
type: Recreate
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
# UMASK: 022
service:
port:
port: 8080
additionalServices:
- enabled: true
nameSuffix: bittorrent
type: ClusterIP
port:
port: 6881
name: bittorrent
protocol: TCP
targetPort: 6881
persistence:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
downloads:
enabled: false
emptyDir: false
mountPath: /downloads
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
additionalVolumes:
- name: qbittorrent-scripts
emptyDir: {}
## When you want to enable automatic port configuration at startup, adjust this to:
# configMap:
# name: <RELEASENAME>-scripts
# defaultMode: 511
additionalVolumeMounts:
- mountPath: /config/custom-cont-init.d
name: qbittorrent-scripts
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
downloads:
enabled: false
emptyDir: false

View File

@ -0,0 +1,3 @@
categories:
- media
icon_url: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png

View File

@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS
.vscode/

View File

@ -0,0 +1,24 @@
apiVersion: v2
appVersion: 0.1.0.351
description: A fork of Radarr to work with Books & AudioBooks
name: readarr
version: 0.0.1
upstream_version: 1.1.1
keywords:
- readarr
- torrent
- usenet
- AudioBooks
- ebooks
home: https://github.com/truecharts/truecharts/tree/master/charts/readarr
icon: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true
sources:
- https://github.com/Readarr/Readarr
- https://readarr.com
maintainers:
- name: TrueCharts
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 0.12.0

View File

@ -0,0 +1,55 @@
# Readarr
This is a helm chart for [Readarr](https://github.com/Readarr/Readarr).
**Readarr is still in early development, and this chart will install a nightly build of Readarr.
[See the project readme for more information](https://github.com/Readarr/Readarr#readarr-is-in-early-stages-of-development-alphabeta-binary-builds-are-not-yet-available-use-of-any-test-builds-isnt-recommend-and-may-have-detrimental-effects-on-your-library). Take back-up's if you decide to use this on an existing library as the project is considered unstable**
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## TL;DR;
```shell
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
$ helm install k8s-at-home/readarr
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
helm install --name my-release k8s-at-home/readarr
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/readarr/values.yaml)
file. It has several commented out suggested values.
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install readarr \
--set env.TZ="America/New_York" \
k8s-at-home/readarr
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
chart. For example,
```console
helm install readarr k8s-at-home/readarr --values values.yaml
```
```yaml
image:
tag: ...
```

View File

@ -0,0 +1 @@
The readarr App is designed to deploy readarr in a TrueNAS SCALE kubernetes cluster.

Binary file not shown.

View File

@ -0,0 +1,344 @@
groups:
- name: "Container Image"
description: "configure container image"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Networking / service configuration"
- name: "Storage"
description: "configure app volume mounts"
- name: "Ingress"
description: "Ingress configuration"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-service.port.nodePort"
path: "/web"
questions:
# Image related
- variable: image
description: "Docker Image Details"
label: "Docker Image"
group: "Container Image"
schema:
type: dict
required: true
attrs:
- variable: repository
description: "Docker image repository"
label: "Image repository"
schema:
type: string
required: true
default: "hotio/readarr"
- variable: tag
description: "Tag to use for specified image"
label: "Image Tag"
schema:
type: string
default: "nightly"
- variable: pullPolicy
description: "Docker Image Pull Policy"
label: "Image Pull Policy"
schema:
type: string
default: "IfNotPresent"
enum:
- value: "IfNotPresent"
description: "Only pull image if not present on host"
- value: "Always"
description: "Always pull image even if present on host"
- value: "Never"
description: "Never pull image even if it's not present on host"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: type
label: "Service type"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
show_subquestions_if: "NodePort"
subquestions:
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: port
label: "container port"
schema:
type: int
default: 8787
editable: false
- variable: nodePort
label: "Node Port to expose for UI"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# Enable Host Networking
- variable: hostNetworking
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: media
label: "media dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "media"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/media"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: datasetName
label: "downloads Name"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: appIngress
label: ""
group: "Ingress"
schema:
type: dict
attrs:
- variable: webui
label: "Web Ingress Configuration"
group: "Ingress"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Ingress"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: paths
label: "paths"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "letsencrypt-prod"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "letsencrypt-prod"
description: "Letsencrypt Production Certificates"
- value: "letsencrypt-staging"
description: "Letsencrypt Test Certificates"
- value: "wildcard"
description: "Global Wildcard Certificate"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "existingcert"
description: "Existing Certificate"
show_subquestions_if: "existingcert"
subquestions:
- variable: existingcert
label: "Existing Certificate Name"
schema:
type: string
default: ""
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,51 @@
# Default values for Radarr.
image:
repository: hotio/readarr
pullPolicy: IfNotPresent
tag: nightly
strategy:
type: Recreate
service:
port:
port: 8787
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appIngressEnabled: false
appVolumesEnabled: false
appVolumeMounts:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false

Some files were not shown because too many files have changed in this diff Show More