Commit b2dec75f authored by sonicaj's avatar sonicaj

Update stable train from test train

parent 85bc4ca8
# 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
\ No newline at end of file
apiVersion: v1
appVersion: 6.4.10.10
dependencies:
- name: common
repository: file://../../../library/common/2105.0.0
version: 2105.0.0
description: "Collabora Online Development Edition \u2013 an awesome, Online Office \ suite image suitable for home use."
home: https://github.com/CollaboraOnline/online
icon: https://avatars.githubusercontent.com/u/22418908?s=200&v=4
keywords:
- office
- documents
- productivity
name: collabora
sources:
- https://github.com/CollaboraOnline/online.git
- https://hub.docker.com/r/collabora/code
version: 1.0.0
Collabora Online Development Edition
=====
Collabora Online Development Edition - An awesome, Online Office suite image suitable for home use!
Introduction
------------
This chart bootstraps Collabora deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
Collabora Online Development Edition
=====
An awesome, Online Office suite image suitable for home use.
With the Collabora Online Development Edition (CODE) Docker Image you can host
your own online Office Suite at home! This Docker image is aimed at home users
and contains the latest and greatest developments. Simply integrate it in your
preferred File Sync and Share (FSS), to easily get your own online Office
Suite up and running!
image:
pullPolicy: IfNotPresent
repository: collabora/code
tag: 6.4.10.10
nginx:
image:
pullPolicy: IfNotPresent
repository: nginx
tag: 1.21.3
updateStrategy: Recreate
groups:
- name: "Collabora Configuration"
description: "Configure Collabora"
- name: "Collabora Environment Variables"
description: "Set the environment that will be visible to the container"
- name: "Networking"
description: "Configure Networking for Collabora"
- name: "Storage"
description: "Configure Storage for Collabora"
portals:
web_portal:
protocols:
- "https"
host:
- "$variable-config.server_name"
ports:
- "$variable-nodePort"
path: "/loleaflet/dist/admin/admin.html"
questions:
- variable: config
label: "Container Configuration"
group: "Collabora Configuration"
schema:
type: dict
attrs:
- variable: timezone
label: "Timezone"
group: "Collabora Configuration"
schema:
type: string
$ref:
- "definitions/timezone"
- variable: username
label: "Username for WebUI"
schema:
type: string
default: "admin"
required: true
- variable: password
label: "Password for WebUI"
schema:
type: string
private: true
default: "changeme"
valid_chars: "[a-zA-Z0-9!@#$%^&*?]{8,}"
required: true
- variable: dictionaries
label: "Dictionaries to use, leave empty to use all"
schema:
type: string
default: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru"
- variable: extra_params
label: "Extra Parameters to add"
description: 'e.g. "--o:welcome.enable=false", See more on /etc/loolwsd/loowsd.xml. Separate params with space'
schema:
type: string
default: "--o:welcome.enable=false --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false --o:net.proto=IPv4 --o:net.post_allow.host[0]=.+ --o:storage.wopi.host[0]=.+"
- variable: server_name
label: "Server Name"
description: "When this environment variable is set (is not “”), then its value will be used as server name in /etc/loolwsd/loolwsd.xml. Without this, CODE is not delivering a correct host for the websocket connection in case of a proxy in front of it."
schema:
type: string
$ref:
- "definitions/nodeIP"
- variable: certificate
description: "Collabora Certificate"
label: "Certificate"
group: "Collabora Configuration"
schema:
type: int
$ref:
- "definitions/certificate"
"null": false
- variable: extraAppVolumeMounts
label: "Collabora Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Collabora Host Path Volume"
description: "Add an extra host path volume for Collabora application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: environmentVariables
label: "Environment Variables"
group: "Collabora Environment Variables"
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: nodePort
label: "Node Port to use for Collabora"
group: "Networking"
schema:
type: int
default: 9980
min: 9000
max: 65535
dependencies:
- name: common
repository: file://../../../library/common/2105.0.0
version: 2105.0.0
digest: sha256:11522ab36487826700d7ad0f86f713a4bb5d35248014bcef690fe94acbc09ef6
generated: "2021-05-17T18:26:46.201544+05:00"
{{/*
Retrieve secret name for secure credentials
*/}}
{{- define "secretName" -}}
{{- print "credentials" -}}
{{- end -}}
{{/*
Retrieve true/false if certificate is configured
*/}}
{{- define "certAvailable" -}}
{{- if .Values.certificate -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate) -}}
{{- template "common.resources.cert_present" $values -}}
{{- else -}}
{{- false -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve public key of certificate
*/}}
{{- define "cert.publicKey" -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate "publicKey" true) -}}
{{ include "common.resources.cert" $values }}
{{- end -}}
{{/*
Retrieve private key of certificate
*/}}
{{- define "cert.privateKey" -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate) -}}
{{ include "common.resources.cert" $values }}
{{- end -}}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels" . | nindent 4 }}
spec:
strategy:
type: {{ .Values.updateStrategy }}
selector:
matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }}
template:
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}-nginx
image: {{ printf "%s:%s" .Values.nginx.image.repository .Values.nginx.image.tag }}
imagePullPolicy: {{ .Values.nginx.image.pullPolicy }}
volumeMounts:
- name: configuration
mountPath: /etc/nginx/nginx.conf
readOnly: true
subPath: config
- name: certs
mountPath: /etc/nginx/server.crt
subPath: certPublicKey
- name: certs
mountPath: /etc/nginx/server.key
subPath: certPrivateKey
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
- name: {{ .Chart.Name }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
{{ if .Values.extraAppVolumeMounts }}
volumeMounts:
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
{{ end }}
ports:
- name: collabora
protocol: TCP
containerPort: 9980
{{ $envList := (default list .Values.environmentVariables) }}
{{ $secretName := (include "secretName" .) }}
{{ $envConfig := .Values.config }}
{{ $envList = mustAppend $envList (dict "name" "timezone" "value" $envConfig.timezone) }}
{{ $envList = mustAppend $envList (dict "name" "domain" "value" $envConfig.domain) }}
{{ $envList = mustAppend $envList (dict "name" "dictionaries" "value" $envConfig.dictionaries) }}
{{ $envList = mustAppend $envList (dict "name" "extra_params" "value" $envConfig.extra_params) }}
{{ $envList = mustAppend $envList (dict "name" "DONT_GEN_SSL_CERT" "value" "true") }}
{{ $envList = mustAppend $envList (dict "name" "server_name" "value" (printf "%v:%v" $envConfig.server_name .Values.nodePort)) }}
{{ $envList = mustAppend $envList (dict "name" "username" "valueFromSecret" true "secretName" $secretName "secretKey" "username") }}
{{ $envList = mustAppend $envList (dict "name" "password" "valueFromSecret" true "secretName" $secretName "secretKey" "password") }}
{{ include "common.containers.allEnvironmentVariables" (dict "environmentVariables" $envList) | nindent 10 }}
volumes:
- name: configuration
configMap:
defaultMode: 0700
name: "nginx-config"
- name: certs
secret:
secretName: {{ include "secretName" . }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}
{{- $serviceName := "localhost" -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: "nginx-config"
annotations:
rollme: {{ randAlphaNum 5 | quote }}
data:
config: |-
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# Types to enable gzip compression on
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
sendfile on;
client_max_body_size 1000m;
keepalive_timeout 65;
# Disable tokens for security (#23684)
server_tokens off;
gzip on;
client_body_temp_path /var/tmp/firmware;
server {
server_name nginx;
listen 0.0.0.0:443 default_server ssl http2;
listen [::]:443 default_server ssl http2;
ssl_certificate "/etc/nginx/server.crt";
ssl_certificate_key "/etc/nginx/server.key";
ssl_session_timeout 120m;
ssl_session_cache shared:ssl:16m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EDH+aRSA:EECDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!SHA1:!SHA256:!SHA384;
add_header Strict-Transport-Security max-age=31536000;
location = /robots.txt {
add_header Content-Type text/plain;
proxy_set_header Referer "http://nginx";
return 200 "User-agent: *\nDisallow: /loleaflet/*\n";
}
# static files
location ^~ /loleaflet {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
# proxy_set_header Referer "http://nginx";
}
# WOPI discovery URL
location ^~ /hosting/discovery {
set $upstream_collabora {{ $serviceName }};
proxy_pass http://$upstream_collabora:9980;
proxy_set_header Host $http_host;
# proxy_set_header Referer "http://nginx";
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
# proxy_set_header Referer "http://nginx";
}
# main websocket
location ~ ^/lool/(.*)/ws$ {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# proxy_set_header Referer "http://nginx";
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/lool {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Referer "http://nginx";
}
# Admin Console websocket
location ^~ /lool/adminws {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# proxy_set_header Referer "http://nginx";
proxy_read_timeout 36000s;
}
}
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name nginx;
return 307 https://$host:{{ .Values.nodePort }}}$request_uri;
}
}
{{ $port := .Values.nodePort }}
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "https" "nodePort" $port "targetPort" 443 "port" 443) }}
{{ $params := (. | mustDeepCopy) }}
{{ $_ := set $params "commonService" (dict "ports" $ports "type" "NodePort" ) }}
{{ include "common.classes.service" $params }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "secretName" . }}
labels: {{ include "common.labels" . | nindent 4 }}
type: Opaque
data:
username: {{ .Values.config.username | b64enc | quote }}
password: {{ .Values.config.password | b64enc | quote }}
{{ if eq (include "certAvailable" .) "true" }}
certPublicKey: {{ (include "cert.publicKey" .) | toString | b64enc | quote }}
certPrivateKey: {{ (include "cert.privateKey" .) | toString | b64enc | quote }}
{{ else }}
{{ fail "No certificate configured for Collabora" }}
{{ end }}
This diff is collapsed.
categories:
- office
- documents
- productivity
icon_url: https://avatars.githubusercontent.com/u/22418908?s=200&v=4
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment