AppApi: Unable to update status

Nextcloud version (eg, 29.0.5): 29.0.1
Operating system and version (eg, Ubuntu 29.04): Docker

The issue you are facing:

I am unable to get AppApi working. I installed NextCloud using Docker, and want to use the same Docker Daemon to run the external apps. The Deploy Deamon is reachable and when installing the Test-Deployment, I see that a new container is spun up. However, the progress meter stays at 0/6. Rebooting Nextcloud makes it move to 3/6 and stay there.
It seems that the container can’t make any callbacks to the nextcloud instance, it receives a 401:

Started
INFO:     Started server process [1]
INFO:     Waiting for application startup.
TRACE:    ASGI [1] Started scope={'type': 'lifespan', 'asgi': {'version': '3.0', 'spec_version': '2.0'}, 'state': {}}
TRACE:    ASGI [1] Receive {'type': 'lifespan.startup'}
TRACE:    ASGI [1] Send {'type': 'lifespan.startup.complete'}
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:23000 (Press CTRL+C to quit)
TRACE:    172.18.0.11:42722 - HTTP connection made
TRACE:    172.18.0.11:42722 - ASGI [2] Started scope={'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.4'}, 'http_version': '1.1', 'server': ('172.18.0.12', 23000), 'client': ('172.18.0.11', 42722), 'scheme': 'http', 'root_path': '', 'headers': '<...>', 'state': {}, 'method': 'GET', 'path': '/heartbeat', 'raw_path': b'/heartbeat', 'query_string': b''}
TRACE:    172.18.0.11:42722 - ASGI [2] Send {'type': 'http.response.start', 'status': 200, 'headers': '<...>'}
Heartbeat was called
INFO:     172.18.0.11:42722 - "GET /heartbeat HTTP/1.1" 200 OK
TRACE:    172.18.0.11:42722 - ASGI [2] Send {'type': 'http.response.body', 'body': '<15 bytes>'}
TRACE:    172.18.0.11:42722 - ASGI [2] Completed
TRACE:    172.18.0.11:42722 - ASGI [3] Started scope={'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.4'}, 'http_version': '1.1', 'server': ('172.18.0.12', 23000), 'client': ('172.18.0.11', 42722), 'scheme': 'http', 'root_path': '', 'headers': '<...>', 'state': {}, 'method': 'POST', 'path': '/init', 'raw_path': b'/init', 'query_string': b''}
Init was called
TRACE:    172.18.0.11:42722 - ASGI [3] Send {'type': 'http.response.start', 'status': 200, 'headers': '<...>'}
INFO:     172.18.0.11:42722 - "POST /init HTTP/1.1" 200 OK
TRACE:    172.18.0.11:42722 - ASGI [3] Send {'type': 'http.response.body', 'body': '<2 bytes>'}
TRACE:    172.18.0.11:42722 - HTTP connection lost
Try default url to report the init status: http://nextcloud-app
[401] Unauthorized <request: PUT /ocs/v1.php/apps/app_api/apps/status/test-deploy>

ERROR occurred! Can't report the ExApp status to the Nextcloud instance.
TRACE:    172.18.0.11:42722 - ASGI [3] Completed

I use a custom docker network named “proxy” for nextcloud, postgres, traefik (as reverse proxy for SSL), and the docker-proxy. I configured the deploy daemon accordingly:

**Name:** docker_socket_proxy
**Protocol:** http
**Host:** nextcloud-appapi-dsp:2375
### Deploy config
**Docker network:** proxy
**Nextcloud URL:** http://nextcloud-app
**HaProxy password:** redacted
**GPUs support:** false
**Compute device:** CPU

For reference, this is my docker-compose configuration (slightly redacted):

  nextcloud-db:
    image: postgres:14
    container_name: nextcloud-db
    restart: unless-stopped
    volumes:
      <redacted>
    networks:
      - proxy
  nextcloud-app:
    image: nextcloud:apache
    container_name: nextcloud-app
    restart: unless-stopped
    depends_on:
      - nextcloud-db
      - traefik
      - nextcloud-appapi-dsp
    environment:
      - PHP_MEMORY_LIMIT=4G
      - PHP_UPLOAD_LIMIT=24G
    volumes:
      - <redacted>
    labels:
      - <redacted>
    networks:
      - proxy
  nextcloud-appapi-dsp:
    image: ghcr.io/cloud-py-api/nextcloud-appapi-dsp:release
    container_name: nextcloud-appapi-dsp
    restart: unless-stopped
    environment:
      NC_HAPROXY_PASSWORD: <redacted>
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    privileged: true
    networks:
      - proxy

my config.php (redacted):

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' => 
  array (
    0 => 
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 => 
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'redacted',
  'passwordsalt' => 'redacted',
  'trusted_proxies' => 
  array (
    0 => '172.0.0.0/24',
  ),
  'trusted_domains' => 
  array (
    0 => 'redacted',
    1 => 'nextcloud-app',
  ),
  'datadirectory' => '/var/www/data',
  'dbtype' => 'pgsql',
  'version' => '29.0.1.1',
  'dbname' => 'nextcloud',
  'dbhost' => 'nextcloud-db',
  'dbtableprefix' => 'nc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'redacted',
  'maintenance' => false,
  'maintenance_window_start' => 1,
  'installed' => true,
  'secret' => 'redacted',
  'mail_from_address' => 'redacted',
  'mail_smtpmode' => 'smtp',
  'mail_domain' => 'redacted',
  'mail_smtpauthtype' => 'PLAIN',
  'mail_smtphost' => 'redacted',
  'mail_smtpauth' => 1,
  'mail_smtpsecure' => 'tls',
  'loglevel' => 0,
  'trashbin_retention_obligation' => 'auto',
  'updatechecker' => false,
  'overwrite.cli.url' => 'redacted',
  'dbport' => '5432',
  'mail_smtpname' => 'redacted',
  'mail_smtppassword' => 'redacted',
  'overwriteprotocol' => 'https',
  'default_phone_region' => 'redacted',
  'share_folder' => '/Shared with me',
  'theme' => '',
  'app_install_overwrite' => 
  array (
    0 => 'video_converter',
    1 => 'workflow_media_converter',
    2 => 'richdocuments',
    3 => 'files_fulltextsearch_tesseract',
    4 => 'fulltextsearch_elasticsearch',
    5 => 'files_fulltextsearch',
    6 => 'fulltextsearch',
    7 => 'twofactor_email',
    8 => 'upscaler_example',
  ),
);

Possibly related nextcloud logs:

Jun 08 12:23:05 sumu docker-compose[6539]: nextcloud-app            | 172.18.0.12 - - [08/Jun/2024:10:23:00 +0000] "PUT /ocs/v1.php/apps/app_api/apps/status/test-deploy?format=json HTTP/1.1" 401 1715 "-" "python-httpx/0.27.0"
Jun 08 12:23:30 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:30 haproxy[13]: 172.18.0.11:34330 [08/Jun/2024:10:23:29.569] docker_engine bk_docker_engine/dockersocket 0/0/0/876/948 200 456 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/images/create?fromImage=ghcr.io%2Fcloud-py-api%2Ftest-deploy-cpu%3Arelease HTTP/1.1"
Jun 08 12:23:30 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:30 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:30.527] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 6116 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:31 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:31 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:30.528] docker_engine bk_docker_engine/dockersocket 0/0/0/550/550 204 155 - - ---- 1/1/0/0/0 0/0 "DELETE /v1.41/containers/nc_app_test-deploy?force=true HTTP/1.1"
Jun 08 12:23:31 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:31 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:31.089] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 201 403 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/volumes/create HTTP/1.1"
Jun 08 12:23:32 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:32 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:31.090] docker_engine bk_docker_engine/dockersocket 0/0/0/1572/1572 201 284 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/containers/create?name=nc_app_test-deploy HTTP/1.1"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:32.669] docker_engine bk_docker_engine/dockersocket 0/0/0/436/436 204 155 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/containers/nc_app_test-deploy/start HTTP/1.1"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.116] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.124] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.124] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-app            | 172.18.0.1 - - [08/Jun/2024:10:23:28 +0000] "POST /apps/app_api/daemons/docker_socket_proxy/test_deploy HTTP/1.1" 500 3319 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-app            | 172.18.0.1 - - [08/Jun/2024:10:23:33 +0000] "DELETE /apps/app_api/daemons/docker_socket_proxy/test_deploy HTTP/1.1" 200 807 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
Jun 08 12:23:33 sumu docker-compose[6539]: nextcloud-app            | 172.18.0.1 - - [08/Jun/2024:10:23:33 +0000] "GET /apps/app_api/daemons HTTP/1.1" 200 1037 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0"
Jun 08 12:23:34 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:34 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:34.125] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:35 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:35 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:35.126] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5597 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:36 sumu docker-compose[6539]: nextcloud-appapi-dsp     | <134>Jun  8 10:23:36 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:36.128] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5648 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
Jun 08 12:23:55 sumu docker-compose[6539]: nextcloud-app            | 172.18.0.12 - - [08/Jun/2024:10:23:36 +0000] "PUT /ocs/v1.php/apps/app_api/apps/status/test-deploy?format=json HTTP/1.1" 401 1719 "-" "python-httpx/0.27.0"

Finally, the logs from the docker proxy:

<134>Jun  8 10:23:30 haproxy[13]: 172.18.0.11:34330 [08/Jun/2024:10:23:29.569] docker_engine bk_docker_engine/dockersocket 0/0/0/876/948 200 456 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/images/create?fromImage=ghcr.io%2Fcloud-py-api%2Ftest-deploy-cpu%3Arelease HTTP/1.1"
<134>Jun  8 10:23:30 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:30.527] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 6116 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:31 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:30.528] docker_engine bk_docker_engine/dockersocket 0/0/0/550/550 204 155 - - ---- 1/1/0/0/0 0/0 "DELETE /v1.41/containers/nc_app_test-deploy?force=true HTTP/1.1"
<134>Jun  8 10:23:31 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:31.089] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 201 403 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/volumes/create HTTP/1.1"
<134>Jun  8 10:23:32 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:31.090] docker_engine bk_docker_engine/dockersocket 0/0/0/1572/1572 201 284 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/containers/create?name=nc_app_test-deploy HTTP/1.1"
<134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:32.669] docker_engine bk_docker_engine/dockersocket 0/0/0/436/436 204 155 - - ---- 1/1/0/0/0 0/0 "POST /v1.41/containers/nc_app_test-deploy/start HTTP/1.1"
<134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.116] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.124] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:33 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:33.124] docker_engine bk_docker_engine/dockersocket 0/0/0/0/0 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:34 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:34.125] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5533 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:35 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:35.126] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5597 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"
<134>Jun  8 10:23:36 haproxy[13]: 172.18.0.11:57834 [08/Jun/2024:10:23:36.128] docker_engine bk_docker_engine/dockersocket 0/0/0/1/1 200 5648 - - ---- 1/1/0/0/0 0/0 "GET /v1.41/containers/nc_app_test-deploy/json HTTP/1.1"