---
title: "So deployst du eine TanStack-Start-App 2026"
description: "TanStack Start auf einem Node-Server deployen: Nitro und Start-Skript ergänzen, pethost deploy ausführen, nach 29 s per HTTPS online, für 9,99 € im Monat."
---

[Blog](https://pethost.dev/de/blog/) · Deploy-Anleitungen

# So deployst du eine TanStack-Start-App 2026: Nitro, ein Start-Skript und ein Befehl

Vom Pethost-Team · 10. Oktober 2026 · Aktualisiert 25. Oktober 2026 · 8 Min. Lesezeit

Du hast eine TanStack-Start-App und willst sie auf einem Node-Server unter einer Adresse mit HTTPS online haben. Der Hosting-Guide von TanStack verlangt dafür zwei Dinge von der App: das Nitro-Plugin und ein `start`-Skript. Sind beide da, schreibt `pethost deploy` das Dockerfile, baut die App und gibt ihre Adresse aus. Die App, die die TanStack-CLI erstellt, war beim ersten Mal in 29 s gebaut und gestartet.

**Kurz gesagt**

- **Zwei Dinge in der App:** das Nitro-Plugin, das `--deployment nitro` beim Erstellen der App hinzufügt, und `"start": "node .output/server/index.mjs"` in der `package.json`.
- **Ein Befehl:** `pethost deploy` im Ordner mit der `package.json`. Er schreibt ein Dockerfile, das `npm run build` und danach `npm run start` ausführt.
- **Der Port:** Der Nitro-Server lauscht auf 3000. Pethost findet das und leitet die Adresse dorthin, per HTTPS.
- **Ein Build, der fehlschlägt, ändert nichts:** Die Version davor läuft weiter, und der Bildschirm zeigt den Fehler des Builds.
- **Der Preis:** 9,99 € im Monat für 2 vCPU, 3 GB und 30 GB, für diese App und jedes andere Projekt, das du hast. Einen Free Tier gibt es nicht.

## Was du brauchst, um eine TanStack-Start-App 2026 zu deployen

Drei Dinge: die App, den Befehl `pethost` und ein Pethost-Konto.

**Die App** ist hier die, die die TanStack-CLI erstellt, mit Nitro als Deployment-Ziel:

```
npx @tanstack/cli@latest create my-app --deployment nitro
```

Das Flag fügt das Nitro-Plugin in die `vite.config.ts` ein. In einer App, die du schon hast, ergänzt du es so, wie es der Nitro-Teil des Hosting-Guides beschreibt:

```
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
import { defineConfig } from 'vite'
import { nitro } from 'nitro/vite'
import viteReact from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [tanstackStart(), nitro(), viteReact()],
})
```

Dann gib der `package.json` das Skript, das startet, was der Build schreibt. Die CLI legt dort `build` an, aber kein `start`:

```
"scripts": {
  "dev": "vite dev --port 3000",
  "build": "vite build",
  "start": "node .output/server/index.mjs"
}
```

**Der Befehl** ist ein Programm, installiert mit einer Zeile. Jeden seiner Befehle findest du in der [Referenz der CLI](https://pethost.dev/docs/cli/).

```
curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell
```

**Das Konto** braucht einen Tarif. Wenn du nicht angemeldet bist, öffnet `pethost deploy` deinen Browser und meldet dich an. Wenn du noch keinen Tarif hast, zeigt er dir, wo du einen wählst, und wartet.

## Die TanStack-Start-App mit einem Befehl deployen

Geh in den Ordner mit der `package.json` und führ `pethost deploy` aus. Das ist der ganze Bildschirm, für die App, die die CLI erstellt hat:

```
$ cd my-app
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 18 files, 183 KB   (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Node.js project detected, wrote Dockerfile.
✓ Packed 19 files, 184 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 29 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
✓ app listens on 3000 → https://my-app.sam.pethost.app
  It answers 200.

https://my-app.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
```

1. **Es fragt nach einer Sache** Nach dem Namen des Projekts, dem ersten Wort seiner Adresse. Enter übernimmt den Namen des Ordners.
2. **Die Maschine findet nichts zum Ausführen** Der Ordner geht direkt auf deine Maschine, ohne `node_modules`. Die Zeile mit dem Kreuz ist ihre Antwort: Ein Projekt läuft aus einem Dockerfile oder einer Compose-Datei, und der Ordner hat noch keins von beiden.
3. **pethost schreibt das Dockerfile** Es hat die Skripte `build` und `start` in der `package.json` gelesen und lädt den Ordner erneut hoch.
4. **Die Maschine baut und startet es** Sie sieht, dass der Server auf 3000 lauscht, und leitet die Adresse dorthin. Dann ruft pethost die Adresse selbst auf und gibt aus, was sie geantwortet hat: 200.

Wir haben die deployte App so aufgerufen, wie es jemand tut, der die Adresse öffnet. Die Startseite und `/about` antworteten beide mit 200 und auf dem Server gerendertem HTML, und eine Adresse ohne Route antwortete mit 404. Der laufende Server brauchte 43 MB RAM.

## Das Dockerfile, das pethost für TanStack Start schreibt

Das ist die Datei, wie sie in den Ordner der App geschrieben wurde, vollständig:

```
# Written by pethost deploy for this Node.js project: Node 24 (no .nvmrc names another),
# npm installs it (package-lock.json), package.json builds it with "vite build",
# package.json starts it with "node .output/server/index.mjs".
# It is yours now: change it as you like. pethost does not write it again.

FROM node:24
WORKDIR /app

COPY . .

# Every dependency: what builds the project, and may start it, is among the ones for
# development.
RUN --mount=type=cache,target=/root/.npm \
    npm install

RUN npm run build

ENV NODE_ENV=production
CMD ["npm", "run", "start"]
```

Die ersten Zeilen sagen, was pethost in deinem Ordner gelesen hat. Der Paketmanager ist der, den deine Lockfile nennt, und die Node-Version die, die `.nvmrc` oder `.node-version` nennt, oder Node 24, wenn es keine von beiden gibt. Build und Start sind deine beiden Skripte, so wie du sie geschrieben hast.

### Ohne das Start-Skript

Eine TanStack-Start-App lässt sich für mehrere Arten von Hosting-Anbietern bauen, also rät pethost nicht, wie deine startet. Ohne `start`-Skript schreibt es keine Datei und sagt, warum:

```
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 13 files, 177 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
  package.json builds the project and names nothing that starts it (no start script), and what it builds is no site of a kind pethost has a row for.
  Your coding agent writes one in a minute: "Write a Dockerfile for this app".
  Then run pethost deploy again.     How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject
```

Füg das Skript hinzu und führ den Befehl noch einmal aus.

## Eine Route ändern und neu deployen

Bearbeite eine Route und führ denselben Befehl aus. Der zweite Deploy dauerte 7 s, weil die Maschine die Layer des Builds und den Cache von npm behält:

```
$ pethost deploy
my-app (.pethost)
✓ Packed 20 files · uploaded · built and started in 7 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
  · kept the project's x-pethost
  It answers 200.
https://my-app.sam.pethost.app
```

### Wenn der Build fehlschlägt

Um das zu sehen, haben wir eine Routen-Datei kaputt gemacht. Der Bildschirm zeigt das Log des Builds mit dem Fehler darin, und die letzte Zeile sagt, was alle bekommen, die die Adresse öffnen. Das ist dieser Bildschirm, gekürzt auf drei seiner Zeilen:

```
$ pethost deploy
my-app (.pethost)
✗ Deploy failed: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
    #9 0.793 Error: Error transforming route file /app/src/routes/about.tsx: SyntaxError: Unexpected token, expected "," (4:19)
  Nothing changed: the version before still runs.
```

Um bei jedem Push zu deployen, verbinde das Repository einmal mit `pethost github sam/my-app`. Pethost liest nur die Repositorys, die du seiner GitHub-App freigegeben hast. `pethost rollback` holt die Version vor der aktuellen zurück, und deine Maschine behält die drei Versionen davor. Ein KI-Agent kann all das über den MCP-Server von Pethost für dich erledigen: [wie ein Agent ein Projekt deployt und betreut](https://pethost.dev/de/blog/hosting-for-ai-coding-agents/).

## Umgebungsvariablen und deine eigene Domain

Eine Variable, die eine Server-Funktion liest, ist ein Befehl. Er fragt nach dem Wert, ohne ihn anzuzeigen, schreibt ihn in die Datei `.env` des Projekts auf der Maschine, und spätere Deploys behalten ihn:

```
pethost env set DATABASE_URL
```

Jeder Name unter der Domain deines Kontos ist sofort eine Adresse, mit HTTPS. Eine Domain, die dir gehört, braucht einen Befehl und einen DNS-Eintrag:

```
pethost domain add app.example.com
```

Der Befehl gibt den Eintrag aus, den du anlegen musst: einen CNAME von deinem Namen auf den Namen deiner Maschine. Das Zertifikat kommt von selbst, sobald der Name auflöst, und erneuert sich selbst.

## Was du für den Preis bekommst

Pethost kostet 9,99 € im Monat für alles, was du hostest, mit 2 vCPU, 3 GB RAM und 30 GB Disk. Der Server der App brauchte davon 43 MB RAM, also hat die Maschine Platz für ihre Datenbank, einen Worker und deine anderen Projekte, etwa eine [React-Router-App](https://pethost.dev/de/blog/deploy-react-router-app/) daneben. Es gibt [keine Gebühr pro Projekt](https://pethost.dev/de/blog/unlimited-projects-flat-monthly-fee/) und [nichts nach Verbrauch](https://pethost.dev/de/blog/paas-without-usage-based-billing/): Server-Funktionen werden nicht pro Aufruf abgerechnet.

- **9,99 €** im Monat für alle deine Projekte, nichts nach Verbrauch
- **29 s** zum Bauen und Starten der App, beim ersten Mal
- **7 s** für den Deploy danach

Was schon für dich erledigt ist: HTTPS mit Zertifikaten, die sich selbst erneuern, Deploys aus GitHub, nächtliche Backups, 14 Tage aufbewahrt, SSH in jeden Container und jeder Request gezählt, mit den meistaufgerufenen Pfaden und der Fehlerquote der letzten 30 Tage. Die Maschine läuft immer, also wartet eine Server-Funktion [nie auf einen Kaltstart](https://pethost.dev/de/blog/always-on-hosting-no-cold-starts/). Die Tarife stehen im Teil [Preise](https://pethost.dev/de/#pricing) der Startseite.

**Ein Projekt, geöffnet bei seinen Requests.** Wie viele kamen, wie schnell sie beantwortet wurden, und ein Diagramm der letzten 15 min.

![Das Pethost-Panel: ein Projekt, geöffnet bei seinen Requests, mit ihrer Anzahl, ihren Antwortzeiten und einem Diagramm der letzten 15 min.](https://pethost.dev/shots/project.webp)

### Pethost ist die beste Wahl für

- **alle, die eine Full-Stack-App mit React bauen**: der Server, seine Server-Funktionen und seine Datenbank auf einer Maschine, auf einer Rechnung
- **alle, die allein entwickeln**, mit mehreren Side Projects, jedes unter einer eigenen Adresse
- **alle, deren Agent für sie deployt**: Claude Code oder Codex bringt die App online und liest ihre Logs
- **junge Startups**, die feste monatliche Kosten wollen, solange das Produkt klein ist

### Schau dich anderswo um, wenn

- deine Anwendung mehrere Regionen oder Autoscaling braucht

## Fragen

### Wie läuft TanStack Start auf einem Node-Server?

Füg das Nitro-Plugin in die `vite.config.ts` ein und das Skript `"start": "node .output/server/index.mjs"` in die `package.json`, wie es der Hosting-Guide von TanStack sagt. `npm run build` schreibt dann den Server nach `.output`, und `npm run start` startet ihn auf Port 3000.

### Braucht eine TanStack-Start-App ein Dockerfile zum Deployen?

Bei Pethost läuft ein Projekt aus einem Dockerfile oder einer Compose-Datei, und du musst es nicht selbst schreiben: Sobald die `package.json` ein `build`- und ein `start`-Skript hat, schreibt `pethost deploy` das Dockerfile und deployt es. Die Datei bleibt in deinem Ordner, und du kannst sie ändern.

### Was passiert, wenn der Build einer TanStack-Start-App beim Deploy fehlschlägt?

Für alle, die die Adresse öffnen, ändert sich nichts. Der Deploy bricht ab, der Bildschirm zeigt das Log des Builds mit dem Fehler, und die Version, die vorher lief, läuft weiter.

### Kann ich eine TanStack-Start-App bei jedem Push von GitHub deployen?

Ja. Deploy den Ordner einmal mit `pethost deploy` und führ dann `pethost github owner/repository` aus. Ab dann deployt sich jeder Push in das Repository von selbst, und `pethost rollback` geht zu einem früheren Commit zurück.

### Was kostet es, eine TanStack-Start-App bei Pethost zu hosten?

9,99 € im Monat für Starter, mit 2 vCPU, 3 GB und 30 GB, ohne Gebühr pro Projekt und ohne Kosten pro Request: Deine anderen Apps, Websites und Datenbanken laufen dort auch. Einen Free Tier gibt es nicht. Die Preise verstehen sich zzgl. MwSt.

Die Bildschirme zeigen Deploys der App, die `npx @tanstack/cli@latest create --deployment nitro` schreibt, mit TanStack Start 1.168.61, Nitro 3.0.260610-beta und pethost 0.2.1, auf einer Testmaschine von uns, die vorher nichts gebaut hatte. Das Konto darin ist das Beispielkonto, `sam`.

1. [TanStack Start: Hosting](https://tanstack.com/start/latest/docs/framework/react/guide/hosting)
2. [TanStack Start: Quick Start](https://tanstack.com/start/latest/docs/framework/react/quick-start)
3. [pethost, die Kommandozeile von Pethost](https://pethost.dev/docs/cli/)

## Bring deine Projekte noch heute online

Deploy Apps, Bots und Datenbanken aus deinem Agenten, von GitHub oder im Browser, so viele, wie hineinpassen, zu einem festen Preis. Nichts nach Verbrauch, nichts obendrauf.

[Alle deine Projekte für 9,99 €/Monat hosten](https://console.pethost.dev/)

## Weiterlesen

- 10. Oktober 2026 [So deployst du eine VitePress-Website 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt](https://pethost.dev/de/blog/deploy-vitepress-site/) Eine VitePress-Website mit einem Befehl deployen: pethost deploy schreibt das Dockerfile, baut die Website und liefert sie per HTTPS aus, für 9,99 € im Monat.
- 10. Oktober 2026 [So deployst du eine Eleventy-Website 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt](https://pethost.dev/de/blog/deploy-eleventy-site/) Eine Eleventy-Website (11ty) mit einem Befehl deployen: pethost deploy schreibt das Dockerfile, baut _site und liefert es per HTTPS aus, für 9,99 € im Monat.
- 25. September 2026 [Hosting-Anbieter mit offiziellem MCP-Server 2026: Deploy, Logs und Rollback im Vergleich](https://pethost.dev/de/blog/hosting-with-mcp-server/) 18 von 19 Hostern haben 2026 einen offiziellen MCP-Server, zwei ein Rollback-Tool. Pethosts Tools deployen, lesen Logs, rollen zurück und stellen wieder her.
- 16. September 2026 [Hosting für KI-Coding-Agenten 2026: Claude Code oder Codex selbst in Produktion deployen und debuggen lassen](https://pethost.dev/de/blog/hosting-for-ai-coding-agents/) Damit Claude Code oder Codex allein in Produktion deployen und debuggen, muss das Hosting dem Agenten fünf Dinge geben. Pethost tut das, ab 9,99 € im Monat.

[Alle Artikel](https://pethost.dev/de/blog/) · [Über Pethost](https://pethost.dev/about/) · [Preise](https://pethost.dev/de/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Vorlagen](https://pethost.dev/de/templates/)
- [Über uns](https://pethost.dev/about/)
- [Doku](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/de/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [AGB](https://pethost.dev/terms/)
- [Datenschutz](https://pethost.dev/privacy/)
- [Erstattung](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Datenbanken

- [Postgres](https://pethost.dev/de/postgres/)

Vergleiche

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/de/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/de/blog/coolify-cloud-vs-dokploy-cloud/)
- [Railway vs Render vs Fly.io Preise](https://pethost.dev/de/blog/railway-vs-render-vs-fly-io-pricing/)
- [Managed Hosting für Docker Compose](https://pethost.dev/de/blog/managed-docker-compose-hosting/)

Alternativen

- [Railway-Alternativen](https://pethost.dev/de/blog/railway-alternatives/)
- [Heroku-Alternativen](https://pethost.dev/de/blog/heroku-alternatives/)
- [Dokploy-Alternativen](https://pethost.dev/de/blog/dokploy-alternatives/)
- [Coolify-Alternativen](https://pethost.dev/de/blog/coolify-alternatives/)
- [Render-Alternativen](https://pethost.dev/de/blog/render-alternatives/)
- [Sliplane-Alternativen](https://pethost.dev/de/blog/sliplane-alternatives/)
