W wersji 0.29.21 (9 kwietnia 2026) DrukarkaKSeF rozszerzyła obsługę baz danych o trzeci tryb pracy — Tryb PostgreSQL. W przeciwieństwie do lokalnej bazy SQLite (jedno stanowisko) lub współdzielonej bazy NetDB na SAMBA (kilka stanowisk przez dysk sieciowy), tryb PostgreSQL oferuje natychmiastową synchronizację statusów w kilkaset milisekund oraz brak konfliktów plików. To rekomendowane rozwiązanie dla biur rachunkowych i zespołów księgowych, które obsługują wiele stanowisk równolegle.
Żeby go uruchomić, musisz mieć własny serwer PostgreSQL. Dobra wiadomość: instalacja na Windows zajmuje około 5–10 minut jeśli masz menedżer pakietów (Chocolatey lub Winget). W tym artykule przeprowadzimy Cię przez cały proces — od instalacji serwera, przez otwarcie portu 5432 na firewallu, po podłączenie DrukarkaKSeF.
Kiedy potrzebujesz PostgreSQL w DrukarkaKSeF?
PostgreSQL ma sens dopiero wtedy, gdy na tych samych fakturach pracuje więcej niż jedno stanowisko. Jeśli używasz DrukarkaKSeF solo, zostań przy SQLite — to najszybsza, najprostsza opcja. Poniższa tabela pokazuje, który tryb wybrać zależnie od skali zespołu.
✔ Co daje Ci tryb PostgreSQL
- Zmiana statusu (Wydrukowana, Opłacona, Twój własny) widoczna na wszystkich stacjach w kilkaset milisekund
- Brak błędów „database is locked” i konfliktów plików
- Dedykowany ekran offline gdy serwer chwilowo niedostępny — zero ryzyka utraty danych
- Backupy w formacie
.archiwdbz sufiksem wersji - Bezpieczna migracja SQLite → PostgreSQL przez kreator (automatyczny backup przed migracją)
Wymagania wstępne
Zanim zaczniesz instalację, upewnij się, że Twój komputer spełnia te wymagania:
System operacyjny
Windows 10/11 (Pro, Home, Enterprise) lub Windows Server 2019/2022
Uprawnienia administratora
Instalacja wymaga UAC — musisz móc uruchomić PowerShell jako administrator
Zasoby
~500 MB wolnego miejsca + 200–500 MB RAM na usługę PostgreSQL
Port 5432 wolny
Domyślny port PG. Sprawdź netstat -an | findstr :5432
Która metoda jest lepsza — Chocolatey czy Winget?
Obie działają i zainstalują działający serwer PostgreSQL. Różnice są drobne:
- Chocolatey — dojrzały menedżer pakietów (od 2011 r.), świetny do automatyzacji i skryptów. Pozwala przekazać hasło i port jednym parametrem
--params, bez klikania. - Winget — oficjalny menedżer Microsoftu, preinstalowany w Windows 11 i nowszych aktualizacjach Windows 10. Prostszy start, ale instalator PG uruchamia interaktywny kreator graficzny (musisz kliknąć kilka razy).
Nasza rekomendacja: jeśli nie masz jeszcze menedżera pakietów, zainstaluj Chocolatey — pełna automatyzacja jedną komendą. Jeśli masz już Winget i nie przeszkadza Ci kreator graficzny, zostań przy nim.
Metoda 1 — Instalacja przez Chocolatey
Krok 1.1. Zainstaluj Chocolatey (jeśli jeszcze go nie masz)
Otwórz PowerShell jako administrator (Win+X → „Windows PowerShell (Administrator)” lub „Terminal (Administrator)”) i wklej poniższą komendę:
PS C:\> Set-ExecutionPolicy Bypass -Scope Process -Force; ` >> [System.Net.ServicePointManager]::SecurityProtocol = ` >> [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; ` >> iex ((New-Object System.Net.WebClient).DownloadString( ` >> 'https://community.chocolatey.org/install.ps1'))
Po instalacji zamknij i otwórz PowerShell ponownie — zmienna PATH się odświeży. Sprawdź wersję:
PS C:\> choco --version 2.3.0
📷
Ekran: Chocolatey — instalacja bootstrap
(screenshot do uzupełnienia po instalacji na Windows)
Krok 1.2. Zainstaluj PostgreSQL jedną komendą
Gdy Chocolatey jest gotowy, wystarczy jedna linia:
PS C:\> choco install postgresql --params '/Password:TwojeHaslo /Port:5432' -y
⚠ Zmień hasło „TwojeHaslo”
Hasło w komendzie to tylko przykład. Użyj własnego, silnego hasła (min. 16 znaków, mieszane wielkie/małe litery, cyfry i znaki specjalne). Zapisz je w menedżerze haseł — będziesz go używać przy łączeniu z DrukarkaKSeF i przy każdej administracji bazą.
Instalator Chocolatey zrobi w tle:
- Pobranie oficjalnego pakietu EnterpriseDB (PostgreSQL 18 w momencie pisania artykułu)
- Instalację do
C:\Program Files\PostgreSQL\18\ - Utworzenie katalogu danych
C:\Program Files\PostgreSQL\18\data\ - Rejestrację usługi Windows
postgresql-x64-18(tryb automatyczny — startuje z systemem) - Utworzenie użytkownika bazodanowego
postgresz hasłem, które podałeś w--params - Dodanie
bin\do zmiennej środowiskowejPATH
Instalacja trwa zwykle 2–4 minuty. Na końcu Chocolatey pokaże Chocolatey installed 1/1 packages — to znak, że wszystko się powiodło.
Krok 1.3. Weryfikacja instalacji
Sprawdź, czy usługa działa i czy odpowiada na połączenia:
PS C:\> Get-Service postgresql-x64-18 Status Name DisplayName ------ ---- ----------- Running postgresql-x64-18 postgresql-x64-18 - PostgreSQL Server 18 PS C:\> pg_isready -h localhost -p 5432 localhost:5432 - accepting connections PS C:\> psql -U postgres -c "SELECT version();" Password for user postgres: ******** version --------------------------------------------------------------------------------- PostgreSQL 18.0 on x86_64-windows, compiled by Visual C++ build 1940, 64-bit (1 row)
Jeśli pg_isready zwraca accepting connections, a psql pokazuje wersję po podaniu hasła — masz działający serwer. Przeskocz teraz do sekcji Konfiguracja firewalla.
Metoda 2 — Instalacja przez Winget
Winget jest preinstalowany w Windows 11 oraz w Windows 10 z aktualizacją „App Installer” w wersji 1.11+. Sprawdź, czy masz go w systemie:
PS C:\> winget --version v1.11.400
Jeśli Winget nie jest zainstalowany, pobierz go z oficjalnego Microsoft Store (pakiet „App Installer” od Microsoftu). Potem:
Krok 2.1. Zainstaluj PostgreSQL
PS C:\> winget install PostgreSQL.PostgreSQL.18
Winget pobierze oficjalny instalator EnterpriseDB i uruchomi go. W odróżnieniu od Chocolatey, Winget nie przekazuje parametrów hasła ani portu — hasło i port wprowadzisz w graficznym kreatorze, który się pojawi.
Krok 2.2. Kreator graficzny — kluczowe ekrany
Instalator EnterpriseDB ma kilka ekranów, w których musisz zatwierdzić lub wprowadzić ustawienia:
- Installation Directory — zostaw domyślne
C:\Program Files\PostgreSQL\18 - Select Components — zaznacz wszystkie: PostgreSQL Server, pgAdmin 4, Stack Builder, Command Line Tools
- Data Directory — zostaw
C:\Program Files\PostgreSQL\18\data - Password — wprowadź hasło dla użytkownika
postgres(to samo w obu polach). Zapisz je! - Port —
5432(domyślny) — zostaw - Advanced Options — locale zostaw na
[Default locale]lub wybierzPolish, Polanddla polskiego sortowania - Pre Installation Summary — przejrzyj i kliknij Next
- Installation — 2–4 minuty
- Stack Builder — na końcu pyta czy uruchomić Stack Builder (instalator dodatków jak PostGIS). Odznacz i kliknij Finish — nie potrzebujesz go do DrukarkaKSeF.
📷
Ekran: Kreator EnterpriseDB — ustawienie hasła superusera postgres
(screenshot do uzupełnienia po instalacji na Windows)
Krok 2.3. Weryfikacja
Otwórz PowerShell (może być zwykły użytkownik) i sprawdź usługę oraz port:
PS C:\> Get-Service postgresql-x64-18 | Select-Object Status, Name, DisplayName Status Name DisplayName ------ ---- ----------- Running postgresql-x64-18 postgresql-x64-18 - PostgreSQL Server 18 PS C:\> Test-NetConnection -ComputerName localhost -Port 5432 ComputerName : localhost RemoteAddress : ::1 RemotePort : 5432 TcpTestSucceeded : True
Jeśli TcpTestSucceeded : True — serwer słucha na porcie 5432. Możesz też otworzyć Services (services.msc) i zobaczyć usługę postgresql-x64-18 w stanie Running.
📷
Ekran: services.msc — usługa postgresql-x64-18 w stanie Running
(screenshot do uzupełnienia po instalacji na Windows)
Konfiguracja firewalla Windows — port 5432
To sekcja KRYTYCZNA
Bez otwartego portu 5432 inne stacje nie połączą się z serwerem.
Jeśli serwer PostgreSQL ma obsługiwać tylko lokalny komputer (pracujesz solo na jednej maszynie), pomiń tę sekcję — loopback localhost działa bez firewallowych zmian. Jeśli planujesz wielostanowiskowy tryb DrukarkaKSeF (inne komputery w sieci łączą się do tego serwera), musisz otworzyć port 5432 na firewallu Windows.
Krok 3.1. Otwarcie portu przez PowerShell (zalecane)
Jedna komenda, zajmuje sekundę. W PowerShell jako administrator:
PS C:\> New-NetFirewallRule ` >> -DisplayName "PostgreSQL 5432 (DrukarkaKSeF)" ` >> -Direction Inbound ` >> -Protocol TCP ` >> -LocalPort 5432 ` >> -Action Allow ` >> -Profile Private,Domain
Co oznaczają parametry:
-DisplayName— nazwa reguły widoczna wwf.msc, łatwa do znalezienia potem-Direction Inbound— reguła dla ruchu przychodzącego (inne stacje łączą się do tego serwera)-Protocol TCP— PostgreSQL używa TCP (nie UDP)-LocalPort 5432— port, na którym słucha PG-Action Allow— zezwalaj-Profile Private,Domain— TYLKO profile Private (sieć domowa/biurowa) i Domain (sieć korporacyjna). Nie włączaj profilu Public — to profil np. dla WiFi w hotelu czy kawiarni; otwieranie tam portu 5432 to dziura w bezpieczeństwie.
Krok 3.2. Alternatywa — otwarcie portu przez GUI (wf.msc)
Jeśli wolisz interfejs graficzny, otwórz Windows Defender Firewall with Advanced Security:
- Wciśnij Win+R, wpisz
wf.msc, Enter - Lewy panel: Inbound Rules (Reguły przychodzące) → Prawy panel: New Rule… (Nowa reguła)
- Rule Type: Port → Next
- Protocol and Ports: TCP, Specific local ports: 5432 → Next
- Action: Allow the connection → Next
- Profile: zaznacz Domain i Private, odznacz Public → Next
- Name: PostgreSQL 5432 (DrukarkaKSeF) → Finish
📷
Ekran: wf.msc — reguła PostgreSQL 5432 (DrukarkaKSeF)
(screenshot do uzupełnienia po konfiguracji na Windows)
Krok 3.3. Weryfikacja reguły firewalla
PS C:\> Get-NetFirewallRule -DisplayName "PostgreSQL 5432 (DrukarkaKSeF)" | >> Select-Object DisplayName, Enabled, Direction, Action, Profile DisplayName : PostgreSQL 5432 (DrukarkaKSeF) Enabled : True Direction : Inbound Action : Allow Profile : Domain, Private
Z innej stacji w tej samej sieci LAN możesz sprawdzić dostęp:
PS C:\> Test-NetConnection -ComputerName 192.168.1.100 -Port 5432 TcpTestSucceeded : True
Zezwolenie PostgreSQL na połączenia zdalne
Sama reguła firewalla to za mało — PostgreSQL domyślnie nasłuchuje tylko na localhost. Musisz pozwolić mu nasłuchiwać na interfejsie sieciowym i zezwolić na logowanie z sieci LAN.
Krok 4.1. postgresql.conf — listen_addresses
Otwórz plik C:\Program Files\PostgreSQL\18\data\postgresql.conf w edytorze (np. Notepad jako administrator). Znajdź linię z listen_addresses i zmień:
# Przed: #listen_addresses = 'localhost' # Po: listen_addresses = '*' # nasłuchiwanie na wszystkich interfejsach
Zamiast '*' możesz wpisać konkretne IP (np. '192.168.1.100') — tak jest bezpieczniej, jeśli komputer ma dwie karty sieciowe (LAN + publiczna).
Krok 4.2. pg_hba.conf — reguły autoryzacji
W tym samym katalogu otwórz pg_hba.conf i dodaj na końcu pliku:
# TYPE DATABASE USER ADDRESS METHOD host all all 192.168.1.0/24 scram-sha-256
host— połączenia TCP/IP (szyfrowane i nieszyfrowane)all all— wszystkie bazy i wszyscy użytkownicy192.168.1.0/24— Twoja sieć LAN. Zastąp właściwą (np.10.0.0.0/24lub pojedyncze192.168.1.50/32). Pozwól tylko zaufanym IP!scram-sha-256— nowoczesne, bezpieczne hashowanie hasła (domyślne od PG 14)
⚠ Nigdy nie wpisuj 0.0.0.0/0 w pg_hba.conf
To otwiera bazę na cały internet. Zawsze ograniczaj do swojej sieci LAN (np. 192.168.1.0/24). Jeśli potrzebujesz dostępu z zewnątrz, użyj VPN — nie wystawiaj PG na publiczne IP.
Krok 4.3. Restart usługi PostgreSQL
Zmiany w konfiguracji wymagają restartu usługi:
PS C:\> Restart-Service postgresql-x64-18 PS C:\> Get-Service postgresql-x64-18 Status Name DisplayName ------ ---- ----------- Running postgresql-x64-18 postgresql-x64-18 - PostgreSQL Server 18
Konfiguracja trybu PostgreSQL w DrukarkaKSeF
Gdy serwer działa i port 5432 jest dostępny dla stacji klienckich, pozostaje podpiąć DrukarkaKSeF:
- Uruchom DrukarkaKSeF na komputerze klienckim (lub serwerowym — nieważne)
- Menu: Konfiguracja → Dane Aplikacji → Tryb bazy
- Wybierz PostgreSQL z dropdown listy trybów
- Wprowadź parametry połączenia:
- Host: IP lub nazwa serwera (np.
192.168.1.100lubserwer-ksiegowy) - Port:
5432 - Baza danych:
drukarka_ksef(zostanie utworzona automatycznie jeśli nie istnieje) - Użytkownik:
postgres(lub dedykowany użytkownik jeśli utworzyłeś) - Hasło: to samo, które wprowadziłeś przy instalacji PG
- Host: IP lub nazwa serwera (np.
- Kliknij Testuj połączenie — powinieneś zobaczyć zieloną kropkę i „Połączono”
- Jeśli masz już faktury w SQLite, aplikacja zaproponuje Kreator migracji SQLite → PostgreSQL. Potwierdź — przed migracją zostanie utworzony backup bazy SQLite, a statusy faktur zachowane.
📷
Ekran: DrukarkaKSeF → Konfiguracja → Dane Aplikacji → Tryb PostgreSQL
(screenshot do uzupełnienia po uruchomieniu trybu PG)
Weryfikacja: test dwóch stanowisk
Najlepszy test trybu PostgreSQL to zmiana statusu faktury na jednej stacji i sprawdzenie, czy zmiana pojawi się na drugiej:
Stacja A
Otwórz fakturę, ustaw status Opłacona. Sprawdź pasek stanu — zielona kropka PG + licznik ping-a w ms.
Stacja B
W tym samym czasie (zwykle <500 ms) zobaczysz nowy status Opłacona bez żadnego odświeżania. To jest istota trybu PG.
FAQ — najczęstsze pytania
Która wersja PostgreSQL jest wymagana dla DrukarkaKSeF?
DrukarkaKSeF oficjalnie wspiera PostgreSQL 14 i nowsze (14, 15, 16, 17, 18). Najnowsze pakiety w Chocolatey i Winget instalują domyślnie wersję 18 — to zalecana. Wersje starsze niż 14 mogą nie wspierać scram-sha-256 i wymagają dodatkowej konfiguracji.
Co jeśli port 5432 jest już zajęty?
Sprawdź co go używa: netstat -ano | findstr :5432. Jeśli to inna instalacja PG, zmień port w instalatorze na 5433 lub 5434. Pamiętaj żeby zmienić port także w regule firewalla i w DrukarkaKSeF.
Jak zrobić backup bazy PostgreSQL?
DrukarkaKSeF ma wbudowany eksport do formatu .archiwdb (Konfiguracja → Backup). Alternatywnie z PowerShell: pg_dump -U postgres -F c -f backup.dump drukarka_ksef. Zalecamy automatyzację przez Harmonogram zadań Windows — codziennie w nocy.
Zapomniałem hasła do postgres. Jak je zresetować?
W pg_hba.conf zmień metodę logowania dla 127.0.0.1/32 na trust, zrestartuj usługę, połącz się przez psql -U postgres i wykonaj ALTER USER postgres WITH PASSWORD 'NoweHaslo';. Potem przywróć scram-sha-256 i znów zrestartuj.
Czy tryb PostgreSQL działa na Windows Home?
Tak. PostgreSQL działa identycznie na Home, Pro, Enterprise i Server. Jedyna różnica: Home nie ma gpedit.msc do polityk grupowych, ale do tego przypadku nie jest potrzebny. Wszystkie komendy z tego artykułu działają na wszystkich edycjach.
Czy muszę otwierać port 5432 jeśli używam tylko jednego komputera?
Nie. Jeśli serwer PG i DrukarkaKSeF pracują na tej samej maszynie, używaj localhost jako hosta. Windows Firewall nie blokuje ruchu loopback. Pomiń sekcję firewall całkowicie.
Czy mogę używać SSL między DrukarkaKSeF a PostgreSQL?
Tak. Od v0.29.21 DrukarkaKSeF wspiera SSL/TLS przy połączeniu do PG. W postgresql.conf ustaw ssl = on i dostarcz certyfikaty (server.crt, server.key). W konfiguracji DrukarkaKSeF włącz „Wymagaj SSL”. To zalecane dla sieci, do których masz ograniczone zaufanie (np. wiele lokalizacji łączonych przez VPN).
Czy muszę płacić za PostgreSQL?
Nie. PostgreSQL jest w 100% darmowy i open-source (licencja zbliżona do BSD/MIT). Nie ma opłat ani limitów użytkowników czy baz danych. Używasz go legalnie na dowolnej liczbie maszyn, także komercyjnie.
Co dalej?
Masz już uruchomiony serwer PostgreSQL i otwarty port 5432 na firewallu. Teraz zostało Ci:
- Zainstalować DrukarkaKSeF na każdej stacji zespołu (ten sam instalator — aplikacja rozpozna serwer PG po konfiguracji)
- Wykonać migrację SQLite → PostgreSQL (jeśli masz już dane w SQLite) — automatyczny kreator zrobi to z backupem
- Ustawić automatyczne backupy (format
.archiwdbz DrukarkaKSeF albopg_dumpw Harmonogramie zadań Windows) - Zaktualizować licencję jeśli potrzebujesz więcej stanowisk — tryb PG skaluje się do 50+ stacji w jednym zespole
Powiązane artykuły
- DrukarkaKSeF — Kompletny przewodnik po funkcjach aplikacji 2026 — wszystkie funkcje wszystkich 3 wersji
- KSeF od kiedy obowiązkowy? Daty wdrożenia i wyjątki 2026 — harmonogram KSeF
- Jak pobrać fakturę z KSeF — poradnik krok po kroku — pobieranie faktur z portalu MF
Pobieraj faktury z KSeF automatycznie
KSeF Online — od 99 zł/rok, bez limitu faktur. 14 dni za darmo, bez karty kredytowej.
