# Nasadenie webu alebo aplikácie

Váš VPS Pro poskytuje vaše weby a aplikácie na ich doménovom mene, cez HTTP aj HTTPS. Návštevníci prichádzajú na porty **80** a **443** vášho servera, pod názvom vášho servera; šifrovanie HTTPS ide od začiatku do konca, až po váš server, kde je uložený váš certifikát.

## 1. Nasmerovanie domény na server

Tam, kde sa spravuje zóna DNS vašej domény, vytvorte pre názov svojho servera dva záznamy s adresami zobrazenými na jeho karte, v sekcii **VPS** vašej zákazníckej zóny:

| Typ    | Názov                                | Hodnota                       |
| ------ | ------------------------------------ | ----------------------------- |
| `A`    | `app` (alebo `@` pre samotnú doménu) | **Adresa IPv4** z vašej karty |
| `AAAA` | `app` (alebo `@`)                    | **Adresa IPv6** z vašej karty |

Názov pod `vps.simafri.cloud` už funguje: nie je potrebné nič vytvárať.

Ak zónu DNS vašej domény spravuje Simafri, tieto záznamy za vás nastaví náš tím: napíšte nám. Pred prepnutím webu, ktorý už je online, nás požiadajte aj o zníženie doby platnosti (TTL) záznamu: prepnutie sa potom rozšíri za pár minút.

Overenie z vášho počítača:

```
dig +short A app.moja-firma.sk

dig +short AAAA app.moja-firma.sk
```

## 2. Inštalácia webového servera

Váš webový server počúva na porte **80** pre HTTP a na porte **443** pre HTTPS. Dve bežné možnosti:

* **Caddy**, ktorý sám získa a obnovuje váš certifikát HTTPS;
* **Nginx** alebo **Apache**, s **Certbot** na certifikát.

### S Caddy

```
apt install caddy
```

Potom v `/etc/caddy/Caddyfile` pre statický web:

```
app.moja-firma.sk {

    root * /var/www/app

    file_server

}
```

alebo pre aplikáciu, ktorá počúva na porte 3000:

```
app.moja-firma.sk {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy` a váš web odpovedá cez HTTPS: Caddy získal certifikát a bude ho sám obnovovať.

### S Nginx a Certbot

```
apt install nginx certbot python3-certbot-nginx
```

Vytvorte web v `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.moja-firma.sk;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivujte ho a potom si vyžiadajte certifikát:

```
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/

nginx -t && systemctl reload nginx

certbot --nginx -d app.moja-firma.sk
```

Certbot nainštaluje certifikát Let's Encrypt, pridá počúvanie na porte 443 a naplánuje jeho automatické obnovovanie. `certbot renew --dry-run` overí, že obnovovanie je pripravené.

## 3. Nepretržitý chod aplikácie

Aplikáciu v Node.js, Pythone, Go alebo Jave, ktorá beží nepretržite, zverte **systemd**: spustí sa so serverom a sama sa reštartuje, ak sa zastaví. Príklad v `/etc/systemd/system/app.service`:

```
[Unit]

Description=Moja aplikácia

After=network.target



[Service]

WorkingDirectory=/srv/app

ExecStart=/usr/bin/node server.js

Restart=always

Environment=NODE_ENV=production

User=www-data



[Install]

WantedBy=multi-user.target
```

```
systemctl daemon-reload

systemctl enable --now app

journalctl -u app -f    # sledovať jej logy
```

PM2 pre Node.js, Gunicorn alebo Uvicorn pre Python, prípadne Docker Compose plnia rovnakú úlohu, ak ich uprednostňujete.

## 4. Vaša databáza

PostgreSQL, MySQL, MariaDB, Redis alebo MongoDB nainštalujete na server správcom balíkov alebo z oficiálneho repozitára vydavateľa, ak chcete najnovšiu verziu:

```
apt install postgresql
```

Nechajte databázu počúvať na `localhost`: vaša aplikácia ju dosiahne priamo na serveri. Ak ju chcete spravovať zo svojho počítača, použite tunel SSH:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.moja-firma.sk
```

Váš nástroj (DBeaver, pgAdmin, TablePlus) sa potom pripojí na `localhost:5432`.

## Viac domén na jednom serveri

Váš server odpovedá pod svojím názvom, stanoveným pri objednávke. Ak chcete na tom istom VPS Pro poskytovať ďalšiu doménu alebo subdoménu, napíšte podpore a uveďte názvy, ktoré chcete pridať: náš tím ich pripojí k vášmu serveru, potom vytvoríte ich záznamy DNS ako v kroku 1 a pridáte ich blok do konfigurácie svojho webového servera.

## Časté otázky

### Môj web zobrazuje chybu certifikátu.

Skontrolujte v tomto poradí: vaše záznamy `A` a `AAAA` ukazujú na adresy z vašej karty (`dig`), váš webový server počúva na portoch 80 a 443 (`ss -tlnp`) a certifikát pokrýva tento názov (`certbot certificates`). Certifikát sa dá získať, až keď názov ukazuje na váš server: po rozšírení DNS spustite Certbot znova alebo znova načítajte Caddy.

### Môj web vôbec neodpovedá.

Na serveri `curl -I http://localhost` ukáže, či váš webový server odpovedá. `systemctl status nginx` (alebo `caddy`, alebo vaša služba) a jeho logy prezradia, prečo sa zastavil. Opíšte podpore, čo pozorujete: Komplexná podpora s vami stanoví diagnózu.

### Môžem nainštalovať WordPress, Laravel alebo Symfony?

Áno: nainštalujte PHP-FPM, databázu a webový server, potom svoju aplikáciu, ako na každom linuxovom serveri. Komplexná podpora vám krok za krokom poradí nastavenia vhodné pre váš projekt.
