Deploy by stack
What is the same for every stack Noust deploys natively, a page for each family (Node.js, PHP, Python, Ruby, Elixir, static, the rest), and where to look when it fails.
Noust deploys the stacks below natively: it detects them from the repository, installs and builds
them, runs them as a systemd unit (or serves their files) behind nginx or Apache with a
certificate, and keeps every deploy as a release behind a health gate. No Dockerfile and no
Procfile are needed. This guide says, for each, what is detected, what Noust does, and the one or
two things the project may need to say itself.
Two things are the same for all of them:
noust create -d app.example.com -s https://github.com/you/app.git # detect, build, run, serve, certificateTo see what Noust would do before it does it, the console's New application wizard inspects the
repository first (the type, the commands it will run, the port, the variables in .env.example
with the secrets flagged), and noust --dry-run create ... rehearses the command without changing
anything.
- When the repository has an
.env.example, Noust generates the application's.envfrom it, with random values for the secrets.--env KEY=valueand--env-fileset variables of your own. - When Noust does not detect what you mean,
--typechooses it, and abuild:block innoust.yaml(ornoust app build set) replaces any of the install, build and start commands, the base directory, the directory a static build leaves and the runtime: build.md. - A command that must run on every deploy before the new version serves (a database migration)
is a
pre_deployhook innoust.yaml: compose.md. Hooks run as the application's own account with its.env, and a failingpre_deploystops the deploy with what served before still serving. - Go, Rust, Ruby, Java and Kotlin, .NET, Elixir and Deno are built on the server with its own
toolchain: build.md (Rails and Phoenix have
a page of their own). A stack Noust has no native runtime for (Swift, Zig, Crystal...) is deployed from its
Dockerfile, or with Railpack, as a container application: containers.md. Every stack in this guide has a minimal example inexamples/that deploys as it is.
One page per family of stacks:
- Node.js frameworks
- PHP frameworks
- Python frameworks
- Ruby on Rails, Phoenix, and static site generators
- Stacks without a native runtime
When it did not go right
Read the deployment's log in the console (Deployments of the application) or with noust app deploy-log DOMAIN; noust logs DOMAIN is what the application itself printed once it ran. If the
application deployed but does not answer, noust diagnose DOMAIN says why, most likely cause
first: Troubleshooting.