1# Hetzner Website: SolidStart
2
3Deploys a [SolidStart](https://start.solidjs.com) site to Hetzner with
4`Hetzner.Website.SolidStart` — no adapter setup in the project config.
5
6The Node adapter bundle runs as a systemd unit on a Hetzner Cloud Server (port 3000).
7
8
9- `src/routes/index.tsx` is server-rendered on the Hetzner Server and reads `GREETING` from `process.env`.
10- `vite.config.ts` holds only `solidStart()` and the Tailwind plugin — no `nitroV2Plugin()`; the deploy target owns the nitro plugin instance.
11- Static assets under `public/` deploy with the service.
12
13```ts
14const site = yield* Hetzner.Website.SolidStart("Website", {
15 env: { GREETING: "Hello from SolidStart on Hetzner!" },
16});
17```
18
19The integration package must be installed in the project (it is loaded
20dynamically at deploy time), alongside `@solidjs/vite-plugin-nitro-2`:
21
22```sh
23bun add -d @alchemy.run/frontend-frameworks
24bun add @solidjs/vite-plugin-nitro-2
25```
26
27## Deploy
28
29```sh
30bun run deploy
31```
32
33Unchanged sources skip the build entirely on subsequent deploys — the
34input files are content-hashed (scoped by `memo.include`).
35
36## Dev
37
38```sh
39bun run dev
40```
41
42`alchemy dev` runs the framework's own dev server (HMR included) and
43no cloud resources are created. SolidStart 2's dev server (via
44`srvx/node`) misrenders under Bun, so run `alchemy dev` with Node for
45this example.
46
47## Destroy
48
49```sh
50bun run destroy
51```