# Zveřejnění webu nebo aplikace

Váš VPS Pro poskytuje vaše weby a aplikace na jejich doméně, přes HTTP i HTTPS. Návštěvníci přicházejí na porty **80** a **443** vašeho serveru, pod názvem vašeho serveru; šifrování HTTPS vede od začátku do konce, až k vašemu serveru, kde je uložen váš certifikát.

## 1. Nasměrování domény na server

Tam, kde se spravuje zóna DNS vaší domény, vytvořte pro název svého serveru dva záznamy s adresami zobrazenými na jeho kartě, v sekci **VPS** vaší zákaznické zóny:

| Typ    | Název                                | Hodnota                      |
| ------ | ------------------------------------ | ---------------------------- |
| `A`    | `app` (nebo `@` pro samotnou doménu) | **Adresa IPv4** z vaší karty |
| `AAAA` | `app` (nebo `@`)                     | **Adresa IPv6** z vaší karty |

Název pod `vps.simafri.cloud` už funguje: není třeba nic vytvářet.

Pokud zónu DNS vaší domény spravuje Simafri, náš tým tyto záznamy nastaví za vás: napište nám. Před přepnutím webu, který už běží, nás také požádejte o snížení doby platnosti (TTL) záznamu: přepnutí se pak rozšíří během několika minut.

Ověření z vašeho počítače:

```
dig +short A app.moje-firma.cz

dig +short AAAA app.moje-firma.cz
```

## 2. Instalace webového serveru

Váš webový server naslouchá na portu **80** pro HTTP a na portu **443** pro HTTPS. Dvě běžné volby:

* **Caddy**, který váš certifikát HTTPS získá a obnovuje sám;
* **Nginx** nebo **Apache**, s **Certbotem** pro certifikát.

### S Caddy

```
apt install caddy
```

Pak v `/etc/caddy/Caddyfile` pro statický web:

```
app.moje-firma.cz {

    root * /var/www/app

    file_server

}
```

nebo pro aplikaci, která naslouchá na portu 3000:

```
app.moje-firma.cz {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy` a váš web odpovídá přes HTTPS: Caddy získal certifikát a sám ho bude obnovovat.

### S Nginx a Certbotem

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

Vytvořte web v `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.moje-firma.cz;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivujte ho a pak požádejte o certifikát:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.moje-firma.cz
```

Certbot nainstaluje certifikát Let's Encrypt, přidá naslouchání na portu 443 a naplánuje jeho automatické obnovování. `certbot renew --dry-run` ověří, že je obnovení připravené.

## 3. Nepřetržitý chod aplikace

Aplikaci v Node.js, Pythonu, Go nebo Javě, která běží nepřetržitě, svěřte **systemd**: spustí se se serverem a sama se restartuje, pokud se zastaví. Příklad v `/etc/systemd/system/app.service`:

```
[Unit]

Description=Moje aplikace

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    # sledovat její logy
```

PM2 pro Node.js, Gunicorn nebo Uvicorn pro Python, případně Docker Compose plní stejnou roli, pokud jim dáváte přednost.

## 4. Vaše databáze

PostgreSQL, MySQL, MariaDB, Redis nebo MongoDB nainstalujete na svůj server správcem balíčků, nebo z oficiálního repozitáře vydavatele, chcete-li nejnovější verzi:

```
apt install postgresql
```

Nechte databázi naslouchat na `localhost`: vaše aplikace se k ní připojuje přímo na serveru. Pro správu z vašeho počítače použijte tunel SSH:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.moje-firma.cz
```

Váš nástroj (DBeaver, pgAdmin, TablePlus) se pak připojí k `localhost:5432`.

## Více domén

Váš server odpovídá pod svým názvem, stanoveným při objednávce. Chcete-li na stejném VPS Pro poskytovat další doménu nebo subdoménu, napište podpoře a uveďte názvy, které chcete přidat: náš tým je připojí k vašemu serveru, potom vytvoříte jejich záznamy DNS jako v kroku 1 a přidáte jejich blok do svého webového serveru.

## Časté otázky

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

Zkontrolujte v tomto pořadí: vaše záznamy `A` a `AAAA` ukazují na adresy z vaší karty (`dig`), váš webový server naslouchá na portech 80 a 443 (`ss -tlnp`) a certifikát skutečně pokrývá tento název (`certbot certificates`). Certifikát lze získat, jakmile název ukazuje na váš server: po rozšíření DNS znovu spusťte Certbot, nebo znovu načtěte Caddy.

### Můj web vůbec neodpovídá.

Na serveru `curl -I http://localhost` ukáže, zda váš webový server odpovídá. `systemctl status nginx` (nebo `caddy`, případně vaše služba) a jeho logy prozradí, proč se zastavil. Popište podpoře, co pozorujete: Komplexní podpora s vámi stanoví diagnózu.

### Mohu nainstalovat WordPress, Laravel nebo Symfony?

Ano: nainstalujte PHP-FPM, svou databázi a webový server a pak svou aplikaci, jako na kterémkoli linuxovém serveru. Komplexní podpora vám krok za krokem doporučí nastavení odpovídající vašemu projektu.
