serveros.cznávody08

Nasazení aplikace z Gitu

V tarifu Aplikace Node / Bun nastavíme nasazení z Gitu za vás. Pushnete do hlavní větve a za chvíli je nová verze venku.

Jak aplikace u nás běží

  • Jako služba systemd pod vlastním uživatelem, s pamětí podle tarifu (1 GB RAM). Když spadne, systém ji sám znovu spustí.
  • Před ní stojí nginx jako reverse proxy. Řeší HTTPS s certifikátem Let's Encrypt a předává požadavky na port aplikace na 127.0.0.1.
  • Výstup aplikace (stdout a stderr) jde do logu, při potížích do něj nahlédneme spolu s vámi.

Co má aplikace splňovat

  • Port bere z proměnné PORT a poslouchá na 127.0.0.1, ne na 0.0.0.0.
  • V package.json má skript start, případně i build.
  • Má zamčené závislosti: package-lock.json, pnpm-lock.yaml nebo bun.lock.
  • Konfiguraci čte z proměnných prostředí. Tajné hodnoty nepatří do repozitáře, uložíme je přímo na server.
  • Ideálně má adresu pro kontrolu zdraví, třeba /health, která vrátí 200.
// Node.js (Express, Fastify i čisté http fungují stejně)
const port = Number(process.env.PORT ?? 3000);
server.listen(port, '127.0.0.1');

// Bun
Bun.serve({ port: Number(process.env.PORT ?? 3000), hostname: '127.0.0.1', fetch: app.fetch });

Jak probíhá nasazení

Typické nastavení vypadá takto, detaily přizpůsobíme vašemu projektu:

  1. Push do hlavní větve spustí pipeline v GitHub Actions nebo GitLab CI.
  2. Pipeline nainstaluje závislosti, spustí testy a sestaví aplikaci. Když testy neprojdou, nic se nenasadí.
  3. Sestavená verze se přes SSH, s klíčem určeným jen pro nasazení, nahraje na server vedle té současné.
  4. Služba se přepne na novou verzi a ověří se, že odpovídá. Předchozí verze zůstává na serveru, takže návrat zpět je otázka chvíle.

Co od vás potřebujeme

  • Přístup k repozitáři na GitHubu nebo GitLabu, abychom mohli nastavit pipeline.
  • Seznam proměnných prostředí a jejich hodnoty, předané bezpečnou cestou.
  • Verzi Node.js nebo Bunu, kterou aplikace potřebuje.
  • Doménu, na které má aplikace běžet (viz Jak nasměrovat doménu).

Databázi MySQL k aplikaci založíme na požádání, v klientském panelu je na to požadavek Nová databáze. Když aplikace potřebuje víc výkonu nebo vlastní služby, hodí se spravované VPS.