# Publikacja strony lub aplikacji

VPS Ultra ma własny adres IPv4 i adres IPv6: Państwa domeny wskazują bezpośrednio na nie, a serwer odbiera ruch na wszystkich otwartych przez Państwa portach. Mogą Państwo obsługiwać dowolną liczbę stron i domen.

## 1. Skierowanie domeny na serwer

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

| Typ    | Nazwa                            | Wartość                |
| ------ | -------------------------------- | ---------------------- |
| `A`    | `@`, `www` lub wybrana subdomena | **Adres IPv4** z karty |
| `AAAA` | ta sama nazwa                    | **Adres IPv6** z karty |

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.

Weryfikacja z Państwa komputera:

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

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

## 2. Instalacja serwera WWW i certyfikatu

Dwa popularne wybory w Linuksie:

* **Caddy**, który sam uzyskuje i odnawia certyfikaty HTTPS:

  ```
  apt install caddy
  ```

  następnie w `/etc/caddy/Caddyfile`:

  ```
  app.moja-firma.pl {

      reverse_proxy 127.0.0.1:3000

  }
  ```

  i `systemctl reload caddy`;

* **Nginx** lub **Apache**, z **Certbot** do certyfikatu Let's Encrypt:

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

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

  Certbot instaluje certyfikat, dodaje nasłuch na porcie 443 i planuje jego automatyczne odnawianie.

W Windows Server strony obsługuje **IIS**, a klient ACME, taki jak win-acme, instaluje w nim i odnawia certyfikaty Let's Encrypt.

## 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
```

Docker i Docker Compose również instaluje się jak na każdym serwerze Linux.

## 4. Baza danych

PostgreSQL, MySQL, MariaDB, Redis lub MongoDB instaluje się menedżerem pakietów albo z oficjalnego repozytorium producenta. Gwarantowana pamięć VPS Ultra dobrze sprawdza się przy wymagającej bazie: proszę ustawić jej pamięć roboczą (`shared_buffers` dla PostgreSQL, `innodb_buffer_pool_size` dla MySQL) odpowiednio do pamięci swojego rozmiaru.

Baza powinna nasłuchiwać na `localhost`, a administrować nią można z komputera przez tunel SSH:

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

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

## 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`), zapora je przepuszcza (`ufw status`), a certyfikat obejmuje tę nazwę (`certbot certificates`).

### Czy mogę hostować kilka stron na VPS Ultra?

Tak, tyle, ile Państwo chcą: wystarczy skierować każdą domenę na swoje adresy i dodać jej blok do serwera [WWW](http://WWW).
