Jak postawić Node.js na Saplo (własny backend z repozytorium)

Node.js to nie framework, tylko runtime - stack "Node.js" w katalogu Saplo nie narzuca żadnej konwencji, sam piszesz Express, Fastify, Koa, NestJS albo własny serwer HTTP. Saplo pilnuje tylko, żeby proces działał cały czas i wracał po awarii. Poniżej jak to postawić i wdrożyć własny kod przez `git push`.

Grzegorz Kalmus· ·47 wyświetleń

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.pl w cenie każdego planu,
  • repozytorium Git, jeśli chcesz korzystać z automatycznego wdrażania (opcjonalne na start, aplikację możesz też wgrać archiwum .zip przez panel).

Instalacja krok po kroku

  1. W panelu Saplo wejdź w Katalog aplikacji i wybierz Node.js (kategoria "Aplikacje").
  2. Wskaż Box w planie L lub wyższym oraz nazwę aplikacji - z niej powstaje domyślna subdomena.
  3. Wybierz wersję Node.js (18, 20 albo 22, domyślnie 20) i zatwierdź instalację.
  4. Silnik tworzy minimalny starter Express - package.json i server.js z pojedynczym endpointem - i uruchamia go przez supervisora na porcie 3000, a nginx proxy'uje ruch z domeny na ten port.
  5. 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

  1. 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.
  2. 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.
  3. Zacommituj i wypchnij plik na gałąź produkcyjną (domyślnie main).
  4. Każdy kolejny git push na tę gałąź uruchamia build i restart procesu, status widzisz w zakładce Deploymenty.
  5. 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.