# Objava stranice ili aplikacije

Vaš VPS Pro poslužuje vaše stranice i aplikacije na njihovu nazivu domene, preko HTTP-a i HTTPS-a. Posjetitelji stižu na portove **80** i **443** vašeg poslužitelja, pod nazivom vašeg poslužitelja; HTTPS šifriranje ide s kraja na kraj, sve do vašeg poslužitelja, gdje se nalazi vaš certifikat.

## 1. Usmjeravanje domene na poslužitelj

Ondje gdje se upravlja DNS zonom vaše domene izradite dva zapisa za naziv svojeg poslužitelja, s adresama prikazanima na njegovoj kartici, u odjeljku **VPS** vašeg korisničkog područja:

| Vrsta  | Naziv                          | Vrijednost                     |
| ------ | ------------------------------ | ------------------------------ |
| `A`    | `app` (ili `@` za samu domenu) | **IPv4 adresa** s vaše kartice |
| `AAAA` | `app` (ili `@`)                | **IPv6 adresa** s vaše kartice |

Naziv pod `vps.simafri.cloud` već radi: ne treba ništa izrađivati.

Kad DNS zonom vaše domene upravlja Simafri, naš tim postavlja te zapise umjesto vas: pišite nam. Prije prebacivanja stranice koja je već objavljena, zamolite nas i da smanjimo vrijeme trajanja (TTL) zapisa: prebacivanje se tada proširi za nekoliko minuta.

Za provjeru sa svojeg računala:

```
dig +short A app.moja-tvrtka.hr

dig +short AAAA app.moja-tvrtka.hr
```

## 2. Instalacija web poslužitelja

Vaš web poslužitelj sluša na portu **80** za HTTP i na portu **443** za HTTPS. Dva uobičajena izbora:

* **Caddy**, koji sam dobiva i obnavlja vaš HTTPS certifikat;
* **Nginx** ili **Apache**, s **Certbotom** za certifikat.

### S Caddyjem

```
apt install caddy
```

Zatim, u `/etc/caddy/Caddyfile`, za statičnu stranicu:

```
app.moja-tvrtka.hr {

    root * /var/www/app

    file_server

}
```

ili za aplikaciju koja sluša na portu 3000:

```
app.moja-tvrtka.hr {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy` i vaša stranica odgovara preko HTTPS-a: Caddy je dobio certifikat i sam će ga obnavljati.

### S Nginxom i Certbotom

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

Izradite stranicu u `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.moja-tvrtka.hr;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivirajte je, zatim zatražite certifikat:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.moja-tvrtka.hr
```

Certbot postavlja certifikat Let's Encrypt, dodaje slušanje na portu 443 i zakazuje njegovu automatsku obnovu. `certbot renew --dry-run` provjerava je li obnova spremna.

## 3. Održavanje aplikacije u radu

Aplikacija u Node.js-u, Pythonu, Go-u ili Javi koja radi neprekidno povjerava se **systemd**-u: pokreće se s poslužiteljem i sama se ponovno pokreće ako se zaustavi. Primjer, u `/etc/systemd/system/app.service`:

```
[Unit]

Description=Moja aplikacija

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    # praćenje njezinih zapisa
```

PM2 za Node.js, Gunicorn ili Uvicorn za Python ili Docker Compose imaju istu ulogu ako vam više odgovaraju.

## 4. Vaša baza podataka

PostgreSQL, MySQL, MariaDB, Redis ili MongoDB instaliraju se na vaš poslužitelj upraviteljem paketa ili iz službenog repozitorija izdavača, za najnoviju verziju:

```
apt install postgresql
```

Neka vaša baza sluša na `localhost`: vaša joj aplikacija pristupa na samom poslužitelju. Za upravljanje njome sa svojeg računala koristite SSH tunel:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.moja-tvrtka.hr
```

Vaš se alat (DBeaver, pgAdmin, TablePlus) tada povezuje na `localhost:5432`.

## Posluživanje više domena

Vaš poslužitelj odgovara pod svojim nazivom, određenim pri narudžbi. Za posluživanje druge domene ili druge poddomene na istom VPS Pro pišite podršci i navedite nazive koje treba dodati: naš ih tim spaja na vaš poslužitelj, a vi zatim izrađujete njihove DNS zapise kao u 1. koraku i dodajete njihov blok u svoj web poslužitelj.

## Česta pitanja

### Moja stranica prikazuje pogrešku certifikata.

Provjerite redom: vaši zapisi `A` i `AAAA` upućuju na adrese s vaše kartice (`dig`), vaš web poslužitelj sluša na portovima 80 i 443 (`ss -tlnp`), a certifikat doista pokriva taj naziv (`certbot certificates`). Certifikat se dobiva nakon što naziv upućuje na vaš poslužitelj: ponovno pokrenite Certbot ili ponovno učitajte Caddy nakon širenja DNS-a.

### Moja stranica uopće ne odgovara.

Na poslužitelju `curl -I http://localhost` pokazuje odgovara li vaš web poslužitelj. `systemctl status nginx` (ili `caddy`, ili vaša usluga) i njegovi zapisi govore zašto se zaustavio. Opišite podršci što primjećujete: Cjelovita podrška postavlja dijagnozu zajedno s vama.

### Mogu li instalirati WordPress, Laravel ili Symfony?

Da: instalirajte PHP-FPM, svoju bazu podataka i svoj web poslužitelj, zatim svoju aplikaciju, kao na svakom Linux poslužitelju. Cjelovita podrška pokazuje vam postavke prilagođene vašem projektu, korak po korak.
