{# Deploy an application. The panel exists to deploy web applications and, until this screen, could not deploy one: POST /api/apps had no caller anywhere in the interface. An operator could look at everything and create nothing. It is a plain form posting to a page route, not htmx. A deployment is the one action here that is worth a whole screen and a full navigation: it takes minutes, it is the thing most likely to fail with something worth reading, and the result is a job to follow rather than a row to swap. Submitting it lands on the activity screen with the log drawer attached. Only what a deployment cannot proceed without is on the form. Everything else the CLI accepts - package manager, workspaces, subdomains, compose profiles - has a sensible default, and a screen that asks fourteen questions to do the common thing is a screen people avoid. #} {% extends "base.html" %} {% import "_macros.html" as m %} {% block title %}Deploy{% endblock %} {% block content %} {{ m.page_head("Deploy an application", "From a Git repository, an archive or a directory on this machine") }} {% if problem %} {{ m.problem(problem.fix, problem.output) }} {% endif %}
The web server answers for this name, and the certificate is issued for it. It has to resolve to this machine already.
A Git URL, or a path on this machine.
Auto-detect reads the repository and picks one.
Leave empty for the repository's default.
Leave empty to be assigned a free one.
certbot answers a challenge on this machine, so the domain must resolve here first.
Cancel

The same deployment from a terminal: wasm create -d example.com -s https://github.com/you/app

{% endblock %}