Qwik City
Deploy Qwik City with the Express Node adapter or static adapter.
Nitroship manages Qwik City’s Express Node adapter and its static adapter. Configure an adapter explicitly; a Qwik client build alone is not a server deployment.
Detection and build output
- Detection:
@builder.io/qwik-cityinpackage.json. Keep the normal build scripts, includingbuild.server. - Express Node adapter: the
build.serverscript points atadapters/express/vite.config.ts, which usesnodeServerAdapter. The server starts withnode server/entry.express.js;distis published to the CDN. - Static adapter: configure
staticAdapterunderadapters/staticand pointbuild.serverat that adapter configuration. The generateddistis published without compute. - Missing adapters and other server/platform adapters produce an actionable error; install/configure the Express or static adapter rather than uploading server source as static files.
Deploy
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.
{
"build": {"framework": "qwik"},
"compute": {"regions": ["kr-icn"]}
}Setting build.framework skips detection and uses this preset, even if your project root has a Dockerfile. It can't be combined with build.dockerfile. Without it, Nitroship detects the build as described in How Nitroship chooses a build.
ntro apps create my-qwik-app
ntro deploy . --prodAfter installing dependencies, you can also build locally with ntro deploy . --prod --local. After deployment, open static assets and a server route at the URL printed by the CLI.
Dependency packaging
The Express preset preserves server, dist, and the installed dependency tree. Unlike the production-only dependency packaging used by several other managed Node presets, Qwik includes build-time dependencies too because the official adapter can reference them at runtime. Do not remove a package that the generated server imports.
Verify a rendered page and a client asset after deploying. Use the default adapter output paths; a custom server layout needs your own Dockerfile.
Limits and custom setups
Server deployments need a compute region. Your server must listen on 0.0.0.0:$PORT (default 3000). Client assets come from the CDN, and a single Node server handles all SSR and API requests; routes aren't split into separate functions the way Next.js routes are.
Nitroship does not automatically run migrations, queue workers, or schedulers. Run migrations in CI or locally; see Scheduled jobs for periodic work. Store uploads in S3 or other object storage, and configure secrets through Environment variables.
For adapters or output layouts outside this contract, use your own Dockerfile. Remove build.framework and define installation, build, and startup in the Dockerfile.