# Instalacja krok po kroku

Całą instalację wykonuje jedno polecenie, `./draften install`, uruchomione
w rozpakowanej paczce. Oto postępowanie od pustego serwera do pierwszego
logowania. Z czego składa się instalacja i co gdzie leży, opisuje strona
[Instalacja na własnym serwerze](/pl/admin/self-hosting).

## Krok 1: Przygotuj serwer

- x86-64 z Linuksem (działa też Synology albo inny NAS z Dockerem),
- Docker Engine 24 lub nowszy z wtyczką compose – sprawdzisz poleceniem
  `docker compose version`,
- 4 GB pamięci i 20 GB miejsca na dysku,
- narzędzia `tar`, `base64` i `sha256sum` (albo `shasum`), które ma prawie
  każdy system.

Serwer nie potrzebuje do instalacji internetu: paczka przynosi wszystkie
obrazy.

## Krok 2: Sprawdź, czy paczka jest od nas

Dla każdej paczki wydania `draften-<version>.tar` publikujemy jej sumę
kontrolną. Oblicz ją i porównaj:

```
sha256sum draften-<version>.tar
```

Każdą późniejszą aktualizację instalacja sprawdza sama względem naszych
kluczy. Pierwsza instalacja nie ma jednak z czym porównać – to jest jej
sprawdzenie. Jeśli sumy kontrolne się różnią, nie instaluj paczki i skontaktuj
się z nami.

## Krok 3: Rozpakuj paczkę i uruchom instalator

Wybierz katalog, w którym będzie instalacja, rozpakuj do niego paczkę
i uruchom instalator:

```
mkdir /srv/draften
tar -xf draften-<version>.tar -C /srv/draften
cd /srv/draften
./draften install
```

Instalator wczyta obrazy, sprawdzi paczkę i zapyta o to, czego potrzebuje.

## Krok 4: Odpowiedz na pytania instalatora

- **Adres**, pod którym ludzie otwierają draften, na przykład
  `https://draften.firma.cz`. Musi to być adres, którego naprawdę używają –
  na jego podstawie powstają adresy przekierowania do logowania przez
  Microsoft i Google.
- **Organizacja** i jej **krótka nazwa** (małe litery, cyfry, myślniki).
- **Pierwszy administrator**: e-mail, imię i nazwisko oraz język (`cs` lub
  `en`). Zostaje właścicielem organizacji i operatorem całej instalacji.
- **Updater** (tak / nie) – usługa, która pozwala aktualizować, zmieniać liczbę
  procesów i wymieniać klucz szyfrowania z interfejsu webowego. Ma dostęp do
  Dockera, co oznacza prawa roota na tej maszynie. Bez niego wszystko działa
  z wiersza poleceń.
- **Certyfikat HTTPS** – plik certyfikatu i jego klucz (PEM), jeśli HTTPS ma
  kończyć się bezpośrednio w draften. Zostaw puste, gdy o HTTPS dba reverse
  proxy albo tunel przed draften (zobacz krok 7).

Każdą odpowiedź można też podać od razu w poleceniu, więc instalację da się
oskryptować; `./draften help` wypisuje opcje. Na przykład:

```
./draften install --url https://draften.firma.cz --org "Firma sp. z o.o." \
  --admin-email jan@firma.cz --admin-name "Jan Novák" --locale cs --updater yes
```

## Krok 5: Przechowuj kopię `.env` poza serwerem

Instalator zapisuje ustawienia i sekrety w pliku `.env` w katalogu instalacji.
**Skopiuj go – przynajmniej wartość `MASTER_KEY` – w bezpieczne miejsce poza
serwerem.** Ten klucz szyfruje dostęp do skrzynek, klucze modeli i hasła do
wysyłki poczty. Bez niego nikt ich nie odczyta, nawet z kopii zapasowej –
a my go nie mamy.

## Krok 6: Ustaw hasło i zaloguj się

Na końcu instalator wypisuje link do ustawienia hasła pierwszego
administratora. Otwórz go w przeglądarce i ustaw hasło – od razu się zalogujesz.
Link działa raz i jest ważny 7 dni. Jak wygląda strona z hasłem, pokazuje
instrukcja [Logowanie](/pl/signing-in).

!> Link wypisuje tylko instalator. Nigdzie go nie kopiuj ani nie przekazuj
dalej – kto go ma, ten ustawi hasło administratora.

## Krok 7: Opublikuj adres

Zależnie od tego, co wybrano w kroku 4:

- **Z certyfikatem** draften sam nasłuchuje na porcie 443 i przekierowuje
  z portu 80 na HTTPS. Adres musi tylko w DNS prowadzić do tego serwera.
- **Bez certyfikatu** draften nasłuchuje na `127.0.0.1:8085`, a HTTPS kończy
  twoje reverse proxy albo tunel przed nim. Gdy proxy działa na innej maszynie,
  ustaw w `.env` `WEB_BIND=0.0.0.0:8085`.
- **Z Cloudflare Tunnel** nie jest potrzebny żaden otwarty port: wpisz token
  tunelu do `.env` (`CLOUDFLARE_TUNNEL_TOKEN`), dodaj `tunnel` do
  `COMPOSE_PROFILES` (na przykład `COMPOSE_PROFILES=updater,tunnel`) i uruchom
  `docker compose up -d`. W Cloudflare skieruj tunel na
  `http://127.0.0.1:8085`.

Certyfikat można dodać także później:

```
./draften certificate cert.pem key.pem --url https://draften.firma.cz
```

## Krok 8: Prześlij licencję

Licencję wysyłamy jako plik `licence-<numer>.json`. W interfejsie otwórz
**Instalacja → Instalacja**, wybierz plik na karcie **Licencja** na dole
i prześlij go. Dopóki instalacja nie ma licencji, asystenci nie przetwarzają
poczty i nie można utworzyć skrzynki ani asystenta. Więcej w
[Licencji](/pl/admin/licence).

## Krok 9: Ustaw domyślne klucze i wysyłkę poczty

Na tej samej stronie **Instalacja** ustaw **Domyślne klucze API** do modeli
i **Domyślną wysyłkę poczty** (skąd przychodzą zaproszenia i linki do haseł).
Obowiązują w każdej organizacji, która nie ustawi własnych. Szczegóły:
[Klucze API modeli](/pl/admin/api-keys) i [Wysyłka poczty](/pl/admin/outgoing-mail).

## Krok 10: Podłącz skrzynkę i skonfiguruj asystenta

Od tego miejsca postępujesz jak w każdej innej instalacji:

1. [Dodaj i podłącz skrzynkę](/pl/admin/adding-a-mailbox).
2. [Skonfiguruj asystenta kreatorem](/pl/new-assistant).
3. Zaproś kolejne osoby – [Osoby i role](/pl/admin/people-and-roles).

## Krok 11: Sprawdź, czy wszystko działa

```
./draften status
```

wypisuje wersję, stan interfejsu webowego i workerów, stan HTTPS i zrzuty bazy
danych. W interfejsie strona **Utrzymanie** pokazuje, czy workery się
zgłaszają – zobacz [Utrzymanie i przepustowość](/pl/admin/operations).

## Krok 12: Zadbaj o kopie zapasowe

Z updaterem kopia zapasowa bazy danych powstaje sama, codziennie o 01:00, w folderze
`backups/` w katalogu instalacji; godzinę zmienisz w **Instalacja →
Instalacja**, na karcie **Kopie zapasowe bazy danych**. Bez updatera uruchamiaj
`./draften backup` z crona. Kopie leżą jednak na tym samym dysku co baza
danych: **ustaw kopiowanie `backups/` i `.env` poza serwer.** Szczegóły:
[Kopia zapasowa i odtwarzanie](/pl/admin/backup-and-restore).

## Dalej

- [Aktualizacja przez updater](/pl/admin/updating-with-the-updater) – nowa
  wersja jednym przyciskiem,
- [Aktualizacja z wiersza poleceń](/pl/admin/updating),
- [Kopia zapasowa i odtwarzanie](/pl/admin/backup-and-restore),
- [Rozwiązywanie problemów](/pl/admin/troubleshooting).
