# Wdrażanie KSEF na produkcję (www.sic.pl/ksef/)

## Krok 1: Przygotuj artefakty na maszynie lokalnej

```bash
cd /home/ms/projekty/fv-ksef-nodejs/ksef-pdf-generator

# Zbuduj aplikację SPA
npm run build:app

# Powinnien powstać folder dist-app/ z zawartością:
ls -la dist-app/
# index.html
# assets/index-HASH.js
```

---

## Krok 2: Prześlij pliki na serwer docelowy (10.1.1.3)

### 2a. Skopiuj artefakty aplikacji

```bash
# Z lokalnej maszyny prześlij dist-app/* do /var/www/ksef/
scp -r dist-app/* ms@10.1.1.3:/home/ms/projekty/ksef/

# LUB jeśli bezpośrednio na serwerze, skopiuj z repo:
scp -r dist-app/* ms@10.1.1.3:/var/www/ksef/
```

### 2b. Na serwerze docelowym, ustaw uprawnienia

```bash
# Zaloguj się na serwer:
ssh ms@10.1.1.3

# Stwórz folder jeśli go nie ma
sudo mkdir -p /var/www/ksef

# Ustaw właściciela i uprawnienia
sudo chown -R www-data:www-data /var/www/ksef
sudo chmod -R 755 /var/www/ksef
```

---

## Krok 3: Zaktualizuj nginx config

### 3a. Prześlij nowy default.conf

```bash
# Z lokalnego repo
scp default.conf ms@10.1.1.3:/home/ms/

# Lub na serwerze, utwórz plik:
nano /etc/nginx/conf.d/default.conf
```

### 3b. Na serwerze docelowym, zastąp config

```bash
# Backup starego configu
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup

# Wstaw nowy config (z wdrażanego repo)
sudo cp /home/ms/default.conf /etc/nginx/conf.d/default.conf

# LUB ręcznie: skopiuj zawartość pliku z repo i wklej do /etc/nginx/conf.d/default.conf
```

---

## Krok 4: Zweryfikuj nginx config i restartuj

```bash
# Na serwerze: sprawdź składnię
sudo nginx -t

# Jeśli "syntax is ok, test successful":
sudo systemctl restart nginx

# Sprawdź status
sudo systemctl status nginx
```

---

## Krok 5: Testowanie

Otwórz w przeglądarce:
- **http://www.sic.pl/ksef/** ← aplikacja PDF Generator
- **http://www.sic.pl/** ← pozostała zawartość www.sic.pl (bez zmian)

---

## Struktura na serwerze docelowym

```
/var/www/
├── sic/                 ← istniejąca zawartość www.sic.pl
├── esbr/                ← istniejąca zawartość www.esbr.pl
├── sobczak/             ← istniejąca zawartość www.sobczak.org
└── ksef/                ← NOWA: aplikacja KSEF
    ├── index.html       (punkt wejścia, no-cache)
    └── assets/
        └── index-HASH.js (cached)
```

---

## Logi i debugowanie

Na serwerze:
```bash
# Logi dostępu
sudo tail -f /var/log/nginx/access.log | grep ksef

# Logi błędów
sudo tail -f /var/log/nginx/error.log

# Test zaraz po starcie
curl -I http://localhost/ksef/
```

---

## Aktualizacja aplikacji (dla przyszłych wersji)

```bash
# Lokalnie: zbuduj nową wersję
npm run build:app

# Prześlij do serwera
scp -r dist-app/* ms@10.1.1.3:/var/www/ksef/

# nginx automatycznie serwuje nową wersję
# (index.html nie ma cache, assety mają nowe hashe)
```

---

## Jeśli coś nie działa

### Problem: 404 na `/ksef/`

**Powody:**
1. Folder `/var/www/ksef/` nie istnieje lub nie ma contentu
2. `index.html` nie jest w `/var/www/ksef/`
3. Błędy uprawnienia (nginx nie może czytać)

**Rozwiązanie:**
```bash
# Sprawdź zawartość
ls -la /var/www/ksef/

# Sprawdź uprawnienia
stat /var/www/ksef/

# Ustaw uprawnienia na nowo
sudo chown -R www-data:www-data /var/www/ksef/
sudo chmod -R 755 /var/www/ksef/
```

### Problem: assety (JS/CSS) nie ładują się

**Powód:** Zła ścieżka w `alias` w nginx config

**Sprawdzenie:**
```bash
# Sprawdź co jest w dist-app/assets/
ls -la /var/www/ksef/assets/

# Jeśli puste, znaczy że dist-app/ nie został skopiowany poprawnie
```

---

**Gotowe!** Po wykonaniu powyższych kroków, aplikacja powinna być dostępna na 🎉  
**http://www.sic.pl/ksef/**
