# Publikacja strony lub aplikacji

VPS Pro serwuje Państwa strony i aplikacje pod ich nazwą domeny, przez HTTP i HTTPS. Odwiedzający trafiają na porty **80** i **443** serwera, pod nazwą serwera; szyfrowanie HTTPS obejmuje całą drogę, aż do Państwa serwera, na którym znajduje się certyfikat.

## 1. Skierowanie domeny na serwer

Tam, gdzie zarządza się strefą DNS Państwa domeny, proszę utworzyć dwa rekordy dla nazwy serwera, z adresami wyświetlanymi na jego karcie w sekcji **VPS** panelu klienta:

| Typ    | Nazwa                            | Wartość                |
| ------ | -------------------------------- | ---------------------- |
| `A`    | `app` (lub `@` dla samej domeny) | **Adres IPv4** z karty |
| `AAAA` | `app` (lub `@`)                  | **Adres IPv6** z karty |

Nazwa w `vps.simafri.cloud` już działa: nie trzeba niczego tworzyć.

Gdy strefą DNS Państwa domeny zarządza Simafri, te rekordy ustawi za Państwa nasz zespół: prosimy do nas napisać. Przed przełączeniem strony, która już działa, prosimy też o skrócenie czasu życia (TTL) rekordu: przełączenie rozejdzie się wtedy w kilka minut.

Weryfikacja z Państwa komputera:

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

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

## 2. Instalacja serwera WWW

Serwer WWW nasłuchuje na porcie **80** dla HTTP i na porcie **443** dla HTTPS. Dwa popularne wybory:

* **Caddy**, który sam uzyskuje i odnawia certyfikat HTTPS;
* **Nginx** lub **Apache**, z **Certbot** do certyfikatu.

### Z Caddy

```
apt install caddy
```

Następnie w `/etc/caddy/Caddyfile`, dla strony statycznej:

```
app.moja-firma.pl {

    root * /var/www/app

    file_server

}
```

albo dla aplikacji nasłuchującej na porcie 3000:

```
app.moja-firma.pl {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy` i strona odpowiada przez HTTPS: Caddy uzyskał certyfikat i sam będzie go odnawiał.

### Z Nginx i Certbot

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

Proszę utworzyć stronę w `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.moja-firma.pl;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Proszę ją włączyć, a następnie poprosić o certyfikat:

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

nginx -t && systemctl reload nginx

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

Certbot instaluje certyfikat Let's Encrypt, dodaje nasłuch na porcie 443 i planuje jego automatyczne odnawianie. `certbot renew --dry-run` sprawdza, czy odnawianie jest gotowe.

## 3. Utrzymanie aplikacji w działaniu

Aplikację Node.js, Python, Go lub Java działającą w trybie ciągłym powierza się **systemd**: uruchamia się ona wraz z serwerem i sama się restartuje, jeśli się zatrzyma. Przykład, w `/etc/systemd/system/app.service`:

```
[Unit]

Description=Moja aplikacja

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    # śledzenie logów
```

PM2 dla Node.js, Gunicorn lub Uvicorn dla Pythona albo Docker Compose pełnią tę samą rolę, jeśli Państwo je wolą.

## 4. Baza danych

PostgreSQL, MySQL, MariaDB, Redis lub MongoDB instaluje się na serwerze menedżerem pakietów albo z oficjalnego repozytorium producenta, aby mieć najnowszą wersję:

```
apt install postgresql
```

Baza powinna nasłuchiwać na `localhost`: aplikacja łączy się z nią na tym samym serwerze. Aby administrować nią z komputera, proszę użyć tunelu SSH:

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

Państwa narzędzie (DBeaver, pgAdmin, TablePlus) łączy się wtedy z `localhost:5432`.

## Obsługa wielu domen

Serwer odpowiada pod swoją nazwą, ustaloną przy zamówieniu. Aby obsługiwać inną domenę lub subdomenę na tym samym VPS Pro, prosimy napisać do wsparcia, podając nazwy do dodania: nasz zespół podłączy je do serwera, a następnie tworzą Państwo ich rekordy DNS jak w kroku 1 i dodają ich blok do serwera [WWW](http://WWW).

## Najczęstsze pytania

### Strona wyświetla błąd certyfikatu.

Proszę sprawdzić po kolei: rekordy `A` i `AAAA` wskazują adresy z karty (`dig`), serwer WWW nasłuchuje na portach 80 i 443 (`ss -tlnp`), a certyfikat obejmuje tę nazwę (`certbot certificates`). Certyfikat uzyskuje się, gdy nazwa już wskazuje na serwer: po propagacji DNS proszę ponownie uruchomić Certbot lub przeładować Caddy.

### Strona w ogóle nie odpowiada.

Na serwerze `curl -I http://localhost` pokazuje, czy serwer WWW odpowiada. `systemctl status nginx` (lub `caddy`, lub Państwa usługa) i logi mówią, dlaczego się zatrzymał. Prosimy opisać wsparciu, co Państwo obserwują: Kompleksowe wsparcie postawi diagnozę razem z Państwem.

### Czy mogę zainstalować WordPress, Laravel lub Symfony?

Tak: proszę zainstalować PHP-FPM, bazę danych i serwer WWW, a następnie aplikację, jak na każdym serwerze Linux. Kompleksowe wsparcie wskaże krok po kroku ustawienia dopasowane do Państwa projektu.
