Blog · Poradniki wdrożeń
Jak wdrożyć aplikację TanStack Start w 2026: Nitro, skrypt start i jedno polecenie
Masz aplikację TanStack Start i chcesz ją mieć na serwerze Node pod adresem z HTTPS. Przewodnik TanStacka po hostingu wymaga do tego od aplikacji dwóch rzeczy: pluginu Nitro i skryptu start. Gdy oba są na miejscu, pethost deploy pisze Dockerfile, buduje aplikację i wypisuje jej adres. Aplikacja utworzona przez TanStack CLI za pierwszym razem zbudowała się i uruchomiła w 29 sekund.
- Dwie rzeczy w aplikacji: plugin Nitro, który dodaje
--deployment nitroprzy tworzeniu aplikacji, i"start": "node .output/server/index.mjs"wpackage.json. - Jedno polecenie:
pethost deployw katalogu zpackage.json. Pisze Dockerfile, który uruchamianpm run build, a potemnpm run start. - Port: serwer Nitro nasłuchuje na 3000. Pethost sam to znajduje i kieruje tam adres, przez HTTPS.
- Nieudany build niczego nie zmienia: poprzednia wersja dalej działa, a ekran pokazuje błąd builda.
- Cena: 9,99 € miesięcznie za 2 vCPU, 3 GB i 30 GB, na tę aplikację i każdy inny twój projekt. Nie ma darmowego planu.
Czego potrzebujesz, żeby wdrożyć aplikację TanStack Start w 2026
Trzech rzeczy: aplikacji, polecenia pethost i konta Pethost.
Aplikacja to tutaj ta, którą tworzy TanStack CLI, z Nitro jako celem wdrożenia:
npx @tanstack/cli@latest create my-app --deployment nitro
Flaga dodaje plugin Nitro do vite.config.ts. W aplikacji, którą już masz, dodaj go tak, jak mówi część przewodnika po hostingu poświęcona Nitro:
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()],
})
Potem dodaj do package.json skrypt, który uruchamia to, co zapisuje build. CLI zostawia tam build, ale nie start:
"scripts": {
"dev": "vite dev --port 3000",
"build": "vite build",
"start": "node .output/server/index.mjs"
}
Polecenie to jeden program, instalowany jedną linią. Wszystkie jego polecenia są w dokumentacji CLI.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
Konto potrzebuje planu. Jeśli nie jesteś zalogowany, pethost deploy otwiera przeglądarkę i cię loguje. Jeśli nie masz jeszcze planu, pokazuje, gdzie go wybrać, i czeka.
Wdróż aplikację TanStack Start jednym poleceniem
Przejdź do katalogu z package.json i uruchom pethost deploy. Oto cały ekran dla aplikacji utworzonej przez CLI:
$ 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
- Pyta o jedno O nazwę projektu, która jest pierwszym słowem jego adresu. Enter bierze nazwę katalogu.
- Maszyna nie znajduje nic do uruchomienia Katalog trafia prosto na twoją maszynę, bez
node_modules. Linia z krzyżykiem to jej odpowiedź: projekt działa z Dockerfile albo z pliku Compose, a w katalogu nie ma jeszcze żadnego z nich. - pethost pisze Dockerfile Przeczytał skrypty
buildistartwpackage.jsoni wgrywa katalog jeszcze raz. - Maszyna buduje i uruchamia aplikację Widzi, że serwer nasłuchuje na porcie 3000, i tam kieruje adres. Potem pethost sam odpytuje adres i wypisuje, co ten odpowiedział: 200.
Zapytaliśmy wdrożoną aplikację o to, o co pyta odwiedzający. Strona główna i /about odpowiedziały 200 z HTML-em renderowanym na serwerze, a adres bez trasy odpowiedział 404. Działający serwer zajął 43 MB pamięci.
Dockerfile, który pethost pisze dla TanStack Start
Oto cały plik, tak jak trafił do katalogu aplikacji:
# 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"]
Jego pierwsze linie mówią, co pethost przeczytał w twoim katalogu. Menedżer pakietów to ten, który wskazuje twój lockfile, a wersja Node to ta, którą podaje .nvmrc albo .node-version, a gdy nie ma żadnego z nich, Node 24. Build i start to twoje dwa skrypty, tak jak je napisałeś.
Bez skryptu start
Aplikację TanStack Start można zbudować pod kilka rodzajów hostingu, więc pethost nie zgaduje, jak uruchamia się twoja. Bez skryptu start nie pisze żadnego pliku i mówi dlaczego:
$ 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
Dodaj skrypt i uruchom polecenie jeszcze raz.
Zmień trasę i wdróż ponownie
Zmień trasę i uruchom to samo polecenie. Drugie wdrożenie trwało 7 sekund, bo maszyna przechowuje warstwy builda i cache npm:
$ 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
Gdy build się nie powiedzie
Zepsuliśmy plik trasy, żeby to zobaczyć. Ekran pokazuje log builda z błędem, a ostatnia linia mówi, co dostają odwiedzający. Oto ten ekran, skrócony do trzech linii:
$ 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.
Żeby wdrażać po każdym pushu, podłącz raz repozytorium poleceniem pethost github sam/my-app. Pethost czyta tylko repozytoria udostępnione jego GitHub App. pethost rollback przywraca wersję sprzed bieżącej, a twoja maszyna trzyma trzy wersje sprzed niej. Agent AI może zrobić to wszystko za ciebie przez serwer MCP Pethost: jak agent wdraża projekt i o niego dba.
Zmienne środowiskowe i własna domena
Zmienna, którą czyta funkcja serwerowa, to jedno polecenie. Pyta o wartość, nie pokazując jej, zapisuje ją w pliku .env projektu na maszynie, a kolejne wdrożenia ją zachowują:
pethost env set DATABASE_URL
Każda nazwa pod domeną twojego konta od razu jest adresem, z HTTPS. Domena, którą masz, to jedno polecenie i jeden rekord DNS:
pethost domain add app.example.com
Polecenie wypisuje rekord do utworzenia: CNAME z twojej nazwy na nazwę twojej maszyny. Certyfikat pojawia się sam, gdy tylko nazwa zacznie się rozwiązywać, i sam się odnawia.
Co dostajesz za tę cenę
Pethost kosztuje 9,99 € miesięcznie za wszystko, co hostujesz, na 2 vCPU, 3 GB pamięci i 30 GB dysku. Serwer aplikacji zajął 43 MB tej pamięci, więc na maszynie zostaje miejsce na jej bazę danych, workera i twoje inne projekty, na przykład aplikację React Router obok niej. Nie ma opłaty za projekt ani żadnych liczników: funkcje serwerowe nie są rozliczane za wywołanie.
- 9,99 € miesięcznie za wszystkie twoje projekty, bez liczników
- 29 s na zbudowanie i uruchomienie aplikacji za pierwszym razem
- 7 s na kolejne wdrożenie
Co jest już zrobione za ciebie: HTTPS z certyfikatami, które same się odnawiają, wdrożenia z GitHuba, nocne backupy trzymane przez 14 dni, SSH do każdego kontenera i każde żądanie policzone, z najczęściej odwiedzanymi ścieżkami i odsetkiem błędów z ostatnich 30 dni. Maszyna działa cały czas, więc funkcja serwerowa nigdy nie czeka na zimny start. Plany są w cenniku na stronie głównej.
Pethost to najlepszy wybór dla
- Programistów z full-stackową aplikacją React: serwer, jego funkcje serwerowe i baza danych na jednej maszynie, na jednym rachunku
- Programistów solo z kilkoma projektami pobocznymi, każdym pod własnym adresem
- Osób, za które wdraża agent: Claude Code albo Codex wystawia aplikację do sieci i czyta jej logi
- Wczesnych startupów, które chcą stałego miesięcznego kosztu, póki produkt jest mały
Poszukaj gdzie indziej, jeśli
- Twoja aplikacja potrzebuje kilku regionów albo autoskalowania
Pytania
Jak uruchomić TanStack Start na serwerze Node?
Dodaj plugin Nitro do vite.config.ts i skrypt "start": "node .output/server/index.mjs" do package.json, tak jak mówi przewodnik TanStacka po hostingu. npm run build zapisuje wtedy serwer w .output, a npm run start uruchamia go na porcie 3000.
Czy aplikacja TanStack Start potrzebuje Dockerfile do wdrożenia?
Na Pethost projekt działa z Dockerfile albo z pliku Compose, ale nie musisz go pisać: gdy package.json ma skrypty build i start, pethost deploy pisze Dockerfile i go wdraża. Plik zostaje w twoim katalogu i możesz go zmieniać.
Co się dzieje, gdy build TanStack Start nie powiedzie się przy wdrożeniu?
Dla odwiedzających nic się nie zmienia. Wdrożenie się zatrzymuje, ekran pokazuje log builda z błędem, a wersja, która działała wcześniej, działa dalej.
Czy mogę wdrażać aplikację TanStack Start z GitHuba po każdym pushu?
Tak. Wdróż raz katalog poleceniem pethost deploy, a potem uruchom pethost github owner/repository. Od tej pory każdy push do repozytorium sam się wdraża, a pethost rollback wraca do wcześniejszego commita.
Ile kosztuje hosting aplikacji TanStack Start na Pethost?
9,99 € miesięcznie za Starter, z 2 vCPU, 3 GB i 30 GB, bez opłaty za projekt i bez opłat za żądania: działają tam też twoje inne aplikacje, strony i bazy danych. Nie ma darmowego planu. Ceny są bez VAT.
Ekrany to wdrożenia aplikacji, którą zapisuje npx @tanstack/cli@latest create --deployment nitro, z TanStack Start 1.168.61, Nitro 3.0.260610-beta i pethost 0.2.1, na naszej testowej maszynie, która wcześniej niczego nie budowała. Konto na nich to przykładowe sam.
Opublikuj swoje projekty jeszcze dziś
Wdrażaj aplikacje, boty i bazy danych ze swojego agenta, z GitHuba lub w przeglądarce, tyle, ile się zmieści, w jednej stałej cenie. Nic liczonego za zużycie, nic doliczanego.