Node.js to nie framework, tylko runtime JavaScriptu po stronie serwera - w odróżnieniu od Next.js czy Nuxt, stack "Node.js" w katalogu Saplo nie narzuca żadnej konwencji ani struktury projektu. Piszesz własny serwer HTTP w Expressie, Fastify, Koa, NestJS albo bez żadnego frameworka, a Saplo pilnuje tylko, żeby proces działał cały czas i wracał po awarii. To najbardziej uniwersalna opcja dla backendu w katalogu: pasuje do API pod aplikację mobilną, bota na Discordzie czy serwera websocketów, jeśli tylko projekt sam wystawia port HTTP.
Dla kogo jest Node.js na Saplo
Zanim zaczniesz instalację, sprawdź, czy to dobry wybór dla Twojego projektu:
- API pod aplikację mobilną albo frontend SPA - wystawiasz REST albo GraphQL, a frontend (React, Vue) stawiasz osobno z tego samego katalogu,
- bot albo integracja działająca w tle - webhooki, boty Discorda i Slacka, workery kolejek,
- backend na websockety - nginx po stronie Saplo przepuszcza nagłówek
Upgrade, więc długo trzymane połączenia działają bez dodatkowej konfiguracji, - masz gotowy projekt Node.js i chcesz wdrożeń z
git push- podpinasz repozytorium raz, a Saplo buduje i restartuje proces automatycznie.
Jeśli Twój projekt jest w konkretnym frameworku z własną konwencją builda i startu (Next.js, Nuxt), wybierz w katalogu jego dedykowany stack - dostaniesz gotową konfigurację bez ręcznego wskazywania komendy startowej.
Wymagania
Żeby postawić Node.js na Saplo, potrzebujesz:
- Boxa w planie L lub wyższym - proces Node trzymany jest stale w pamięci, więc potrzebuje więcej zapasu RAM niż strona statyczna,
- minimum 512 MB wolnego RAM i 3 GB miejsca na dysku pod sam proces aplikacji,
- domeny albo subdomeny
*.saploapp.plw cenie każdego planu, - repozytorium Git, jeśli chcesz korzystać z automatycznego wdrażania (opcjonalne na start, aplikację możesz też wgrać archiwum
.zipprzez panel).
Instalacja krok po kroku
- W panelu Saplo wejdź w Katalog aplikacji i wybierz Node.js (kategoria "Aplikacje").
- Wskaż Box w planie L lub wyższym oraz nazwę aplikacji - z niej powstaje domyślna subdomena.
- Wybierz wersję Node.js (18, 20 albo 22, domyślnie 20) i zatwierdź instalację.
- Silnik tworzy minimalny starter Express -
package.jsoniserver.jsz pojedynczym endpointem - i uruchamia go przez supervisora na porcie 3000, a nginx proxy'uje ruch z domeny na ten port. - Po zakończeniu instalacji domena z kroku 2 pokazuje działający starter - od tego momentu zastępujesz go własnym kodem przez git deploy.
Wdrożenie własnego kodu przez Git
- W szczegółach aplikacji znajdź sekcję Git / CI-CD i kliknij "Połącz GitHub", potwierdź instalację aplikacji "Saplo Deploy" i wskaż repozytorium z projektem Node.
- W katalogu głównym repozytorium umieść plik
saplo.yaml. W odróżnieniu od stacków z konkretną konwencją (Next.js, Nuxt), stack Node.js nie ma domyślnej komendy startu - musisz jawnie wskazaćstart.command, inaczej build się powiedzie, ale proces się nie uruchomi. - Zacommituj i wypchnij plik na gałąź produkcyjną (domyślnie
main). - Każdy kolejny
git pushna tę gałąź uruchamia build i restart procesu, status widzisz w zakładce Deploymenty. - Domyślny port aplikacji to 3000 - nginx kieruje na niego ruch z 80/443, dopóki nie zmienisz go w
start.port.
Przykład minimalnego pliku saplo.yaml dla Node.js:
name: moj-projekt
stack: node
runtime:
node: "22"
build:
install: npm ci
start:
command: node index.js
port: 3000
env:
NODE_ENV: production
Node.js na Saplo kontra alternatywy
| Render / Railway | Własny VPS | Node.js na Saplo | |
|---|---|---|---|
| Model rozliczenia | zużycie zasobów, rośnie z ruchem | stały koszt serwera, konfiguracja ręczna | stały koszt Boxa |
| Wdrożenia z Gita | tak, natywnie | trzeba złożyć samemu (CI/CD) | tak, git push na gałąź produkcyjną |
| Restart po awarii | w pełni zarządzane | pm2 albo systemd ręcznie | usługa zarządzana z auto-restartem |
| Dowolny framework HTTP | tak | tak | tak, bez narzuconej konwencji |
Najczęstsze pytania
Czy dowolny framework - Express, Fastify, NestJS - zadziała?
Tak, stack Node.js nie narzuca frameworka. Wymaga tylko, żeby proces nasłuchiwał na porcie wskazanym w start.port (domyślnie 3000).
Co się stanie, jeśli zapomnę o start.command w saplo.yaml?
Build się powiedzie, ale proces się nie uruchomi - błąd zobaczysz w zakładce Deploymenty. Dodaj start.command i wypchnij nową wersję.
Czy websockety działają przez nginx Saplo?
Tak, reverse proxy przepuszcza nagłówek Upgrade, więc długo trzymane połączenia WebSocket działają bez dodatkowej konfiguracji.
Czy mogę mieć bazę danych obok aplikacji?
Tak, bazę (Postgres, MySQL, Redis) stawiasz jako osobną aplikację z katalogu i podpinasz zmienną połączenia w env swojego saplo.yaml.
Czy dostanę SSL i własną domenę?
Tak, certyfikat SSL jest automatyczny, a domenę albo subdomenę *.saploapp.pl masz w cenie każdego planu.
Node.js na Saplo stawiasz od zera do działającej domeny w kilka minut, a każdy kolejny git push restartuje proces z nową wersją bez Twojego udziału. Jeśli Twój projekt korzysta z konkretnego frameworka z własną konwencją (Next.js, Nuxt), sprawdź w tym samym katalogu jego dedykowany stack.