Skip to content

HaRP: internal HTTP daemon on 8200 returns 404 for /v1.44/_ping (AppAPI heartbeat fails) #77

@Gauvino

Description

@Gauvino

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Run HaRP with the official image ghcr.io/nextcloud/nextcloud-appapi-harp:release via Docker Compose behind nextcloud:fpm-alpine and an nginx:alpine-slim reverse proxy.
  2. Configure AppAPI + HaRP in Nextcloud (register deploy daemon, set HP_SHARED_KEY, etc.).
  3. Trigger the deploy daemon “Test deploy” / heartbeat in AppAPI or call the ping endpoint manually:
    • From the web container:
      curl -H "harp-shared-key: <HP_SHARED_KEY>" \
        http://harp-proxy:8780/exapps/app_api/v1.44/_ping
      
    • From inside the harp-proxy container:
      curl -v http://127.0.0.1:8200/v1.44/_ping
      

Expected behaviour

The _ping / heartbeat endpoint should return 200 OK and the deploy daemon in AppAPI should show a healthy state.

Actual behaviour

HaRP forwards the request, but the internal HTTP daemon on port 8200 always returns 404 Not Found on the ping endpoint.

Relevant harp-proxy logs:


[2025-12-16T18:59:01+0000] [DEBUG] Incoming request to ExApp: path=/exapps/app_api/v1.44/_ping, headers=...
[2025-12-16T18:59:01+0000] [DEBUG] Request from AppAPI received: /v1.44/_ping
[2025-12-16T18:59:01+0000] [INFO] 127.0.0.1 [...] "GET /v1.44/_ping HTTP/1.1" 404 174 "-" "GuzzleHttp/7"
<134>... "GET /exapps/app_api/v1.44/_ping HTTP/1.1"

Manual tests from inside harp-proxy:


curl -v http://127.0.0.1:8200/v1.44/_ping          \# -> HTTP/1.1 404 Not Found
curl -v http://127.0.0.1:8200/app_api/v1.44/_ping  \# -> HTTP/1.1 404 Not Found
curl -v http://127.0.0.1:8200/                     \# -> HTTP/1.1 404 Not Found

So SPOA + routing work, but the Python HTTP server on 8200 does not expose any of the expected endpoints and responds 404 for every path.
This looks very similar to the currently open issues around AppAPI/HaRP + Nextcloud 32 and Docker API versions (for example #72, #69, #75).

Server configuration

Web server: Nginx (nginx:alpine-slim container in front of nextcloud:fpm-alpine)

Database: PostgreSQL (postgres:alpine)

PHP version: 8.3.28

Nextcloud version: 32.0.3

HaRP image: ghcr.io/nextcloud/nextcloud-appapi-harp:release

AppAPI version: : 32.0.0

Docker version (host):


Client: Docker Engine - Community
 Version:           29.1.3
 API version:       1.52
 Go version:        go1.25.5
 Git commit:        f52814d
 Built:             Fri Dec 12 14:49:32 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.1.3
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.5
  Git commit:       fbf3ed2
  Built:            Fri Dec 12 14:49:32 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.0
  GitCommit:        1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc:
  Version:          1.3.4
  GitCommit:        v1.3.4-0-gd6d73eb8
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

List of activated apps
  - activity: 5.0.0-dev.0
  - admin_audit: 1.22.0
  - app_api: 32.0.0
  - bruteforcesettings: 5.0.0-dev.0
  - cfg_share_links: 7.0.1
  - cloud_federation_api: 1.16.0
  - comments: 1.22.0
  - dashboard: 7.12.0
  - dav: 1.34.2
  - federatedfilesharing: 1.22.0
  - files: 2.4.0
  - files_3dmodelviewer: 0.0.16
  - files_downloadlimit: 5.0.0-dev.0
  - files_pdfviewer: 5.0.0-dev.0
  - files_rightclick: 0.15.1
  - files_sharing: 1.24.1
  - files_trashbin: 1.22.0
  - files_versions: 1.25.0
  - firstrunwizard: 5.0.0-dev.0
  - logreader: 5.0.0-dev.0
  - lookup_server_connector: 1.20.0
  - mail: 5.6.4
  - nextcloud_announcements: 4.0.0-dev.0
  - notifications: 5.0.0-dev.0
  - oauth2: 1.20.0
  - onlyoffice: 9.11.0
  - photos: 5.0.0-dev.1
  - privacy: 4.0.0-dev.0
  - profile: 1.1.0
  - provisioning_api: 1.22.0
  - recommendations: 5.0.0-dev.0
  - related_resources: 3.0.0-dev.0
  - serverinfo: 4.0.0-dev.0
  - settings: 1.15.1
  - sharebymail: 1.22.0
  - support: 4.0.0-dev.0
  - survey_client: 4.0.0-dev.0
  - text: 6.0.1
  - theming: 2.7.0
  - twofactor_backupcodes: 1.21.0
  - twofactor_nextcloud_notification: 6.0.0-dev.0
  - twofactor_totp: 14.0.0
  - updatenotification: 1.22.0
  - user_status: 1.12.0
  - viewer: 5.0.0-dev.0
  - weather_status: 1.12.0
  - workflowengine: 2.14.0
Disabled:
  - circles: 32.0.0 (installed 31.0.0)
  - contactsinteraction: 1.13.1 (installed 1.12.0)
  - encryption: 2.20.0
  - federation: 1.22.0 (installed 1.21.0)
  - files_external: 1.24.0 (installed 1.24.0)
  - files_reminders: 1.5.0 (installed 1.4.0)
  - password_policy: 4.0.0-dev.0 (installed 3.0.0)
  - recognize: 10.0.6 (installed 10.0.6)
  - suspicious_login: 10.0.0-dev.0
  - systemtags: 1.22.0 (installed 1.21.1)
  - user_ldap: 1.23.0
  - webhook_listeners: 1.3.0 (installed 1.2.0)

Nextcloud configuration

{
    "system": {
        "memcache.local": "\\OC\\Memcache\\APCu",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "***REMOVED SENSITIVE VALUE***",
            "192.168.1.111"
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "forwarded_for_headers": [
            "HTTP_CF_CONNECTING_IP"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "pgsql",
        "version": "32.0.3.2",
        "overwrite.cli.url": "***REMOVED SENSITIVE VALUE***",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "default_phone_region": "FR",
        "overwriteprotocol": "https",
        "opcache.memory_consumption": "256",
        "opcache.interned_strings_buffer": "40",
        "opcache.max_accelerated_files": "32530",
        "opcache.save_comments": "1",
        "opcache.revalidate_freq": "60",
        "opcache.jit": "1255",
        "opcache.jit_buffer_size": "128M",
        "enable_previews": true,
        "enabledPreviewProviders": [
            "OC\\Preview\\TXT",
            "OC\\Preview\\MarkDown",
            "OC\\Preview\\OpenDocument",
            "OC\\Preview\\PDF",
            "OC\\Preview\\MSOffice2003",
            "OC\\Preview\\MSOfficeDoc",
            "OC\\Preview\\Image",
            "OC\\Preview\\Photoshop",
            "OC\\Preview\\TIFF",
            "OC\\Preview\\Font",
            "OC\\Preview\\MP3",
            "OC\\Preview\\Movie",
            "OC\\Preview\\MKV",
            "OC\\Preview\\MP4",
            "OC\\Preview\\AVI"
        ],
        "mail_smtpmode": "sendmail",
        "mail_sendmailmode": "pipe",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "log_type": "file",
        "logfile": "\/log\/nextcloud.log",
        "loglevel": 2,
        "maintenance": false,
        "maintenance_window_start": 1,
        "theme": "",
        "app_install_overwrite": [
            "breezedark",
            "openotp_auth",
            "cadviewer",
            "files_rightclick",
            "cfg_share_links"
        ],
        "updater.release.channel": "stable",
        "skeletondirectory": ""
    }
}

Browser (Not Revelant)

Browser log

Not really applicable – the problem occurs between AppAPI and HaRP internally, not in the browser.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions