# 1. Instalacja

## Czego potrzebujesz

- Serwera (wirtualnego lub fizycznego) ze **świeżą** instalacją **Debiana 13** lub **Ubuntu 24.04**, 64-bit.
  Najlepiej świeży serwer: instalator konfiguruje własny serwer WWW i zaporę.
- Dostępu root (`sudo`) i trochę wolnego miejsca na dysku (kontrola kreatora wymaga co najmniej 500 MB). Aplikacja jest
  lekka; wystarczy mały serwer wirtualny. Świeży Debian nie ma jeszcze `curl` (`sudo apt install -y curl`), który jest
  potrzebny do pobrania wydania.
- Sposobu, by ludzie mogli się z serwerem połączyć: publicznego adresu IP lub nazwy DNS, z przepuszczonymi **UDP 1194**
  (VPN) i **TCP 8443** (interfejs WWW) przez każdy router lub zaporę w chmurze przed serwerem. SSH zostaje otwarty.

## Instalowanie

Wszystko poniżej uruchamiasz na serwerze. [Strona pobierania](https://tunnelry.com/pl/install/) pokazuje te same polecenia
z wpisaną aktualną wersją; zamień tu `X.Y.Z` na tę wersję.

**1. Pobierz wydanie** do nowego katalogu. Pętla ściąga archiwum, listę sum kontrolnych z podpisem, instalator,
deinstalator i publiczny klucz podpisu:

```bash
mkdir tunnelry && cd tunnelry
BASE=https://updates.tunnelry.com/releases/X.Y.Z
for f in tunnelry-X.Y.Z.tar.gz SHA256SUMS SHA256SUMS.sig install.sh uninstall.sh release-key.pub.pem; do
  curl -fsSL -O "$BASE/$f"
done
```

Jeśli serwer nie ma dostępu do internetu, pobierz te same pliki na innym komputerze i skopiuj je do jednego katalogu na
serwerze (na przykład przez `scp`).

**2. Sprawdź klucz.** Porównaj ten odcisk z odciskiem na stronie pobierania, żeby mieć pewność, że klucz należy do projektu:

```bash
openssl pkey -pubin -in release-key.pub.pem -outform DER | sha256sum
```

**3. Uruchom instalator** jako root, z tego katalogu:

```bash
sudo bash install.sh --archive tunnelry-X.Y.Z.tar.gz
```

Instalator sprawdza podpis wydania, zanim cokolwiek rozpakuje, instaluje potrzebne pakiety (nginx, PHP, OpenVPN,
easy-rsa, nftables, unbound, sqlite3), tworzy nieuprzywilejowanego użytkownika `tunnelry` dla aplikacji WWW, zapisuje
pliki systemowe i uruchamia interfejs WWW. Trwa to kilka minut i kończy się takim wydrukiem:

```
Tunnelry <wersja> is installed.

  Open:         https://203.0.113.10:8443
  Certificate:  self-signed; SHA-256 fingerprint 54:6B:02:...
  Setup token:  dZIFQnsv1MLAHFjgJvV1lBvYU8cjqUIJ
```

**Zapisz token konfiguracji.** Jest pokazywany raz i pozwala utworzyć pierwszego administratora. Jeśli go zgubisz,
uruchom instalator ponownie z `--new-token`.

Interfejs WWW startuje z **certyfikatem samopodpisanym**, więc przeglądarka ostrzeże Cię za pierwszym razem. Zanim go
zaakceptujesz, porównaj odcisk SHA-256 w szczegółach certyfikatu w przeglądarce z tym, który wypisał instalator.

## Opcje

| Opcja | Znaczenie |
|---|---|
| `--public-key PLIK` | weryfikuje podpis tym kluczem publicznym Ed25519 (użyj klucza opublikowanego z wydaniem) |
| `--gui-port PORT` | port interfejsu WWW (domyślnie 8443) |
| `--address HOST` | adres pokazywany w URL i certyfikacie (domyślnie główny adres IPv4 serwera); użyj nazwy DNS, jeśli ludzie będą łączyć się po nazwie |
| `--update-url URL` | skąd strona **Aktualizacje** pobiera informacje o nowych wersjach (tylko `https`) |
| `--new-token` | wydaje nowy jednorazowy token konfiguracji |
| `--force` | kontynuuje, mimo że kontrole znalazły coś nietypowego (inne strony WWW na maszynie, inna dystrybucja) |

Ponowne uruchomienie instalatora jest bezpieczne: naprawia lub odświeża instalację, nie zmieniając jej kluczy.
Dziennik instalatora jest w `/var/log/tunnelry-install.log`.

## Co zmienił na serwerze

Wszystko, co należy do Tunnelry, jest w kilku miejscach, więc zawsze wiesz, czego dotknął:

| Miejsce | Co |
|---|---|
| `/opt/tunnelry` | aplikacja (jeden katalog na wersję, `current` wskazuje aktywną) |
| `/var/lib/tunnelry` | jej dane: baza, ustawienia, kopie zapasowe |
| `/etc/tunnelry` | urząd certyfikacji i stan serwera (tylko root) |
| `/etc/openvpn/server` | konfiguracja OpenVPN, którą generuje |
| `/usr/lib/tunnelry` | uprzywilejowany program pomocniczy `vpnctl` |
| strona nginx, pula PHP, reguła sudoers, jednostki systemd, tabela nftables `tunnelry` | generowane przez Tunnelry i zapisywane od nowa przy aktualizacji |

Dalej: [kreator konfiguracji](https://tunnelry.com/pl/docs/setup-wizard/index.md).
