Polski

Blog · Poradniki wdrożeń

Jak wdrożyć aplikację React Router w 2026: Dockerfile z szablonu, jedno polecenie i HTTPS

Zespół Pethost · · Zaktualizowano · 6 min czytania

Masz aplikację z create-react-router, renderuje się na serwerze, a ty chcesz ją mieć w sieci pod adresem z HTTPS. Domyślny szablon ma już Dockerfile, a na Pethost projekt nie potrzebuje niczego więcej: uruchom pethost deploy w katalogu aplikacji. Za pierwszym razem szablon zbudował się i uruchomił w 11 sekund, a pod nowym adresem odpowiedział 200.

W skrócie
  • Jedno polecenie: pethost deploy w katalogu, który utworzył create-react-router. Do aplikacji nic nie dochodzi i nie wypełniasz żadnych ustawień builda.
  • Co robi: wgrywa katalog, buduje na twojej maszynie Dockerfile z samego szablonu i uruchamia react-router-serve.
  • Port: serwer nasłuchuje na 3000. Pethost sam to znajduje i kieruje tam adres, przez HTTPS.
  • Adres: https://my-app.yourname.pethost.app od razu. Twoja własna domena to jeden rekord DNS.
  • 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ę React Router w 2026

Trzech rzeczy: aplikacji, polecenia pethost i konta Pethost.

Aplikacja to tutaj domyślny szablon, z renderowaniem na serwerze i Tailwind CSS:

npx create-react-router@latest my-app

Zostawia package.json, package-lock.json, katalog app/ i Dockerfile. Jego skrypty to te, które uruchamia Dockerfile:

"scripts": {
  "build": "react-router build",
  "dev": "react-router dev",
  "start": "react-router-serve ./build/server/index.js",
  "typecheck": "react-router typegen && tsc"
}

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ę React Router jednym poleceniem

Przejdź do katalogu aplikacji i uruchom pethost deploy. Oto cały ekran, dla domyślnego szablonu:

$ cd my-app
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 22 files, 174 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 11 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. Pyta o jedno O nazwę projektu, która jest pierwszym słowem jego adresu. Enter bierze nazwę katalogu.
  2. Katalog trafia na twoją maszynę Bez node_modules: build instaluje je tam, z package-lock.json.
  3. Maszyna buduje Dockerfile To plik samego szablonu, niezmieniony. Linia pod spodem mówi o jedynej rzeczy, którą dodała maszyna: pliku Compose wokół Dockerfile, z usługą o nazwie app.
  4. Aplikacja startuje i zostaje odpytana Maszyna widzi, że serwer nasłuchuje na 3000, i kieruje tam adres. Potem pethost sam odpytuje adres i wypisuje, co odpowiedział: 200.

Zapytaliśmy wdrożony szablon o to, o co pyta odwiedzający. Strona główna odpowiedziała 200 z HTML-em wyrenderowanym na serwerze, /favicon.ico odpowiedział 200, a adres bez trasy odpowiedział 404 z własną stroną błędu React Routera.

Plik .pethost mówi, którym projektem jest ten katalog. Zrób z nim commit, a kolejne wdrożenie o nic nie zapyta.

Dockerfile szablonu React Router

Oto plik, który zapisał create-react-router, a maszyna zbudowała go tak, jak jest:

FROM node:24-alpine AS development-dependencies-env
COPY . /app
WORKDIR /app
RUN npm ci

FROM node:24-alpine AS production-dependencies-env
COPY ./package.json package-lock.json /app/
WORKDIR /app
RUN npm ci --omit=dev

FROM node:24-alpine AS build-env
COPY . /app/
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
WORKDIR /app
RUN npm run build

FROM node:24-alpine
COPY ./package.json package-lock.json /app/
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
COPY --from=build-env /app/build /app/build
WORKDIR /app
CMD ["npm", "run", "start"]

Trzy rzeczy, które warto o nim wiedzieć na Pethost:

Aplikacja bez Dockerfile nie utknie. W katalogu, w którym nie ma ani Dockerfile, ani pliku Compose, pethost deploy pisze Dockerfile dla rodzajów projektów, które zna, tak jak dla aplikacji Nuxt, a przy każdym innym katalogu mówi, dlaczego żadnego nie napisał.

Zmień trasę i wdróż ponownie

Zmień trasę i uruchom to samo polecenie. Drugie wdrożenie szablonu zajęło 6 sekund, bo maszyna przechowuje warstwy builda:

$ pethost deploy
my-app (.pethost)
✓ Packed 23 files · uploaded · built and started in 6 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

Żeby zamiast tego wdrażać po każdym pushu, podłącz raz repozytorium:

pethost github sam/my-app          # from now on, every push deploys itself

Pethost czyta tylko repozytoria udostępnione jego GitHub App. Jeśli wdrożenie pójdzie źle, pethost rollback przywraca wersję sprzed niego, a twoja maszyna trzyma trzy wersje sprzed bieżącej. 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ą loader albo action czyta na serwerze, 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 SESSION_SECRET

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. pethost password stawia stronę z hasłem przed całą aplikacją, gdy nie jest jeszcze publiczna.

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 szablonu zajął 79 MB tej pamięci, więc na maszynie zostaje miejsce na bazę danych aplikacji, workera i twoje inne projekty. Nie ma opłaty za projekt ani żadnych liczników: renderowanie na serwerze nie jest rozliczane za żądanie, a pracowity miesiąc kosztuje tyle samo co spokojny.

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 pierwsze żądanie z rana nigdy nie czeka na zimny start. Plany są w cenniku na stronie głównej.

Każdy projekt podpisany. Siedem projektów na jednej maszynie Starter: aplikacje z ich adresami i żądaniami z ostatniej doby, bazy danych z aplikacjami, które z nich korzystają.
Strona główna panelu Pethost: CPU, pamięć i dysk maszyny oraz jej projekty jako karty.

Pethost to najlepszy wybór dla

  • Programistów z aplikacją React full-stack: aplikacja renderowana na serwerze i jej 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

Gdzie hostować aplikację React Router z renderowaniem na serwerze?

U każdego dostawcy hostingu, który uruchamia serwer Node albo kontener Docker. Na Pethost uruchamiasz pethost deploy w katalogu aplikacji: maszyna buduje Dockerfile z szablonu, uruchamia react-router-serve i serwuje aplikację przez HTTPS.

Czy trzeba zmieniać Dockerfile, który pisze create-react-router?

Nie. Maszyna zbudowała Dockerfile domyślnego szablonu tak, jak jest. Nie ma on linii EXPOSE i jej nie potrzebuje: Pethost sam znajduje port, na którym nasłuchuje serwer, czyli 3000.

Czy mogę wdrażać aplikację React Router z GitHuba po każdym pushu?

Tak. Wdróż katalog raz przez pethost deploy, a potem uruchom pethost github owner/repository. Od tej chwili każdy push do repozytorium sam się wdraża, a pethost rollback wraca do wcześniejszego commita.

Jak ustawić zmienne środowiskowe w aplikacji React Router?

Uruchom pethost env set NAME w katalogu aplikacji. Polecenie pyta o wartość, nie pokazując jej, i zapisuje ją w pliku .env projektu na maszynie, który czyta serwer, a każde kolejne wdrożenie zachowuje.

Ile kosztuje hosting aplikacji React Router na Pethost?

9,99 € miesięcznie za plan Starter, z 2 vCPU, 3 GB i 30 GB, bez opłaty za projekt i bez opłaty za żądanie: twoje inne aplikacje, strony i bazy danych też tam działają. Nie ma darmowego planu. Ceny są bez VAT.

Ekrany to wdrożenia domyślnego szablonu, który zapisuje create-react-router, z React Router 8.4.0 i pethost 0.2.1, na naszej maszynie testowej. Konto na nich to przykładowe sam.

  1. React Router: instalacja
  2. React Router: wdrażanie
  3. React Router: oficjalne szablony
  4. pethost, narzędzie wiersza poleceń Pethost

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.

Hostuj wszystko za 9,99 €/mies.