← Back
Editing: TestDeploy.html
<!DOCTYPE html> <html class="writer-html5" lang="en" data-content_root="../"> <head> <meta charset="utf-8" /> <meta name="readthedocs-addons-api-version" content="1"><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Test Deploy Daemon — Nextcloud latest Administration Manual latest documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" /> <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/custom.css?v=8ff6e0db" /> <link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/general.css?v=c0a7eb24" /> <link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/dark.css?v=70edf1c7" /> <link rel="canonical" href="https://docs.nextcloud.com/server/stable/admin_manual/exapps_management/TestDeploy.html" /> <script src="../_static/jquery.js?v=5d32c60e"></script> <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> <script src="../_static/documentation_options.js?v=a49d5d77"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/clipboard.min.js?v=a7894cd8"></script> <script src="../_static/copybutton.js?v=f281be69"></script> <script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script> <script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script> <script src="../_static/js/theme.js"></script> <script src="../_static/js/versions.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Managing ExApps" href="ManagingExApps.html" /> <link rel="prev" title="Managing Deploy Daemons" href="ManagingDeployDaemons.html" /> </head> <body class="wy-body-for-nav"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-scroll"> <div class="wy-side-nav-search" > <a href="../contents.html"> <img src="../_static/logo-white.png" class="logo" alt="Logo"/> </a> <div class="switch-menus"> <div class="version-switch"></div> <div class="language-switch"></div> </div> <div role="search"> <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li> <li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li> <li class="toctree-l1"><a class="reference internal" href="../declarations/index.html">Declarations</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Release notes</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Critical changes</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Installation</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Configuration</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="../occ_command.html">Using the occ command</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li> <li class="toctree-l1"><a class="reference internal" href="../webhook_listeners/index.html">Webhook Listeners</a></li> <li class="toctree-l1"><a class="reference internal" href="../windmill_workflows/index.html">Windmill Workflows</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Files</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></li> <li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li> <li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Apps</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li> <li class="toctree-l1 current"><a class="reference internal" href="index.html">ExApps management</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="AppAPIAndExternalApps.html">AppAPI and External Apps</a></li> <li class="toctree-l2"><a class="reference internal" href="DeployConfigurations.html">Deployment configurations</a></li> <li class="toctree-l2"><a class="reference internal" href="ManagingDeployDaemons.html">Managing Deploy Daemons</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="#">Test Deploy Daemon</a><ul> <li class="toctree-l3"><a class="reference internal" href="#status-checks">Status Checks</a><ul> <li class="toctree-l4"><a class="reference internal" href="#register">Register</a></li> <li class="toctree-l4"><a class="reference internal" href="#image-pull">Image Pull</a></li> <li class="toctree-l4"><a class="reference internal" href="#container-started">Container Started</a></li> <li class="toctree-l4"><a class="reference internal" href="#heartbeat">Heartbeat</a></li> <li class="toctree-l4"><a class="reference internal" href="#init">Init</a></li> <li class="toctree-l4"><a class="reference internal" href="#enabled">Enabled</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="#download-logs">Download Logs</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="ManagingExApps.html">Managing ExApps</a></li> <li class="toctree-l2"><a class="reference internal" href="AdvancedDeployOptions.html">Advanced Deploy Options</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Users</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li> <li class="toctree-l1"><a class="reference internal" href="../desktop/index.html">Desktop Clients</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Groupware</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Office</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Maintenance</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_monitoring/index.html">Monitoring</a></li> <li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li> <li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Links</span></p> <ul> <li class="toctree-l1"><a class="reference external" href="https://help.nextcloud.com/">Community Help Forum</a></li> <li class="toctree-l1"><a class="reference external" href="https://docs.nextcloud.com/">User Manuals</a></li> <li class="toctree-l1"><a class="reference external" href="https://docs.nextcloud.com/">Developer Manuals</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/install/">Download</a></li> <li class="toctree-l1"><a class="reference external" href="https://apps.nextcloud.com">App Store</a></li> <li class="toctree-l1"><a class="reference external" href="https://help.nextcloud.com/t/translation-knowledge-valid-for-the-entire-nextcloud-project-wiki/51550">Translations</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/">GitHub</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule">Supported versions</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/enterprise/">Nextcloud Enterprise</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/server/blob/master/COPYING-README">License</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/">Nextcloud GmbH</a></li> </ul> </div> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="../contents.html">Nextcloud latest Administration Manual</a> </nav> <div class="wy-nav-content"> <div class="rst-content style-external-links"> <div role="navigation" aria-label="Page navigation"> <ul class="wy-breadcrumbs"> <li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li> <li class="breadcrumb-item"><a href="index.html">ExApps management</a></li> <li class="breadcrumb-item active">Test Deploy Daemon</li> <li class="wy-breadcrumbs-aside"> <a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/exapps_management/TestDeploy.rst" class="fa fa-github"> Edit on GitHub</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <section id="test-deploy-daemon"> <span id="test-deploy"></span><h1>Test Deploy Daemon<a class="headerlink" href="#test-deploy-daemon" title="Link to this heading"></a></h1> <p>You can test each Daemon configuration deployment from the AppAPI Admin settings.</p> <img alt="../_images/test_deploy.png" src="../_images/test_deploy.png" /> <section id="status-checks"> <h2>Status Checks<a class="headerlink" href="#status-checks" title="Link to this heading"></a></h2> <p>The Deploy test installs a <a class="reference external" href="https://github.com/nextcloud/test-deploy">test-deploy</a> ExApp to verify each step of the deployment process, including a hardware support check - for each compute device, there is a separate Docker image.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>The Test Deploy ExApp container is not removed after the test as it’s needed for logs and status checks. You can remove it after testing from the Apps page. The Docker images are also not removed from the Daemon; you can clean up unused images with the <code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">image</span> <span class="pre">prune</span></code> command.</p> </div> <img alt="../_images/test_deploy_modal_4.png" src="../_images/test_deploy_modal_4.png" /> <section id="register"> <h3>Register<a class="headerlink" href="#register" title="Link to this heading"></a></h3> <p>The Register step is the first step; it checks if the ExApp is registered in Nextcloud.</p> </section> <section id="image-pull"> <h3>Image Pull<a class="headerlink" href="#image-pull" title="Link to this heading"></a></h3> <p>The Image Pull step downloads the ExApp Docker image.</p> <p>Possible errors:</p> <ul class="simple"> <li><p>Image not found (e.g. not public, no image found for your hardware architecture)</p></li> <li><p>Image pull failed (e.g., due to network issues)</p></li> <li><p>Image pull timeout</p></li> <li><p>Your Docker Socket Proxy/HaRP is not configured correctly and blocks access to this Docker Engine API</p></li> </ul> <p>See <code class="docutils literal notranslate"><span class="pre">journalctl</span> <span class="pre">-f</span> <span class="pre">-u</span> <span class="pre">docker.service</span></code> for more details in systemd based systems.</p> </section> <section id="container-started"> <h3>Container Started<a class="headerlink" href="#container-started" title="Link to this heading"></a></h3> <p>The Container Started step verifies that the ExApp container is created and started successfully.</p> <p>Possible errors:</p> <ul class="simple"> <li><dl class="simple"> <dt>Container failed to start with GPU support (may be missing or misconfigured)</dt><dd><ul> <li><p>For NVIDIA, refer to the <a class="reference external" href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html">NVIDIA Docker configuration docs</a>.</p></li> <li><p>For AMD, refer to the <a class="reference external" href="https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/docker.html">ROCm Docker configuration docs</a>.</p></li> </ul> </dd> </dl> </li> <li><p>The ExApp issue during startup (e.g. not enough memory). The app would show repeated starting attempts in the logs.</p></li> </ul> <p>See <code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">logs</span> <span class="pre">nc_app_<app_id></span></code> for more details.</p> </section> <section id="heartbeat"> <h3>Heartbeat<a class="headerlink" href="#heartbeat" title="Link to this heading"></a></h3> <p>The Heartbeat step checks if the container’s health check is finished and the container is healthy. The ExApp might have additional pre-configuration logic during this step.</p> <p>Possible errors:</p> <ul class="simple"> <li><p>ExApp failed to start a web server, e.g., if the port is already in use (this should be visible in the container logs)</p></li> <li><p>ExApp heartbeat_count keeps increasing, this may indicate that the ExApp couldn’t start properly</p></li> <li><dl class="simple"> <dt>Nextcloud can not reach the ExApp container, e.g.,</dt><dd><ul> <li><p>due to a network issue or a firewall (this should be visible in the server logs or the firewall logs)</p></li> <li><p>due to a “http” protocol deploy daemon. In this case, the ExApp’s container listens on localhost (127.0.0.1 or ::1) which might not be reachable from the Nextcloud server and you might want to listen on a different IP address. See <code class="docutils literal notranslate"><span class="pre">OVERRIDE_APP_HOST</span></code> in <a class="reference internal" href="ManagingDeployDaemons.html#additional-options-list"><span class="std std-ref">Additional options</span></a> in the Deploy Daemon form. This issue can be identified using this command: <code class="docutils literal notranslate"><span class="pre">lsof</span> <span class="pre">-i</span> <span class="pre">-P</span> <span class="pre">-n</span> <span class="pre">|</span> <span class="pre">grep</span> <span class="pre">LISTEN</span></code></p></li> </ul> </dd> </dl> </li> <li><p>For HaRP, the main Nextcloud proxy might not be configured to redirect requests to the HaRP container correctly. See the <a class="reference external" href="https://github.com/nextcloud/harp?tab=readme-ov-file#configuring-your-reverse-proxy">Configuring Your Reverse Proxy</a> section in the HaRP readme.</p></li> </ul> </section> <section id="init"> <h3>Init<a class="headerlink" href="#init" title="Link to this heading"></a></h3> <p>The Init step checks if the ExApp is initialized and ready to use. During the init step, the ExApp may perform downloads of extra stuff required for it.</p> <p>Possible errors:</p> <ul class="simple"> <li><p>Initialization failed (e.g., due to network issues or timeout)</p></li> <li><p>ExApp not being able to reach the Nextcloud server (e.g., due to a network issue or a firewall)</p></li> </ul> </section> <section id="enabled"> <h3>Enabled<a class="headerlink" href="#enabled" title="Link to this heading"></a></h3> <p>The Enabled step checks if the ExApp is enabled and ready to use. During this step, the ExApp registers all the required and available APIs of the Nextcloud AppFramework.</p> <p>Possible errors:</p> <ul class="simple"> <li><p>ExApp did not respond to the enable request</p></li> <li><p>ExApp failed to enable due to a failure in registering AppAPI Nextcloud AppFramework APIs (this should be visible both in the container logs and in the Nextcloud logs if there are any errors)</p></li> </ul> </section> </section> <section id="download-logs"> <h2>Download Logs<a class="headerlink" href="#download-logs" title="Link to this heading"></a></h2> <p>You can download the logs of the last test deploy attempt container.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Downloading Docker container logs is only possible for containers using the json-file or journald logging drivers.</p> </div> </section> </section> </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <a href="ManagingDeployDaemons.html" class="btn btn-neutral float-left" title="Managing Deploy Daemons" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="ManagingExApps.html" class="btn btn-neutral float-right" title="Managing ExApps" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> <hr/> <div role="contentinfo"> <p>© Copyright 2016-2026 Nextcloud GmbH and Nextcloud contributors.</p> </div> </footer> </div> </div> </section> </div> <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions"> <span class="rst-current-version" data-toggle="rst-current-version"> ☁️ latest <span class="fa fa-caret-down"></span> </span> <div class="rst-other-versions"> <dl> <dt>☁️ Versions</dt> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/latest/admin_manual" style="color: var(--dark-link-color);" > latest </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/stable/admin_manual" > stable </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/32/admin_manual" > 32 </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/31/admin_manual" > 31 </a> </dd> </dl> </div> </div> <script> jQuery(function () { SphinxRtdTheme.Navigation.enable(true); }); </script> </body> </html>
Save File
Cancel