Introducing Nitroship
How Nitroship deploys your app, and the few concepts you need before you start.
Nitroship is a deployment platform that takes your web app from source to a live URL. Run ntro deploy in your project folder: the CLI uploads your source to Nitroship's remote builder (a cloud server that runs the build for you), and when the build finishes your app is live at https://<app-name>.ntro.run.
Get started
Install the CLI
curl -fsSL https://nitroship.co/install.sh | bash
ntro loginAlready installed? Skip ahead. Full options, PATH setup, and updates: Install the CLI.
Once installed, follow Your first deployment to put your first site online.
Four concepts to know first
| Concept | In one line |
|---|---|
| App | One project you deploy. Its name (slug) becomes its address, e.g. hello-site → hello-site.ntro.run. |
| Team | Owns apps. Permissions and billing are managed per team. You get a starter team when you sign up. |
| Deployment | The build output at one point in time. Once created it never changes; new code means a new deployment. |
| Production / Preview | Production is the deployment served at your real address; previews are for checking changes. Your first deployment becomes production; later ones are previews by default. |
Because deployments never change, going back is easy: check a preview, then promote it to production, or roll back to an earlier deployment when something breaks. Managing deployments walks through the flow.
How Nitroship chooses a build
The remote builder checks your project root in this order. Set build.framework to choose a preset explicitly instead; it wins over automatic Dockerfile selection and cannot be combined with build.dockerfile.
| Order | Route | Picked when | What gets deployed |
|---|---|---|---|
| 1 | Dockerfile container | build.dockerfile is configured, or Dockerfile.nitroship / Dockerfile exists | Your container's HTTP server, with optional static assets served from the CDN |
| 2 | Managed Next.js | package.json depends on next 16.2+ | Static pages, SSR, ISR, API routes, middleware, image optimization |
| 3 | Managed framework preset | Dependencies or source files identify a supported framework | The preset builds and packages the app without a user Dockerfile |
| 4 | Generic static files | A root index.html, or a dist, build, or out folder after the build (or build.outputDirectory) | HTML, JS, CSS, and images, plus redirects and headers |
Framework presets produce one of four output shapes:
- Static: build files and serve them from the CDN; no app server runs.
- Node server: package a managed Node.js server bundle and serve its public assets from the CDN.
- Container: generate a Dockerfile for the framework's language, run the server image, and serve extracted public assets from the CDN.
- Container-built static: use a container toolchain to generate static files, then serve only those files; no container runs for requests.
Servers listen on 0.0.0.0:$PORT (default 3000). Generated Go/Rust images set PORT (default 3000), but Go/Rust apps must read it and bind to 0.0.0.0:$PORT themselves; the preset cannot change a hard-coded bind address. ntro deploy --local supports static and Node server presets; presets that build containers require the default hosted build.
Which framework are you using?
Next.js
Managed deployment with server features intact
Nuxt
Managed Node server or static generation
Astro
Static site or standalone Node adapter
SvelteKit
Node and static adapters
Remix
Managed Remix v2 server
React Router
SSR server or SPA
SolidStart
Managed server and client assets
TanStack Start
React and Solid server apps
Analog
Managed Angular meta-framework server
Angular
SSR or static browser build
Qwik
Node or static adapter
Node servers
NestJS, Express, Fastify, Hono, and Koa
Static generators
Gatsby, Docusaurus, VitePress, Eleventy, Hugo, Jekyll, and MkDocs
Vite / Create React App
Managed static single-page apps
Static HTML
Plain HTML files, no build
Laravel
Managed PHP server and frontend assets
Symfony
Managed FrankenPHP server
WordPress
Managed PHP image; externalize uploads
PHP
Managed FrankenPHP without a Dockerfile
Django
Managed WSGI server and static assets
Python
FastAPI and Flask servers
Rails
Managed Puma server and compiled assets
Phoenix
Managed Elixir release
Go
Managed compiled HTTP server
Rust
Managed Cargo binary
Spring Boot
Managed Java server
.NET
Managed ASP.NET Core server
Dockerfile
Your own build and server image