No description
Find a file
Nextcloud bot c9364a51c2
fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-03-23 00:26:25 +00:00
.github fix: ExApp upgrade 401 on set_init_status 2026-03-02 15:27:05 +02:00
.tx chore: update transifex backport branches (#396) 2024-09-26 21:44:59 +03:00
appinfo add support for Nextcloud 34 2026-01-23 17:15:43 +02:00
build-js ci/reuse): ignore reuse creation lines 2025-11-30 12:39:52 +01:00
css docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
img docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
js chore(assets): Recompile assets 2026-02-22 08:37:05 +00:00
l10n fix(l10n): Update translations from Transifex 2026-03-23 00:26:25 +00:00
lib fix: ExApp upgrade 401 on set_init_status 2026-03-02 15:27:05 +02:00
LICENSES fix(filesplugin.js): use new version of nextcloud/files 2025-12-26 16:49:14 +02:00
screenshots docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
src test: add axios-dependent tests for filesplugin icon loading and file actions 2026-02-21 16:15:01 +02:00
templates docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
tests fix: ExApp upgrade 401 on set_init_status 2026-03-02 15:27:05 +02:00
vendor-bin/phpunit feat: make Docker API version configurable via app config 2026-02-24 14:45:34 +02:00
.editorconfig docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
.eslintrc.js enh(frontend): migrate to vue3 + nc/vue 9.2.0 2025-11-19 14:35:26 +01:00
.gitattributes docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
.gitignore docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
.l10nignore docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
.nextcloudignore docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
.php-cs-fixer.dist.php docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
APPS.md docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
AUTHORS.md docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
CHANGELOG.md docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
composer.json feat: make Docker API version configurable via app config 2026-02-24 14:45:34 +02:00
composer.lock feat: make Docker API version configurable via app config 2026-02-24 14:45:34 +02:00
krankerl.toml docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
LICENSE Initial commit 2023-05-26 17:20:30 +03:00
Makefile docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
package-lock.json Merge pull request #810 from nextcloud/dependabot/npm_and_yarn/immutable-5.1.5 2026-03-06 20:50:56 +02:00
package.json test: add JavaScript unit test infrastructure with Vitest 2026-02-19 17:38:51 +02:00
psalm.xml feat(daemon): add json output option to daemon:list command 2026-02-24 08:40:11 -05:00
README.md chore(readme-description): update app description and README.md 2026-01-20 10:23:10 +02:00
REUSE.toml feat: make Docker API version configurable via app config 2026-02-24 14:45:34 +02:00
stylelint.config.js docs(reuse): Add SPDX header 2024-12-18 08:40:54 +01:00
vitest.config.mjs test: add JavaScript unit test infrastructure with Vitest 2026-02-19 17:38:51 +02:00
webpack.js test: add axios-dependent tests for filesplugin icon loading and file actions 2026-02-21 16:15:01 +02:00

Nextcloud AppAPI

REUSE status Tests - Deploy Tests

AppAPI is the Nextcloud component that enables External Apps (ExApps).

ExApps are Nextcloud apps whose backend runs outside the Nextcloud PHP process (typically as a Docker container). AppAPI provides the APIs and lifecycle management so these external backends can still integrate with Nextcloud users, permissions and the web UI.

AppAPI is only useful if you want to install or develop External Apps.

If you are here because of the warning “default deploy daemon is not set”

You might have seen this in the admin overview/security checks:

AppAPI default deploy daemon is not set. Please register a default deploy daemon …

This warning means:

  • AppAPI is enabled, but no Deploy Daemon is configured, so Nextcloud cannot install/run External Apps yet.

You have two valid options:

  1. You do not want External Apps

    • Disable AppAPI in Apps → Tools → AppAPI, or with:
      • occ app:disable app_api
    • The warning will disappear.
  2. You want to install External Apps

    • Open Settings → Administration → AppAPI
    • Register a Deploy Daemon and set it as the default
    • Use Check connection and Test deploy to verify the setup

Key concepts (short glossary)

  • External App (ExApp): a Nextcloud app where the backend runs as a separate service (usually a container), but is still installed/managed from Nextcloud and integrates with the Nextcloud UI.
  • Deploy Daemon: the service Nextcloud talks to in order to install, start/stop, and reach ExApps. Without a Deploy Daemon, AppAPI cannot deploy ExApps.

Deploy Daemon options

HaRP (High-performance AppAPI Reverse Proxy) is the newer and recommended Deploy Daemon. It is a reverse proxy system designed specifically for ExApps:

  • Proxies access to the Docker Engine used to create ExApp containers
  • Routes requests directly to ExApps (bypassing the Nextcloud PHP process), improving performance and enabling WebSockets
  • Uses FRP (Fast Reverse Proxy) tunnels so ExApp containers do not need to expose ports to the host — this simplifies networking and provides NAT traversal

Repository: https://github.com/nextcloud/HaRP

Docker Socket Proxy (DSP) — legacy

Docker Socket Proxy (often shortened as DSP) is the classic Deploy Daemon implementation. It is a security-hardened proxy in front of the Docker Engine socket/API and is protected by basic authentication and brute-force protection.

Note: DSP is being deprecated in favor of HaRP and is scheduled for removal in Nextcloud 35. New installations should use HaRP.

Repository: https://github.com/nextcloud/docker-socket-proxy

Security notes (for administrators)

Configuring a Deploy Daemon means allowing Nextcloud to orchestrate application containers. Keep these points in mind:

  • Run HaRP/DSP in a trusted network and do not expose it to the public internet.
  • Use strong secrets (HP_SHARED_KEY for HaRP, NC_HAPROXY_PASSWORD for DSP).
  • For remote setups or untrusted networks, use TLS where supported and restrict access with firewall rules.
  • Only deploy ExApps you trust, and keep their images up to date.

Why AppAPI exists (what it is useful for)

AppAPI is designed to make it easier to build and run ExApps in a way that is:

  1. Stable for admins: ExApps integrate through defined interfaces instead of tightly coupling to server internals.
  2. More isolated: ExApps run out-of-process and interact with Nextcloud through controlled APIs.
  3. Suitable for heavy workloads: ExApps can run on separate hardware (including GPU-enabled hosts).
  4. Language-friendly: ExApps can be written in languages other than PHP (Python/Node/Go/…).

Documentation

Latest documentation can be found here:

  1. Admin manual:
  2. Developer manual:

Support

We appreciate any support for this project:

  • Star our work on GitHub
  • Create an issue or feature request
  • 💁 Resolve an issue and open a pull request
  • 🧑‍💻 Build and publish ExApps using AppAPI

Thank you for helping improve ExApps and their ecosystem.