Skip to content

SolidStart

Source: src/Hetzner/Website/SolidStart.ts

Deploy a SolidStart application to a Hetzner Cloud Server: the SSR server as a systemd unit on port 3000, static assets (prerendered pages included) baked into the unit.

The build runs through @alchemy.run/frontend-frameworks/solidstart with the @alchemy.run/frontend-frameworks/solidstart/node deploy target — both must be installed in your project, alongside @solidjs/start and @solidjs/vite-plugin-nitro-2.

Your vite.config.ts needs no adapter wiring: the integration drives the project’s own vite build and appends its own nitro plugin instance carrying nitro’s node preset.

Basic SolidStart App

const site = yield* Hetzner.Website.SolidStart("Web", {
rootDir: "./app",
});

Custom Domain

const site = yield* Hetzner.Website.SolidStart("Web", {
rootDir: "./app",
domain: "app.example.com",
zone,
});
const site = yield* Hetzner.Website.SolidStart("Web", {
rootDir: "./app",
env: {
API_BASE: "https://api.example.com",
},
});

The integration owns the nitro plugin instance (a nitroV2Plugin() in your vite.config.* is rejected), so nitro options — prerendering included — go on the nitro prop. Prerendered pages are baked into the unit and served as static assets.

const site = yield* Hetzner.Website.SolidStart("Web", {
rootDir: "./app",
nitro: { prerender: { routes: ["/", "/about"] } },
});