> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.diversity.cz/llms.txt
> Use this file to discover all available pages before exploring further.

# Node.js aplikace

Náš panel umožňuje snadné nasazení Node.js aplikací. Každá aplikace běží ve svém vlastním kontejneru, což zajišťuje vysokou bezpečnost a stabilitu.

<Note>
  Node.js aplikace jsou dostupné u balíčků **Business a Ultimate**, nebo v rámci individuálních Managed řešení.
</Note>

## Vytvoření webové stránky

Před nasazením samotné aplikace musíte vytvořit prostor, kde poběží.

1. Přihlaste se do svého ovládacího panelu.
2. Klikněte na **"Weby"** a poté na **"Přidat web"**.
3. Zadejte svou doménu.
4. V hlavní sekci vyberte z nabídky: **Začít od nuly**.

## Konfigurace Node.js

Jakmile je web vytvořen, rozklikněte jej a přejděte na záložku **"Node.js"** která se nachází v sekci **"Pokročilé"**. Po kliknutí na "**Nasazení aplikace"** uvidíte následující nastavení:

<Frame>
  <img src="https://mintcdn.com/diversity/j7-86VLE9r5PZk78/cs/img/img28.png?fit=max&auto=format&n=j7-86VLE9r5PZk78&q=85&s=81e9fd37751c396e67bc5e7a19682d1b" alt="Img28" width="1543" height="639" data-path="cs/img/img28.png" />
</Frame>

* **Node Version**: Vyberte požadovanou verzi Node.js (doporučujeme používat **LTS** verze pro maximální stabilitu).
* **Pracovní adresář**: Cesta k hlavní složce aplikace (obvykle `/public_html` nebo kořenový adresář).
* **Spouštěcí příkaz**: Příkaz, který aplikaci spouští (např. `npm start`).
* **Port**: Port, na kterém běží vaše aplikace uvnitř kontejneru (obvykle `3000`).

<Frame>
  <img src="https://mintcdn.com/diversity/j7-86VLE9r5PZk78/cs/img/img29.png?fit=max&auto=format&n=j7-86VLE9r5PZk78&q=85&s=5c17746d7137c447e99ffd616bf04c77" alt="Img29" width="1195" height="997" data-path="cs/img/img29.png" />
</Frame>

Panel bude přesměrovávat požadavky na konkrétní cestu (nebo celý web) do vaší aplikace Node.js běžící uvnitř kontejneru webu.

Jelikož každý kontejner webu má izolovaný síťový stack, stačí, aby byl port jedinečný v rámci daného webu. Nelze použít port menší než 1024 nebo větší než 65535.

<Note>
  Náš systém automaticky směruje provoz na HTTPS port. Což znamená, že po nasazení aplikace můžete jít rovnou na instalovanou doménu a zobrazit si web bez nutnosti zadávání portu.
</Note>

## Nahrání kódu a instalace modulů

Své soubory nahrajte pomocí **FTP** nebo přes **File Manager** (viz návod na FTP). Poté musíte nainstalovat závislosti (balíčky) definované ve vašem `package.json`.

<Steps>
  <Step title="Nahrání souborů">
    Nahrajte svůj kód do zvoleného "Application Root". Ujistěte se, že nahráváte i soubor `package.json`.
  </Step>

  <Step title="NPM Install">
    V panelu u nastavení Node.js najdete tlačítko **"Run npm install"**. To automaticky stáhne všechny potřebné moduly do složky `node_modules`.
  </Step>

  <Step title="Spuštění aplikace">
    Klikněte na tlačítko **"Start"** nebo **"Restart"**. Aplikace se spustí na pozadí jako služba.
  </Step>
</Steps>

## Provozní režimy (Automatic vs. Manual)

V našem panelu si můžete vybrat ze dvou režimů běhu aplikace podle toho, zda aplikaci ladíte, nebo už je plně v provozu.

### 1. Automatický režim (Doporučeno pro produkci)

Tento režim je navržen pro stabilní běh vašeho projektu.

* **Automatický start:** Aplikace se spustí sama s vybranou verzí Node.js.
* **Restart při pádu:** Pokud aplikace z jakéhokoliv důvodu skončí (chyba, pád serveru), náš panel ji okamžitě restartuje.
* **Logování:** Výstupy `Stdout` a `Stderr` se ukládají do souboru v domovském adresáři ve formátu `persistent_app_ID.log`. Tento log se promazává (cykluje) při každém startu aplikace.
* **Jak restartovat:** Pokud potřebujete aplikaci vynuceně restartovat, přepněte režim z *Automatic* na *Manual* a hned zase zpět.

### 2. Manuální režim (Pro vývoj a ladění)

V tomto režimu panel aplikaci nehlídá ani nespouští.

* **Ruční ovládání:** Pokud aplikace spadne, zůstane vypnutá, dokud ji sami nespustíte.
* **Bez logů:** V tomto režimu se negenerují automatické logy do souboru.
* **Proxy:** I v manuálním režimu bude náš server nadále přesměrovávat požadavky na vaši aplikaci (pokud je to povoleno).

## Správa a logování

Pokud vaše aplikace nefunguje podle očekávání, nejužitečnější informace najdete v **.log** souborech.

* **App Logs**: Přímo v panelu můžete sledovat konzoli své aplikace. To je klíčové pro ladění chyb (např. chybějící moduly nebo špatné připojení k databázi).
* **Automatický restart**: Pokud aplikace spadne, systém se ji pokusí automaticky restartovat (pokud je nastavena na **Automaticky - Produkční režim**).

## Tipy pro produkci

* **Package-lock.json**: Vždy nahrávejte i tento soubor, abyste zajistili, že se v produkci nainstalují přesně ty samé verze balíčků, které máte u sebe v počítači.
* **Statické soubory**: Pokud vaše aplikace slouží i statické soubory (obrázky, CSS), doporučujeme pro optimální výkon použít Nginx jako reverzní proxy (již nastaveno v základu panelu).

<Warning>
  Nikdy nenahrávejte složku `node_modules` přímo přes FTP. Je to pomalé a může to způsobit nekompatibilitu mezi operačními systémy. Vždy instalujte pomocí příkazu přímo z SSH.
</Warning>
