I can not integrate Nextcloud with ONLYOFFICE

Issues during installation and related to database
Post Reply
rrt
Posts: 4
Joined: Mon Jun 01, 2020 4:57 pm

I can not integrate Nextcloud with ONLYOFFICE

Post by rrt » Mon Jun 01, 2020 7:46 pm

Hello all;

I have problems with the integration between a Nextcloud server (version 18.0.4.2) and an ONLYOFFICE server (onlyoffice-documentserver version 5.5.3-39)

Nextcloud server logs when trying to integrate with ONLYOFFICE read like this:

Code: Select all


Jun  1 15:02:08 gtmnb Nextcloud[32546]: {"reqId":"XtVQrhsHbf1aeSTuykTyGAAAAAc","level":3,"time":"2020-06-01T19:02:08+00:00","remoteAddr":"192.168.14.5","user":"administrador","app":"onlyoffice","method":"PUT","url":"/index.php/apps/onlyoffice/ajax/settings/address","message":"Request converted file on check error: Client error: `GET https://gtmoffice1.gtm.onat.gob.cu/cache/files/conv_check_989021050_docx/output.docx/check_989021050.docx?md5=uyRf9IJa7PFwRc7rRaqDvA&expires=1591039029&disposition=attachment&filename=check_989021050.docx` resulted in a `403 Forbidden` response:\n<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr> (truncated...)\n","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0","version":"18.0.4.2"}

The certificates used on both servers are self-signed.
This configuration was functional until the moment I updated ONLY OFFICE to its latest version (5.5.3-39)

In the onlyoffice configuration on the Nextcloud server I have the following:

Code: Select all


'onlyoffice' => 
  array (
    'verify_peer_off' => true,
    'jwt_header' => 'AuthorizationJwt'

From the occ command:

Code: Select all


{
    "apps": {
        "onlyoffice": {
            "DocumentServerInternalUrl": "https:\/\/gtmoffice1.gtm.onat.gob.cu\/",
            "DocumentServerUrl": "https:\/\/gtmoffice1.gtm.onat.gob.cu\/",
            "StorageUrl": "",
            "defFormats": "{\"doc\":true,\"docx\":true,\"odp\":true,\"ods\":true,\"odt\":true,\"ppsx\":true,\"ppt\":true,\"pptx\":true,\"xls\":true,\"xlsx\":true}",
            "demo": "{\"available\":false,\"enabled\":false,\"start\":{\"date\":\"2020-02-19 14:58:09.789020\",\"timezone_type\":3,\"timezone\":\"UTC\"}}",
            "editFormats": "{\"csv\":true,\"docx\":true,\"odp\":true,\"ods\":true,\"odt\":true,\"pptx\":true,\"rtf\":true,\"txt\":true,\"xlsx\":true}",
            "enabled": "yes",
            "groups": "[]",
            "installed_version": "4.1.4",
            "jwt_secret": "onlyoffice",
            "sameTab": "true",
            "settings_error": "Client error: `GET https:\/\/gtmoffice1.gtm.onat.gob.cu\/cache\/files\/conv_check_846504218_docx\/output.docx\/check_846504218.docx?md5=5SdnWi_b--CJ8aCUxPjCmA&expires=1591036600&disposition=attachment&filename=check_846504218.docx` resulted in a `403 Forbidden` response:\n<html>\r\n<head><title>403 Forbidden<\/title><\/head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden<\/h1><\/center>\r\n<hr> (truncated...)\n",
            "skey": "1547652475375",
            "types": "filesystem"
        }
    }
}

On the ONLYOFFICE server, /etc/onlyoffice/documentserver/local.json is as follows:

Code: Select all


{
  "services": {
    "CoAuthoring": {
      "sql": {
        "dbHost": "localhost",
        "dbName": "onlyoffice",
        "dbUser": "onlyoffice",
        "dbPass": "onlyoffice",
        "type": "postgres",
        "dbPort": "5432"
      },
      "redis": {
        "host": "localhost"
      },
      "token": {
        "enable": {
          "request": {
            "inbox": true,
            "outbox": true
          },
          "browser": true
        },
        "inbox": {
          "header": "AuthorizationJwt"
        },
        "outbox": {
          "header": "AuthorizationJwt"
        }
      },
      "secret": {
        "inbox": {
          "string": "onlyoffice"
        },
        "outbox": {
          "string": "onlyoffice"
        },
        "session": {
          "string": "onlyoffice"
        }
      }
    }
  },
  "rabbitmq": {
    "url": "amqp://guest:guest@localhost"
  }
}

/etc/onlyoffice/documentserver/default.json look like this:

Code: Select all

{
        "statsd": {
                "useMetrics": false,
                "host": "localhost",
                "port": "8125",
                "prefix": "ds."
        },
        "log": {
                "filePath": "",
                "options": {
                        "replaceConsole": true
                }
        },
        "queue": {
                "type": "rabbitmq",
                "visibilityTimeout": 300,
                "retentionPeriod": 900
        },
        "storage": {
                "name": "storage-fs",
                "fs": {
                        "folderPath": "",
                        "urlExpires": 900,
                        "secretString": "onlyoffice"
                },
                "region": "",
                "endpoint": "http://localhost/s3",
                "bucketName": "cache",
                "storageFolderName": "files",
                "urlExpires": 604800,
                "accessKeyId": "AKID",
                "secretAccessKey": "SECRET",
                "useRequestToGetUrl": false,
                "useSignedUrl": false,
                "sslEnabled": false,
                "s3ForcePathStyle": true,
                "externalHost": ""
        },
        "rabbitmq": {
                "url": "amqp://guest:guest@localhost:5672",
                "socketOptions": {},
                "exchangepubsub": "ds.pubsub",
                "queueconverttask": "ds.converttask",
                "queueconvertresponse": "ds.convertresponse",
                "exchangeconvertdead": "ds.exchangeconvertdead",
                "queueconvertdead": "ds.convertdead",
                "queuedelayed": "ds.delayed"
        },
        "activemq": {
                "connectOptions": {
                        "port": 5672,
                        "host": "localhost",
                        "name": "admin",
                        "reconnect": false
                },
                "queueconverttask": "ds.converttask",
                "queueconvertresponse": "ds.convertresponse",
                "queueconvertdead": "ActiveMQ.DLQ",
                "queuedelayed": "ds.delayed",
                "topicpubsub": "ds.pubsub"
        },
        "dnscache": {
                "enable" : true,
                "ttl" : 300,
                "cachesize" : 1000
        },
        "services": {
                "CoAuthoring": {
                        "server": {
                                "port": 8000,
                                "workerpercpu": 1,
                                "mode": "development",
                                "limits_tempfile_upload": 104857600,
                                "limits_image_size": 26214400,
                                "limits_image_download_timeout": {
                                        "connectionAndInactivity": "10s",
                                        "wholeCycle": "2m"
                                },
                                "callbackRequestTimeout": {
                                        "wholeCycle": "2m"
                                },
                                "healthcheckfilepath": "../public/healthcheck.docx",
                                "savetimeoutdelay": 5000,
                                "edit_singleton": false,
                                "forgottenfiles": "forgotten",
                                "forgottenfilesname": "output",
                                "maxRequestChanges": 20000,
                                "openProtectedFile": true,
                                "editorDataStorage": "editorDataMemory"
                        },
                        "requestDefaults": {
                                "headers": {
                                        "User-Agent": "Node.js/6.13"
                                },
                                "rejectUnauthorized": false
                        },
                        "autoAssembly": {
                                "enable": false,
                                "interval": "5m",
                                "step": "1m"
                        },
                        "utils": {
                                "utils_common_fontdir": "null",
                                "utils_fonts_search_patterns": "*.ttf;*.ttc;*.otf",
                                "resource_expires": 31536000,
                                "limits_image_types_upload": "jpg;png;gif;bmp"
                        },
                        "sql": {
                                "type": "postgres",
                                "tableChanges": "doc_changes",
                                "tableResult": "task_result",
                                "dbHost": "localhost",
                                "dbPort": 5432,
                                "dbName": "onlyoffice",
                                "dbUser": "onlyoffice",
                                "dbPass": "onlyoffice",
                                "charset": "utf8",
                                "connectionlimit": 10,
                                "max_allowed_packet": 1048575,
                                "pgPoolExtraOptions": {}
                        },
                        "redis": {
                                "name": "redis",
                                "prefix": "ds:",
                                "host": "localhost",
                                "port": 6379,
                                "options": {}
                        },
                        "pubsub": {
                                "maxChanges": 1000
                        },
                        "expire": {
                                "saveLock": 60,
                                "presence": 300,
                                "locks": 604800,
                                "changeindex": 86400,
                                "lockDoc": 30,
                                "message": 86400,
                                "lastsave": 604800,
                                "forcesave": 604800,
                                "saved": 3600,
                                "documentsCron": "0 */2 * * * *",
                                "files": 86400,
                                "filesCron": "00 00 */1 * * *",
                                "filesremovedatonce": 100,
                                "sessionidle": "0",
                                "sessionabsolute": "30d",
                                "sessionclosecommand": "2m",
                                "pemStdTTL": "1h",
                                "pemCheckPeriod": "10m",
                                "updateVersionStatus": "5m"
                        },
                        "ipfilter": {
                                "rules": [{"address": "*", "allowed": true}],
                                "useforrequest": false,
                                "errorcode": 403
                        },
                        "secret": {
                                "browser": {"string": "secret", "file": "", "tenants": {}},
                                "inbox": {"string": "secret", "file": "", "tenants": {}},
                                "outbox": {"string": "secret", "file": ""},
                                "session": {"string": "secret", "file": ""}
                        },
                        "token": {
                                "enable": {
                                        "browser": false,
                                        "request": {
                                                "inbox": false,
                                                "outbox": false
                                        }
                                },
                                "browser": {
                                        "secretFromInbox": true
                                },
                                "inbox": {
                                        "header": "Authorization",
                                        "prefix": "Bearer ",
                                        "inBody": false
                                },
                                "outbox": {
                                        "header": "Authorization",
                                        "prefix": "Bearer ",
                                        "algorithm": "HS256",
                                        "expires": "5m",
                                        "inBody": false
                                },
                                "session": {
                                        "algorithm": "HS256",
                                        "expires": "30d"
                                }
                        },
                        "plugins": {
                                "uri": "/sdkjs-plugins",
                                "autostart": []
                        },
                        "editor":{
                                "spellcheckerUrl": "/spellchecker",
                                "reconnection":{
                                        "attempts": 50,
                                        "delay": "2s"
                                },
                                "websocketMaxPayloadSize": "1.5MB"
                        },
                        "sockjs": {
                                "sockjs_url": "",
                                "websocket": true
                        },
                        "callbackBackoffOptions": {
                                "retries": 0,
                                "timeout":{
                                        "factor": 2,
                                        "minTimeout": 1000,
                                        "maxTimeout": 2147483647,
                                        "randomize": false
                                },
                                "httpStatus": "429,500-599"
                        }
                }
        },
        "license" : {
                "license_file": "",
                "warning_limit_percents": 70,
                "packageType": 0
        },
        "FileConverter": {
                "converter": {
                        "maxDownloadBytes": 104857600,
                        "downloadTimeout": {
                                "connectionAndInactivity": "10s",
                                "wholeCycle": "2m"
                        },
                        "downloadAttemptMaxCount": 3,
                        "downloadAttemptDelay": 1000,
                        "maxprocesscount": 1,
                        "fontDir": "null",
                        "presentationThemesDir": "null",
                        "x2tPath": "null",
                        "docbuilderPath": "null",
                        "docbuilderAllFontsPath": "null",
                        "args": "",
                        "spawnOptions": {},
                        "errorfiles": "",
                        "streamWriterBufferSize": 8388608,
                        "maxRedeliveredCount": 2,
                        "inputLimits": [
                                {
                                "type": "docx;dotx;docm;dotm",
                                "zip": {
                                        "uncompressed": "50MB",
                                        "template": "*.xml"
                                }
                                },
                                {
                                "type": "xlsx;xltx;xlsm;xltm",
                                "zip": {
                                        "uncompressed": "300MB",
                                        "template": "*.xml"
                                }
                                },
                                {
                                "type": "pptx;ppsx;potx;pptm;ppsm;potm",
                                "zip": {
                                        "uncompressed": "50MB",
                                        "template": "*.xml"
                                }
                                }
                        ]
                }
        },
        "FileStorage": {
                "host": "",
                "port": 4567,
                "directory": "",
                "silent": true
        },
        "SpellChecker": {
                "server": {
                        "port": 8080,
                        "mode": "development"
                }
        }
}

The services on the ONLYOFFICE server are working:

Code: Select all


# supervisorctl status
ds:converter                     RUNNING   pid 24672, uptime 2:30:21
ds:docservice                    RUNNING   pid 24671, uptime 2:30:21
ds:metrics                       RUNNING   pid 24669, uptime 2:30:21
ds:spellchecker                  RUNNING   pid 24670, uptime 2:30:21

Communication from the ONLYOFFICE server to the Nextcloud server:

Code: Select all


# wget --no-check-certificate https://nubes.gtm.onat.gob.cu:10443/
--2020-06-01 14:57:52--  https://nubes.gtm.onat.gob.cu:10443/
Resolving nubes.gtm.onat.gob.cu (nubes.gtm.onat.gob.cu)... 192.168.14.11
Connecting to nubes.gtm.onat.gob.cu (nubes.gtm.onat.gob.cu)|192.168.14.11|:10443... connected.
WARNING: cannot verify nubes.gtm.onat.gob.cu's certificate, issued by 'emailAddress=root@gtm.onat.gob.cu,CN=nubes.gtm.onat.gob.cu,OU=ONAT Guantanamo,O=ONAT,L=Guantanamo,ST=Guantanamo,C=CU':
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 156 [text/html]
Saving to: 'index.html'

index.html                                                  100%[========================================================================================================================================>]     156  --.-KB/s    in 0s      

2020-06-01 14:57:52 (7.21 MB/s) - 'index.html' saved [156/156]


Communication from the Nextcloud server to the ONLY OFFICE server:

Code: Select all


# wget --no-check-certificate https://gtmoffice1.gtm.onat.gob.cu/
--2020-06-01 15:00:13--  https://gtmoffice1.gtm.onat.gob.cu/
Resolviendo proxy.gtm.onat.gob.cu (proxy.gtm.onat.gob.cu)... 192.168.14.5
Conectando con proxy.gtm.onat.gob.cu (proxy.gtm.onat.gob.cu)[192.168.14.5]:3128... conectado.
AVISO: no se puede verificar el certificado de gtmoffice1.gtm.onat.gob.cu, emitido por “/C=CU/ST=Guantanamo/L=Guantanamo/O=ONAT/OU=ONAT Guantanamo/CN=gtmoffice1.gtm.onat.gob.cu/emailAddress=root@gtm.onat.gob.cu”:
  Certificado auto-firmado encontrado.
Petición Proxy enviada, esperando respuesta... 302 Moved Temporarily
Localización: https://gtmoffice1.gtm.onat.gob.cu/welcome/ [siguiendo]
--2020-06-01 15:00:13--  https://gtmoffice1.gtm.onat.gob.cu/welcome/
Conectando con proxy.gtm.onat.gob.cu (proxy.gtm.onat.gob.cu)[192.168.14.5]:3128... conectado.
AVISO: no se puede verificar el certificado de gtmoffice1.gtm.onat.gob.cu, emitido por “/C=CU/ST=Guantanamo/L=Guantanamo/O=ONAT/OU=ONAT Guantanamo/CN=gtmoffice1.gtm.onat.gob.cu/emailAddress=root@gtm.onat.gob.cu”:
  Certificado auto-firmado encontrado.
Petición Proxy enviada, esperando respuesta... 200 OK
Longitud: 4592 (4,5K) [text/html]
Grabando a: “index.html”

100%[===================================================================================================================================================================================================>] 4.592       --.-K/s   en 0s      

2020-06-01 15:00:13 (318 MB/s) - “index.html” guardado [4592/4592]

What could be happening? Any way to solve this situation?

If other data is needed to find a solution I can give it.

Grateful for the attention.

Carl
Posts: 378
Joined: Thu Apr 12, 2018 10:00 am

Re: I can not integrate Nextcloud with ONLYOFFICE

Post by Carl » Thu Jun 04, 2020 4:46 pm

Hello rrt,

Could you please specify the following?

1. What is the error message you get when saving the connector settings?
2. Is the app Community Document Server enabled in your Nextcloud?
3. Try to disable JWT in both Document Server and Nextcloud and check if the issue persists.
4. Reproduce the issue and send me the Document Server log file converter/out.log.

rrt
Posts: 4
Joined: Mon Jun 01, 2020 4:57 pm

Re: I can not integrate Nextcloud with ONLYOFFICE

Post by rrt » Tue Jun 09, 2020 3:23 pm

Hello Carl;
thanks for answer me and sorry for the delay.

1. What is the error message you get when saving the connector settings?

In Nextcloud the error shown is (from /var/log/messages):

Jun 9 10:53:04 gtmnb Nextcloud[824]: {"reqId":"Xt@iTrPgY8RlCS5JVtPswAAAAAA","level":3,"time":"2020-06-09T14:53:04+00:00","remoteAddr":"192.168.14.5","user":"administrador","app":"onlyoffice","method":"PUT","url":"/index.php/apps/onlyoffice/ajax/settings/address","message":"Request converted file on check error: Client error: `GET https://gtmoffice1.gtm.onat.gob.cu/cach ... 04990.docx` resulted in a `403 Forbidden` response:\n<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr> (truncated...)\n","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0","version":"18.0.4.2"}

2. Is the app Community Document Server enabled in your Nextcloud?

The app yes, is Enable.

[root@gtmnb nextcloud]# sudo -u apache php occ app:list | grep onlyoffice
- onlyoffice: 4.1.4

3. Try to disable JWT in both Document Server and Nextcloud and check if the issue persists.

I deleted the part with jwt in config.php in Nextcloud
'onlyoffice' =>
array (
'verify_peer_off' => true,
'jwt_header' => 'AuthorizationJwt' <------ I erased this
),

and in ONLYOFFICE erase the AuthorizationJwt in /etc/onlyoffice/documentserver/local.json

},
"inbox": {
"header": "" <----- erased AuthorizationJwt from here
},
"outbox": {
"header": "" <----- erased AuthorizationJwt from here
}
},

I run supervisorctl restart all and everything is working:

# supervisorctl restart all
ds:spellchecker: stopped
ds:metrics: stopped
ds:docservice: stopped
ds:converter: stopped
ds:metrics: started
ds:spellchecker: started
ds:docservice: started
ds:converter: started

# supervisorctl status all
ds:converter RUNNING pid 2385, uptime 0:00:06
ds:docservice RUNNING pid 2384, uptime 0:00:06
ds:metrics RUNNING pid 2382, uptime 0:00:06
ds:spellchecker RUNNING pid 2383, uptime 0:00:06

and from Nextcloud, whe try to conect to ONLYOFFICE the error change, now is:

Jun 9 11:17:21 gtmnb Nextcloud[20562]: {"reqId":"Xt@oAVbgFcmMSElMb4QiAwAAAAY","level":3,"time":"2020-06-09T15:17:21+00:00","remoteAddr":"192.168.14.5","user":"administrador","app":"onlyoffice","method":"PUT","url":"/index.php/apps/onlyoffice/ajax/settings/address","message":"CommandRequest on check error: Se ha producido un error en el servicio de documentos: Internal server error","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0","version":"18.0.4.2"}


4. Reproduce the issue and send me the Document Server log file converter/out.log.

This is the only in /var/log/onlyoffice/documentserver/converter/out.log

# cat /var/log/onlyoffice/documentserver/converter/out.log
[2020-06-09T06:57:04.406] [WARN] nodeJS - update cluster with 1 workers
[2020-06-09T06:57:04.424] [WARN] nodeJS - worker 30767 started.
[2020-06-09T06:57:04.426] [WARN] nodeJS - update cluster with 1 workers
[2020-06-09T11:05:42.144] [WARN] nodeJS - update cluster with 1 workers
[2020-06-09T11:05:42.173] [WARN] nodeJS - worker 2209 started.
[2020-06-09T11:05:42.174] [WARN] nodeJS - update cluster with 1 workers
[2020-06-09T11:15:53.655] [WARN] nodeJS - update cluster with 1 workers
[2020-06-09T11:15:53.676] [WARN] nodeJS - worker 2421 started.
[2020-06-09T11:15:53.678] [WARN] nodeJS - update cluster with 1 workers

Carl
Posts: 378
Joined: Thu Apr 12, 2018 10:00 am

Re: I can not integrate Nextcloud with ONLYOFFICE

Post by Carl » Thu Jun 11, 2020 1:09 pm

Hello,

Please disable the Community Document Server application and after that try to save the connector settings.

As you have a dedicated Document Server, it would be better to disable the Community Document Server app because it might interfere with the connector functioning. You can see it in the logs now: there is no error entry in the converter logs which indicates that the request did not even arrive to the Document Server.

rrt
Posts: 4
Joined: Mon Jun 01, 2020 4:57 pm

Re: I can not integrate Nextcloud with ONLYOFFICE

Post by rrt » Thu Jun 11, 2020 1:53 pm

Carl wrote:
Thu Jun 11, 2020 1:09 pm
Hello,

Please disable the Community Document Server application and after that try to save the connector settings.

As you have a dedicated Document Server, it would be better to disable the Community Document Server app because it might interfere with the connector functioning. You can see it in the logs now: there is no error entry in the converter logs which indicates that the request did not even arrive to the Document Server.
But, I do not use the Community Document Server app (even I have never download these), I just use the .deb using these:

# cat /etc/apt/sources.list
# Source list mio

deb http://download.onlyoffice.com/repo/debian squeeze main


Here the result of command aptitude show:

# aptitude show onlyoffice-documentserver
Package: onlyoffice-documentserver
Version: 5.5.3-39
New: yes
State: installed
Automatically installed: no
Priority: optional
Section: web
Maintainer: Ascensio System SIA <support@onlyoffice.com>
Architecture: amd64
Uncompressed Size: 1006 M
Depends: debconf (>= 0.5) | debconf-2.0, adduser, ca-certificates, coreutils, curl, libasound2, libcairo2, libcurl3 | libcurl4, libcurl3-gnutls, libgconf-2-4, libgtk-3-0, libstdc++6 (>= 4.8.4), libxml2, libxss1, libxtst6, logrotate,
mysql-client | mariadb-client, nginx-extras (>= 1.3.13), postgresql-client (>= 9.1), pwgen, redis-tools, supervisor (>= 3.0b2), xvfb, zlib1g
Description: online viewers and editors for text, spreadsheet and presentation files.
Compatible with most office file formats including Office Open XML formats:

rrt
Posts: 4
Joined: Mon Jun 01, 2020 4:57 pm

Re: I can not integrate Nextcloud with ONLYOFFICE

Post by rrt » Thu Jun 11, 2020 1:59 pm

Carl wrote:
Thu Jun 11, 2020 1:09 pm
Hello,

Please disable the Community Document Server application and after that try to save the connector settings.

As you have a dedicated Document Server, it would be better to disable the Community Document Server app because it might interfere with the connector functioning. You can see it in the logs now: there is no error entry in the converter logs which indicates that the request did not even arrive to the Document Server.
Hello again Carl;

here the list of my app installed on Nextcloud; ther is just the onlyoffice, that is the conector to ONLYOFFICE:

# sudo -u apache php occ app:list
Enabled:
- accessibility: 1.4.0
- activity: 2.11.0
- admin_audit: 1.8.0
- calendar: 2.0.3
- cloud_federation_api: 1.1.0
- comments: 1.8.0
- customproperties: 1.0.0
- dav: 1.14.0
- dropit: 0.4.0
- extract: 1.2.4
- federatedfilesharing: 1.8.0
- federation: 1.8.0
- files: 1.13.1
- files_external: 1.9.0
- files_pdfviewer: 1.7.0
- files_rightclick: 0.15.2
- files_sharing: 1.10.1
- files_trashbin: 1.8.0
- files_versions: 1.11.0
- files_videoplayer: 1.7.0
- firstrunwizard: 2.7.0
- keeweb: 0.6.2
- logreader: 2.3.0
- lookup_server_connector: 1.6.0
- metadata: 0.11.1
- nextcloud_announcements: 1.7.0
- notifications: 2.6.0
- oauth2: 1.6.0
- onlyoffice: 4.1.4
- password_policy: 1.8.0
- photos: 1.0.0
- privacy: 1.2.0
- provisioning_api: 1.8.0
- rainloop: 6.1.4
- recommendations: 0.6.0
- serverinfo: 1.8.0
- settings: 1.0.0
- sharebymail: 1.8.0
- spreed: 8.0.9
- support: 1.1.0
- survey_client: 1.6.0
- systemtags: 1.8.0
- text: 2.0.0
- theming: 1.9.0
- twofactor_backupcodes: 1.7.0
- updatenotification: 1.8.0
- user_ldap: 1.8.0
- viewer: 1.2.0
- workflowengine: 2.0.0
Disabled:
- encryption

Post Reply