Editor Version has been updated. Message

Hello,

I am getting the “Editor has been updated” Message which makes the editor useless.
I am using the Kubernetes Images and I do run them on arm64 based systems.

First thing I am not sure about is images, which images should be running together?
If I use the default ones in the helm Chart, which would be e.g. onlyoffice/documentserver-de-9.1.1-1
will give me this messages on the converter:

/var/www/onlyoffice/documentserver/server/FileConverter/converter: /lib64/libm.so.6: version `GLIBC_2.38' not found (required by /var/www/onlyoffice/documentserver/server/FileConverter/converter)
/var/www/onlyoffice/documentserver/server/FileConverter/converter: /lib64/libc.so.6: version `GLIBC_2.38' not found (required by /var/www/onlyoffice/documentserver/server/FileConverter/converter)

So I tried to switch to onlyoffice/documentserver, as you sate in your Docu.
And I get the the messages in my Nextcloud instance as well as in the example UI.

My values.yaml:

adminpanel:
  annotations: {}
  containerPorts:
    http: 9000
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 101
    runAsNonRoot: true
    runAsUser: 101
    seccompProfile:
      type: RuntimeDefault
  customPodAntiAffinity: {}
  enabled: false
  extraEnvVars: []
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: []
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/docs-adminpanel
    tag: 9.1.0-1
  initContainers: []
  lifecycleHooks: {}
  nodeAffinity: {}
  nodeSelector: {}
  podAffinity: {}
  podAnnotations:
    rollme: '{{ randAlphaNum 5 | quote }}'
  resources:
    limits: {}
    requests: {}
  terminationGracePeriodSeconds: 30
  tolerations: []
  updateStrategy:
    type: RollingUpdate
clearCache:
  existingConfigmap:
    keyName: clearCache.sh
    name: ""
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
commonAnnotations: {}
commonLabels: {}
commonNameSuffix: ""
connections:
  #amqpExistingSecret: rabbitmq
  amqpHost: rabbitmq.rabbitmq.svc.basche-mail.de
  amqpPassword: "xxx"
  amqpPort: "5672"
  amqpProto: amqp
  #amqpSecretKeyName: rabbitmq-password
  amqpType: rabbitmq
  amqpUser: default_user_xx
  amqpVhost: /
  #dbExistingSecret: postgresql
  dbHost: acid-postgres-cluster.postgres.svc.basche-mail.de
  dbName: oo_docs
  dbPassword: "xx"
  dbPort: "5432"
  #dbSecretKeyName: onlyoffice-postgres
  dbType: postgres
  dbUser: onlyoffice
  redisClusterNodes: []
  redisConnectorName: redis
  redisDBNum: "8"
  #redisExistingSecret: redis
  redisHost: dragonfly-ha.dragonfly.svc.basche-mail.de
  redisNoPass: true
  #redisPassword: ""
  redisPort: "6379"
  #redisSecretKeyName: redis-password
  #redisSentinelExistingSecret: ""
  #redisSentinelGroupName: mymaster
  #redisSentinelNoPass: true
  #redisSentinelNodes: []
  #redisSentinelPassword: ""
  #redisSentinelSecretKeyName: sentinel-password
  #redisUser: default
converter:
  annotations: {}
  autoscaling:
    annotations: {}
    behavior: {}
    customMetricsType: []
    enabled: false
    maxReplicas: 16
    minReplicas: 2
    targetCPU:
      enabled: true
      utilizationPercentage: 70
    targetMemory:
      enabled: false
      utilizationPercentage: 70
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 101
    runAsNonRoot: true
    runAsUser: 101
    seccompProfile:
      type: RuntimeDefault
  customPodAntiAffinity: {}
  extraEnvVars: []
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: []
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/docs-converter
    tag: 9.1.0-1
    #tag: "8.3.3-1"
  initContainers: []
  lifecycleHooks: {}
  nodeAffinity: {}
  nodeSelector: {}
  podAffinity: {}
  podAnnotations:
    rollme: '{{ randAlphaNum 5 | quote }}'
  replicas: 2
  resources:
    limits: {}
    requests: {}
  terminationGracePeriodSeconds: 30
  tolerations: []
  updateStrategy:
    type: Recreate
delete:
  existingConfigmap:
    dsStop: ""
    tblRemove:
      keyName: removetbl.sql
      name: remove-db-scripts
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
docservice:
  annotations: {}
  autoscaling:
    annotations: {}
    behavior: {}
    customMetricsType: []
    enabled: false
    maxReplicas: 4
    minReplicas: 2
    targetCPU:
      enabled: true
      utilizationPercentage: 70
    targetMemory:
      enabled: false
      utilizationPercentage: 70
  containerPorts:
    http: 8000
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 101
    runAsNonRoot: true
    runAsUser: 101
    seccompProfile:
      type: RuntimeDefault
  customPodAntiAffinity: {}
  extraEnvVars: []
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: []
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/documentserver
    tag: 9.1.0.1
    #tag: 8.3.3.1
  initContainers: []
  lifecycleHooks: {}
  livenessProbe:
    enabled: true
    failureThreshold: 3
    httpGet:
      path: /index.html
      port: 8000
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 3
  nodeAffinity: {}
  nodeSelector: {}
  podAffinity: {}
  podAnnotations:
    rollme: '{{ randAlphaNum 5 | quote }}'
  readinessProbe:
    enabled: true
    failureThreshold: 2
    httpGet:
      path: /index.html
      port: 8000
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 3
  replicas: 2
  resources:
    limits: {}
    requests: {}
  startupProbe:
    enabled: true
    failureThreshold: 30
    httpGet:
      path: /index.html
      port: 8000
    periodSeconds: 10
  terminationGracePeriodSeconds: 30
  tolerations: []
  updateStrategy:
    type: Recreate
example:
  annotations: {}
  containerPorts:
    http: 3000
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 1001
    runAsNonRoot: true
    runAsUser: 1001
    seccompProfile:
      type: RuntimeDefault
  customPodAntiAffinity: {}
  dsUrl: /
  enabled: true
  extraConf:
    configMap: ""
    filename: local.json
  extraEnvVars: []
  extraVolumeMounts: []
  extraVolumes: []
  hostAliases: []
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/docs-example
    tag: 9.1.0-1
    #tag: 8.3.3-1
  initContainers: []
  lifecycleHooks: {}
  nodeAffinity: {}
  nodeSelector: {}
  podAffinity: {}
  podAnnotations:
    rollme: '{{ randAlphaNum 5 | quote }}'
  resources:
    limits: {}
    requests: {}
  terminationGracePeriodSeconds: 30
  tolerations: []
  updateStrategy:
    type: RollingUpdate
extraConf:
  configMap: ""
  filename: local.json
extraThemes:
  configMap: ""
  filename: custom-themes.json
grafana:
  dashboard:
    enabled: false
  enabled: false
  ingress:
    annotations:
      nginx.ingress.kubernetes.io/proxy-body-size: 100m
    enabled: false
  namespace: ""
grafanaDashboard:
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
imagePullSecrets: ""
ingress:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 100m
    cert-manager.io/cluster-issuer: letsencrypt-prod
    traefik.ingress.kubernetes.io/router.middlewares: default-https-redirect@kubernetescrd,onlyoffice-header-origin@kubernetescrd
  controllerName: ingress-nginx
  enabled: true
  host: "oods.basche-mail.de"
  ingressClassName: traefik
  letsencrypt:
    clusterIssuerName: letsencrypt-prod
  path: /
  pathType: ImplementationSpecific
  ssl:
    enabled: true
    secret: oods-ingress-secret
  tenants: []
install:
  existingConfigmap:
    initdb: ""
    tblCreate:
      keyName: createdb.sql
      name: init-db-scripts
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
jwt:
  enabled: true
  existingSecret: ""
  header: AuthorizationJWT
  inBody: true
  inbox: {}
  outbox: {}
  secret: "eeCooTohxo8i"
license:
  existingClaim: "oods-data"
  existingSecret: ""
log:
  level: DEBUG
  pattern: '[%d] [%p] [%X{DOCID}] [%X{USERID}] %c - %.10000m'
  type: pattern
metrics:
  enabled: false
  host: statsd-exporter-prometheus-statsd-exporter
  port: "8125"
  prefix: ds.
namespaceOverride: ""
nodeSelector: {}
openshift:
  route:
    annotations: {}
    enabled: false
    host: ""
    path: /
    wildcardPolicy: None
persistence:
  annotations: {}
  existingClaim: ""
  runtimeConfig:
    annotations: {}
    enabled: true
    existingClaim: ""
    storageclass: cephfs-ssdec.class
    size: 1Gi
  size: 10Gi
  storageClass: cephfs-ssdec.class
  storageS3: false
podAntiAffinity:
  topologyKey: kubernetes.io/hostname
  type: soft
  weight: "100"
podSecurityContext:
  adminpanel:
    fsGroup: 101
  converter:
    fsGroup: 101
  docservice:
    fsGroup: 101
  enabled: false
  example:
    fsGroup: 1001
  jobs:
    fsGroup: 101
  tests:
    fsGroup: 101
privateCluster: false
product:
  name: onlyoffice
proxy:
  accessLog: "off"
  clientMaxBodySize: 100m
  containerPorts:
    http: 8888
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 101
    runAsNonRoot: true
    runAsUser: 101
    seccompProfile:
      type: RuntimeDefault
  extraEnvVars: []
  extraVolumeMounts: []
  gzipProxied: "off"
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/docs-proxy
    #tag: 9.1.0
    tag: "8.3.3-1"
  infoAllowedExistingSecret: ""
  infoAllowedIP: []
  infoAllowedPassword: ""
  infoAllowedSecretKeyName: info-auth-password
  infoAllowedUser: ""
  lifecycleHooks: {}
  livenessProbe:
    enabled: true
    failureThreshold: 3
    httpGet:
      path: /index.html
      port: 8888
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 3
  logFormat: []
  readinessProbe:
    enabled: true
    failureThreshold: 2
    httpGet:
      path: /index.html
      port: 8888
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 3
  resources:
    limits: {}
    requests: {}
  secureLinkExistingSecret: ""
  secureLinkSecret: ""
  startupProbe:
    enabled: true
    failureThreshold: 30
    httpGet:
      path: /index.html
      port: 8888
    periodSeconds: 10
  welcomePage:
    enabled: true
  workerConnections: "4096"
requestFilteringAgent:
  allowIPAddressList: []
  allowMetaIPAddress: false
  allowPrivateIPAddress: false
  denyIPAddressList: []
rollback:
  existingConfigmap:
    dsStop: ""
    tblCreate:
      keyName: createdb.sql
      name: init-db-scripts
    tblRemove:
      keyName: removetbl.sql
      name: remove-db-scripts
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
service:
  annotations: {}
  existing: ""
  port: 8888
  sessionAffinity: ""
  sessionAffinityConfig: {}
  type: ClusterIP
serviceAccount:
  annotations: {}
  automountServiceAccountToken: true
  create: false
  name: ""
sqlScripts:
  branchName: master
tests:
  annotations: {}
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL
    enabled: false
    runAsGroup: 101
    runAsNonRoot: true
    runAsUser: 101
    seccompProfile:
      type: RuntimeDefault
  customPodAntiAffinity: {}
  enabled: true
  image:
    pullPolicy: IfNotPresent
    repository: onlyoffice/docs-utils
    tag: 9.1.0-1
  initContainers: []
  nodeAffinity: {}
  nodeSelector: {}
  podAffinity: {}
  resources:
    limits: {}
    requests: {}
  tolerations: []
tolerations: []
upgrade:
  existingConfigmap:
    dsStop: ""
    tblCreate:
      keyName: createdb.sql
      name: init-db-scripts
    tblRemove:
      keyName: removetbl.sql
      name: remove-db-scripts
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
webProxy:
  enabled: false
  http: http://proxy.example.com
  https: https://proxy.example.com
  noProxy: localhost,127.0.0.1,docservice
wopi:
  enabled: true
  keys:
    generation: true
    newKeysExistingSecret: ""
    oldKeysExistingSecret: ""
wopiKeysDeletion:
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    enabled: true
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []
wopiKeysGeneration:
  job:
    annotations: {}
    containerSecurityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      enabled: false
      runAsGroup: 101
      runAsNonRoot: true
      runAsUser: 101
      seccompProfile:
        type: RuntimeDefault
    customPodAntiAffinity: {}
    image:
      pullPolicy: IfNotPresent
      repository: onlyoffice/docs-utils
      tag: 9.1.0-1
    initContainers: []
    nodeAffinity: {}
    nodeSelector: {}
    podAffinity: {}
    podAnnotations: {}
    resources:
      limits: {}
      requests: {}
    tolerations: []

Hello @xebix

onlyoffice/documentserver is an image for Docker installation, it cannot be used in cluster deployment. Specifically, for cluster there are images onlyoffice/docs, e.g. -converter, -docservice, etc. Can you point to the chart you are referring to?

Hey,
the helm Chart is from https://download.onlyoffice.com/charts/stable.

Ok, I did change the Documentserver Image to docs-docservice-8.3.3-1, and made shure that the converter is a equivalent version, so chose docs-converter-8.3.3-1.

Now the editor bin gets downloaded with http Just that single request is http instead of https.

Provided link does not contain any data. Are you sure that the link is correct?

These images are outdated, I recommend updating them at least. Also, if you have a commercial license for cluster deployment, please refer to:

In case any in-depth analysis is required, with a license you can contact my colleagues via HelpDesk.

Ok, how do I have to do it, or what do I have to use, if I would like to keep it without a license?

There are the images. Official chart is also available via the link from my previous message.

Ok, then please see the above library errors for docs-converter, they didn’t change with the last update (9.2).

And by the way, the helm Repo in the Doku you posted, is the same I refered to.

Glad to know it is now sorted out. As for the error: do you mean like the one on the screenshot? Check the logs of Document Server after reproducing the error.

What do you mean “its sorted out”. Nothing is sorted out.
I mean the Libruary error in the first post:

/var/www/onlyoffice/documentserver/server/FileConverter/converter: /lib64/libm.so.6: version `GLIBC_2.38' not found (required by /var/www/onlyoffice/documentserver/server/FileConverter/converter)
/var/www/onlyoffice/documentserver/server/FileConverter/converter: /lib64/libc.so.6: version `GLIBC_2.38' not found (required by /var/www/onlyoffice/documentserver/server/FileConverter/converter)

And please keep in mind, that I am using the arm64 flavour of the images.

I was referring to the usage of proper images, sorry for not being clear.

As for the issue: this is the issue with pkg that downloads prebuilt-binary nodejs (runtime), which miss-matches to the original binary. The fix was published to pkg here. With version 9.2.1 of images this situation will be corrected for ARM images.

Ok, thank you.
The 9.2.1 is working. I am using docs-* images of version 9.2.1-1 everywhere now.
That basicly is docs-converter-de, docs-docservice-de, docs-example and docs-proxy-de.

But unfortunately I am back to the Error from above where I get the message “Download failed” an in the Browser Tools I see that the Editor.bin has been tried to load via http instead of https, where literaly everything else is being loaded with. Please see the screenshot from above.

Did you enable HTTPS for Document Server? Or there is a proxy in front of Document Server?

What do you mean? I read the helm Chart and couldn’t find the setting.

There is the nginx container and Traefik in front.

Did you perform any steps to serve Document Server via HTTPS? Following section of the Kubernetes installation describes the process:

If you are serving SSL certificates to Document Server via external proxy, then the forwarding must be configured separately. Basically, the question is: is your Document Server accessible via HTTPS right now?

The onlyoffice service is reachable only via HTTPS, thats why the browser is blocking the http editor request in the first place. You can see that in the Screenshot I posted above.

But the HTTPS ends on the first Proxy, the Traefik. But as far as I understand the Documentation you posted thankfully, that is not being changed. In the Onlyoffice helm chart the SSL is also teminated on the front proxy.
I could use the Letsencrypt Certificate for this, but in 5.3.2.3 the SSL Secret is being created but I don’t see where it is being used for the Chart.

This is my Ingress section of the values.yaml for the helm Chart:

ingress:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 100m
    cert-manager.io/cluster-issuer: letsencrypt-prod
    traefik.ingress.kubernetes.io/router.middlewares: default-https-redirect@kubernetescrd,onlyoffice-header-origin@kubernetescrd
  controllerName: ingress-nginx
  enabled: true
  host: "oods.basche-mail.de"
  ingressClassName: traefik
  letsencrypt:
    clusterIssuerName: letsencrypt-prod
  path: /
  pathType: ImplementationSpecific
  ssl:
    enabled: true
    secret: oods-ingress-secret
  tenants: []

I think we will somehow get a configuration of the documentserver changed.
How I read the helm chart, that works via the documentserver configmap and the only think about https I can see is the webproxy section. I addes that to my values.yaml. But that didn’t change anythink via a helm upgrade. Maybe I have to reinstall for it to take efect.

Do you provide SSL certificates to Document Server via this proxy? If so, you can take a look at the proxy samples for various services and scenarios here:

If there is a separate config for Traefik, it is possible that it misses some forwarding rules, thus public access to Document Server goes via HTTPS, but internal requests are sent as HTTP.