A Nextcloud-to-Paperless upload stopped working in a home test environment.

The first error was clear:

cURL error 60: SSL certificate problem: certificate has expired

The Paperless certificate had indeed expired.

The first fix

The Nextcloud Paperless integration sends uploads from:

custom_apps/integration_paperless/lib/Service/ApiService.php

or, depending on the installation:

apps/integration_paperless/lib/Service/ApiService.php

In the POST request to:

/api/documents/post_document/

this option was added:

'verify' => false,

Example:

$this->client->post(
    $this->config->url . '/api/documents/post_document/',
    [
        'verify' => false,
        'headers' => $this->getAuthorizationHeaders(),
        'multipart' => [

After restarting the Nextcloud/PHP runtime, uploads worked again.

This was a deliberate test-environment workaround, not a proper TLS fix. verify => false disables certificate verification for that request and should not be used as a normal production solution.

This failure was at a different certificate layer from a Windows service failure where private-key access mattered to recovery. Here, the client rejected the remote server certificate before the upload request could proceed.

Then the next failure appeared

An ODT file now reached Paperless successfully, but document conversion failed with:

503 Service Unavailable

from:

http://gotenberg:3000/forms/libreoffice/convert

The Gotenberg log showed:

LibreOffice listener socket not available:
context deadline exceeded

with a request duration of almost exactly:

10.003s

LibreOffice itself was present:

/usr/bin/libreoffice
LibreOffice 7.0.4.2

So the problem was not a missing LibreOffice installation. Gotenberg simply did not get its LibreOffice listener ready within the available ten-second window.

The next step was therefore to increase the startup timeout, for example:

command:
  - "gotenberg"
  - "--uno-listener-start-timeout=60s"
  - "--api-timeout=120s"

and recreate the container:

docker compose up -d --force-recreate gotenberg

The surviving notes do not record whether that final change was verified successfully.

The lesson

A different error can be progress.

The first failure stopped the request at TLS validation.

After that was bypassed, the document progressed through Nextcloud and Paperless until it hit a completely different failure in Gotenberg.

So do not ask only:

Did the original error disappear?

Ask:

How far did the request get this time?

That is often the more useful answer.