Section 1 of 11
Getting your ExApp into the world — why packaging matters
ExApp packaging is significantly different from PHP app packaging. A PHP app is a zip of source files — Nextcloud unpacks it and loads the PHP directly. An ExApp is a Docker image — Nextcloud tells AppAPI to pull and run a container. This means:
- The app store doesn't host your code — it hosts a reference to your Docker image on a registry (GitHub Container Registry, Docker Hub, etc.)
- Every release requires building and pushing a new Docker image, not just creating a tarball
- Your image must support both
linux/amd64andlinux/arm64to work on all Nextcloud server hardware appinfo/info.xmlmust include the<docker-install>block pointing to your image
The upside: updates are atomic, rollback is straightforward (just re-register the previous image tag), and your runtime environment is perfectly reproducible.