## Pages ### Faq Podręczny tutorial dla najczęściej używanych poleceń i zadań w linuksie. ## Blogs ### Darmowe i profesjonalne usuwanie tła ze zdjęć za pomocą AI na Windows 11 i Linux Mint Większość popularnych narzędzi do wycinania tła z obrazów opiera się na rozwiązaniach chmurowych, które wymagają subskrypcji i wysyłania plików na zewnętrzne serwery. Alternatywą jest uruchomienie modeli sztucznej inteligencji lokalnie. Ten artykuł opisuje proces instalacji i konfiguracji biblioteki rembg do automatycznego przetwarzania plików i folderów z wykorzystaniem procesora (CPU) lub karty graficznej (GPU) w systemach Windows 11 i Linux Mint. Czym jest rembg i jakie ma możliwości? rembg to otwartoźródłowa biblioteka napisana w języku Python. Służy do automatycznego oddzielania pierwszego planu od tła na obrazach. Kluczowe cechy techniczne: Modele AI: Biblioteka pod spodem wykorzystuje wytrenowane sieci neuronowe. Domyślnie używa modelu u2net, ale pobiera również nowsze, zoptymalizowane modele, takie jak bria-rmbg, które radzą sobie z trudnymi krawędziami (np. włosy). Silnik wykonawczy: Operacje tensorowe są obsługiwane przez ONNX Runtime. Pozwala to na wykonywanie obliczeń zarówno na procesorze (CPU), jak i akcelerację na układach graficznych (GPU NVIDIA) za pośrednictwem rdzeni CUDA. Prywatność i brak limitów: Cały proces inferencji odbywa się w pamięci RAM/VRAM lokalnego komputera. Nie ma limitów rozdzielczości ani ilości przetwarzanych plików. Krok 1: Instalacja środowiska Python Do poprawnego działania wymagany jest interpreter języka Python. Należy używać stabilnych wersji. Wersje testowe (np. 3.14) powodują problemy z kompilacją biblioteki numba i są blokowane przez zabezpieczenia Windows. Windows 11: Pobierz instalator Pythona ze strony python.org. Uruchom instalator. Krytyczne: Na pierwszym ekranie instalatora zaznacz pole wyboru "Add python.exe to PATH". Bez tego system nie rozpozna poleceń Pythona w konsoli. Zakończ instalację klikając "Install Now". Linux Mint: Większość dystrybucji bazujących na Ubuntu ma Pythona preinstalowanego. Upewnij się, że masz menedżer pakietów pip. sudo apt update sudo apt install python3 python3-pip python3-venv Krok 2: Instalacja CUDA i cuDNN (Tylko dla kart NVIDIA GPU) Jeśli chcesz używać tylko procesora (CPU), zignoruj ten krok. Przetwarzanie na CPU trwa dłużej, ale nie wymaga dodatkowych sterowników. Jeśli posiadasz kartę NVIDIA (np. seria RTX), akceleracja sprzętowa przyspieszy proces kilkunastokrotnie. ONNX Runtime wymaga środowiska CUDA w wersji 12.x lub 13.x oraz bibliotek cuDNN w wersji 9.x. Konfiguracja dla Windows 11: Pobierz i zainstaluj sterowniki karty graficznej (Game Ready lub Studio). Pobierz CUDA Toolkit 12.x lub 13.x ze strony dla deweloperów NVIDIA. Zainstaluj przy użyciu ustawień domyślnych (Express). Ścieżka domyślna to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x. Pobierz instalator .exe pakietu cuDNN w wersji 9 ze strony NVIDIA (wymaga darmowego konta dewelopera). Zainstaluj go. Naprawa błędu "Error 2 (LoadLibrary failed)": Instalator cuDNN często nie aktualizuje poprawnie zmiennych środowiskowych, co skutkuje błędem braku pliku cudnn64_9.dll podczas uruchamiania skryptów. Przejdź do folderu: C:\Program Files\NVIDIA\CUDNN\v9.x\bin Skopiuj wszystkie znajdujące się tam pliki .dll. Wklej je do folderu bin głównej instalacji CUDA: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin. Zgódź się na prośbę o uprawnienia administratora. Uruchom ponownie komputer. Konfiguracja dla Linux Mint: Najbezpieczniej zainstalować sterowniki i narzędzia CUDA bezpośrednio z repozytoriów systemu: sudo ubuntu-drivers autoinstall sudo apt install nvidia-cuda-toolkit (Uwaga: w zależności od wersji systemu, może być wymagane dodanie oficjalnego repozytorium NVIDIA PPA, aby uzyskać CUDA w wersji 12.x (13.x) oraz cuDNN 9). Krok 3: Instalacja biblioteki rembg Gdy Python (i opcjonalnie środowisko GPU) jest gotowe, instalujemy pakiety. Otwórz wiersz poleceń (CMD na Windowsie) lub Terminal (Linux) i wykonaj komendę: Windows 11: pip install rembg[gpu] onnxruntime onnxruntime-gpu Linux Mint: pip3 install rembg[gpu] onnxruntime onnxruntime-gpu (Flaga [gpu] oraz pakiety onnxruntime gwarantują, że program będzie potrafił odwołać się do rdzeni CUDA, jeśli je wykryje). Krok 4: Skrypty automatyzujące przetwarzanie (Batch Processing) Podstawowe wywołanie rembg z wiersza poleceń dla każdego pliku z osobna zmusza kartę graficzną do ładowania modelu AI do pamięci VRAM (co zajmuje około 2-6 sekund) od nowa przy każdym zdjęciu. Przy przetwarzaniu całych folderów jest to wysoce nieefektywne. Rozwiązaniem jest skrypt, który uruchamia instancję Pythona raz, ładuje model do pamięci, a następnie w pętli przepuszcza przez niego wszystkie zdefiniowane pliki. Skrypt dla Windows 11 (.bat) Utwórz na pulpicie plik tekstowy, nazwij go usun.bat i wklej poniższy kod. Aby przetworzyć pliki, wystarczy zaznaczyć obraz (lub cały folder) i przeciągnąć go na ikonę tego pliku. @echo off chcp 65001 >nul echo ========================================== echo Narzędzie AI (Wersja Turbo GPU/CPU) echo ========================================== if "%~1"=="" ( echo Przeciągnij i upuść PLIK lub FOLDER na ten plik .bat! pause exit /b ) :: Zabezpieczenie przed blokadą kompilatora Numba w Windows set "NUMBA_DISABLE_JIT=1" set "NUMBA_THREADING_LAYER=omp" :: Generowanie skryptu Python w locie echo import sys, os, glob > temp_ai.py echo from rembg import remove, new_session >> temp_ai.py echo print("Ladowanie modelu do pamieci... (to potrwa kilka sekund)") >> temp_ai.py echo session = new_session() >> temp_ai.py echo target = sys.argv[1] >> temp_ai.py echo def process(img_path): >> temp_ai.py echo out = os.path.splitext(img_path)[0] + "_bez_tla.png" >> temp_ai.py echo print(" Wycinanie: " + os.path.basename(img_path)) >> temp_ai.py echo with open(img_path, "rb") as i, open(out, "wb") as o: >> temp_ai.py echo o.write(remove(i.read(), session=session)) >> temp_ai.py echo if os.path.isdir(target): >> temp_ai.py echo for ext in ("*.jpg", "*.jpeg", "*.png", "*.JPG", "*.PNG"): >> temp_ai.py echo for f in glob.glob(os.path.join(target, ext)): process(f) >> temp_ai.py echo else: >> temp_ai.py echo process(target) >> temp_ai.py :: Wykonanie głównego zadania python temp_ai.py "%~1" :: Czyszczenie plików tymczasowych del temp_ai.py echo. echo ========================================== echo Gotowe! echo ========================================== pause Skrypt dla Linux Mint (.sh) Utwórz plik usun.sh, nadaj mu prawa do wykonywania (chmod +x usun.sh). Możesz go uruchamiać z terminala, podając ścieżkę do pliku lub folderu jako argument: ./usun.sh /ścieżka/do/obrazów. #!/bin/bash echo "==========================================" echo " Narzędzie AI (Wersja Turbo GPU/CPU)" echo "==========================================" if [ -z "$1" ]; then echo "Podaj ścieżkę do pliku lub folderu jako argument!" exit 1 fi TARGET="$1" cat << 'EOF' > temp_ai.py import sys, os, glob from rembg import remove, new_session print("Ladowanie modelu do pamieci... (to potrwa kilka sekund)") session = new_session() target = sys.argv[1] def process(img_path): out = os.path.splitext(img_path)[0] + "_bez_tla.png" print(" Wycinanie: " + os.path.basename(img_path)) with open(img_path, "rb") as i, open(out, "wb") as o: o.write(remove(i.read(), session=session)) if os.path.isdir(target): for ext in ("*.jpg", "*.jpeg", "*.png", "*.JPG", "*.PNG"): for f in glob.glob(os.path.join(target, ext)): process(f) else: process(target) EOF python3 temp_ai.py "$TARGET" rm temp_ai.py echo "" echo "==========================================" echo "Gotowe!" echo "==========================================" Podsumowanie Pierwsze uruchomienie skryptu potrwa najdłużej – program pobierze domyślny model sieci neuronowej (np. plik ONNX ważący około 170MB - 1GB w zależności od silnika) z serwerów GitHub do ukrytego folderu użytkownika (w Windows jest to .rembg/models w katalogu domowym). Każde kolejne uruchomienie skorzysta już z pobranego modelu. Dzięki zastosowanej strukturze skryptu, obciążenie startowe (ładowanie modelu) następuje tylko raz na sesję, gwarantując maksymalną przepustowość podczas przetwarzania dużych folderów z grafikami. Efekt działania prezentowanego narzędzia Jak widać po załączonych zdjęciach tragedii nie ma, jednak ten model AI najlepiej sobie radzi w przypadku zdjęć produktowych. Bardzo duże znaczenie na końcowy efekt ma także ostrość elementów brzegowych obiektu. ### Knot DNS: Autorytatywny serwer DNS dla nowoczesnej infrastruktury Większość z nas nie zastanawia się nad tym, jak działa system DNS, dopóki strona internetowa nie przestaje się ładować. Przez dekady niekwestionowanym królem tej przestrzeni był BIND – potężny, ale ciężki i obarczony historycznym długiem technologicznym kombajn. W odpowiedzi na potrzebę obsługi gigantycznego ruchu i obrony przed atakami DDoS, narodził się Knot DNS. To oprogramowanie, które odrzuca archaiczne rozwiązania na rzecz absolutnej wydajności. Knot DNS to otwartoźródłowy (GPLv3), wysoce wydajny, wyłącznie autorytatywny serwer DNS, napisany w czystym języku C. Za jego stworzeniem i rozwojem stoi CZ.NIC – rejestrator czeskiej domeny narodowej (.cz). Powstał z konkretnej potrzeby: Czesi potrzebowali serwera, który bez zająknięcia obsłuży setki tysięcy zapytań na sekundę i przetrwa zmasowane ataki sieciowe na infrastrukturę państwową. Autorytatywny, czyli jaki? Zrozumienie Knota wymaga oddzielenia dwóch funkcji DNS, które oprogramowanie takie jak BIND historycznie łączyło: Serwer rekursywny (Resolver): Odpytuje internet w Twoim imieniu (np. DNSy Google 8.8.8.8 lub domowy Pi-hole). Pyta cały świat: "Gdzie jest wp.pl?". Serwer autorytatywny: Nie szuka niczego w sieci. Jest właścicielem konkretnej „książki telefonicznej” (np. Twojej domeny) i odpowiada tylko na pytania o nią. Gdy ktoś zapyta go o cudzą stronę, po prostu odrzuca połączenie. Knot DNS należy wyłącznie do tej drugiej grupy. Zalety i mocne strony Ekstremalna wydajność: Architektura Knota opiera się na wielowątkowości i bezkolizyjnym (lock-free) dostępie do danych. W testach potrafi odpowiadać na miliony zapytań szybciej niż jakikolwiek konkurent. Minimalne zużycie zasobów: Potrafi utrzymać w pamięci tysiące stref (domen) zużywając ułamek pamięci RAM, jakiej wymagałby BIND. Perfekcyjna obsługa DNSSEC: Knot potrafi w pełni automatycznie podpisywać domeny kluczami kryptograficznymi (DNSSEC) w locie, zwalniając administratora z ręcznego rotowania kluczami. Bezpieczeństwo z założenia (Security by Design): Brak funkcji rekursywnej eliminuje najczęstszy wektor ataków na serwery DNS – wykorzystanie ich jako wzmacniaczy w atakach DDoS (tzw. Open Resolver). Knota można wystawić na publiczny adres IP bez obaw. Wady i ograniczenia Brak GUI: To oprogramowanie stworzone przez inżynierów dla inżynierów. Zarządza się nim wyłącznie przez pliki konfiguracyjne tekstowe lub przez interfejs CLI (knotc). Tylko autorytatywność: Nie użyjesz go w domu jako własnego resolvera do blokowania reklam (do tego służy bliźniaczy projekt – Knot Resolver). Krzywa uczenia się: Ze względu na rygorystyczne podejście do standardów RFC, Knot nie wybacza błędów w składni stref. Plik konfiguracyjny (zone file) musi być napisany bezbłędnie, inaczej usługa po prostu odmówi załadowania domeny. Dla administratorów utrzymujących własne serwery, aplikacje SaaS czy infrastrukturę hostingową, Knot DNS to obecnie najlepszy, precyzyjny wybór do serwowania własnych domen w sieci. ### Bezpieczeństwo PHP 8.x w pigułce PHP napędza znaczną część internetu. Choć gałąź PHP 8.x przyniosła ogromny skok wydajności, nowoczesne typowanie danych i szereg wbudowanych zabezpieczeń, żaden język programowania nie obroni się sam, jeśli środowisko serwerowe zostanie pozostawione w domyślnej konfiguracji "wszystko dozwolone". Jednym z najprostszych, a zarazem najskuteczniejszych kroków w kierunku twardego hardeningu (utwardzania) serwera jest wykorzystanie dyrektywy disable_functions w pliku konfiguracyjnym php.ini. Przyjrzyjmy się bliżej, dlaczego warto z niej skorzystać i które funkcje należy bezwzględnie odciąć od świata. Czym jest disable_functions i dlaczego jest kluczowe? Wyobraź sobie sytuację idealną: kod Twojej strony, wtyczki oraz motywy są zawsze czyste i wolne od błędów. W rzeczywistości jednak aplikacje webowe bywają złożone, a luka w przestarzałej wtyczce lub podatność typu SQL Injection / File Upload może pozwolić intruzowi na wgranie złośliwego pliku (tzw. Webshella). Gdy napastnik uzyska już taki punkt zaczepienia, jego kolejnym krokiem jest próba wykonania poleceń w systemie operacyjnym (np. pobrania złośliwego oprogramowania, przeszukania plików konfiguracyjnych czy próby eskalacji uprawnień). I tu z pomocą przychodzi disable_functions. Blokując te funkcje na poziomie interpretera PHP, odbierasz intruzowi narzędzia do wykonywania jakichkolwiek poleceń systemowych – nawet jeśli uda mu się przemycić kod na serwer. Czarwona lista: Co dokładnie warto zablokować i dlaczego? W pliku konfiguracyjnym php.ini możesz wskazać listę funkcji, które mają zostać całkowicie wyłączone. Oto najgroźniejsze z nich i powody, dla których powinny znaleźć się na liście blokowanych: system Co robi: Uruchamia zewnętrzne programy i natychmiast wypisuje ich wynik bezpośrednio w przeglądarce. Dlaczego blokować: Klasyczna brama do natychmiastowego wykonania dowolnego kodu systemowego przez napastnika (RCE – Remote Code Execution). shell_exec (orad operator ` - tzw. backticks) Co robi: Wykonuje polecenia systemowe przez powłokę i zwraca cały wynik jako ciąg znaków. Dlaczego blokować: Ulubiona funkcja autorów webshelli do sprawdzania stanu systemu, przeglądania katalogów czy wywoływania skryptów atakujących. passthru Co robi: Uruchamia polecenie systemowe i przesyła surowe dane zwrotne bezpośrednio do przeglądarki (często używane do strumieniowania danych binarnych). Dlaczego blokować: Kolejny wektor umożliwiający bezwzględne przejęcie kontroli nad procesami systemowymi. how_source / highlight_file Co robi: Odczytuje plik i wyświetla jego zawartość z pokolorowaną składnią PHP. Dlaczego blokować: Choć brzmi niepozornie, funkcja ta może posłużyć do podejrzenia poufnych plików źródłowych (np. plików konfiguracyjnych z hasłami do bazy danych czy kluczami API), jeśli napastnik zmusi skrypt do odczytania samego siebie. Wskazówka: Standardowe, dobrze napisanego aplikacje webowe (jak systemy zarządzania treścią czy nowoczesne frameworki) nie potrzebują żadnej z powyższych funkcji do normalnego działania. Ich wyłączenie w żaden sposób nie wpłynie na funkcjonalność Twojej strony. Co jeszcze warto zrobić w PHP 8.x, aby podnieść bezpieczeństwo? Samo wyłączenie funkcji systemowych to świetny początek. Warto jednak dopracować konfigurację php.ini o kilka dodatkowych, fundamentalnych zasad: Ukrycie wersji PHP (expose_php = Off) Domyślnie PHP dodaje w nagłówkach HTTP informację o swojej dokładnej wersji. Po co ułatwiać życie skanerom podatności szukającym konkretnych dziur w starszych podwersjach? Wyłączenie tej opcji sprawia, że serwer milczy na temat tego, co "siedzi pod maską". Rozsądne zarządzanie błędami (display_errors = Off) W środowisku produkcyjnym błędy PHP nigdy nie powinny pokazywać się na ekranie odwiedzającego. Taki komunikat może zdradzić strukturę katalogów na serwerze, używane ścieżki czy fragmenty zapytań SQL. Zamiast tego włącz logowanie błędów do bezpiecznego, niedostępnego z zewnątrz pliku (log_errors = On). Ochrona ciasteczek sesyjnych (session.cookie_httponly = On oraz session.cookie_secure = On) Zabezpiecza sesje użytkowników przed kradzieżą za pomocą skryptów stron trzecich (ataki XSS) oraz wymusza przesyłanie ciasteczek wyłącznie przez szyfrowane połączenie HTTPS. Podsumowanie Bezpieczeństwo strony opartej na PHP to nie dzieło przypadku, a suma małych, przemyślanych kroków konfiguracyjnych. Blokada funkcji takich jak system czy shell_exec jest kluczowa – robisz to raz, a zyskujesz potężną warstwę obrony przed skutkami ewentualnych podatności w oprogramowaniu. Dbaj o higienę swojego środowiska, a Twoja strona odwdzięczy się stabilnością i niezawodnością! ### Banner BSNM ### CrowdSec: Nowoczesny zamiennik Fail2Ban i zaawansowana ochrona serwera W dobie zautomatyzowanych ataków typu brute-force, skanerów podatności i botnetów, klasyczne rozwiązania takie jak Fail2Ban – oparte na powolnym, liniowym analizowaniu logów za pomocą wyrażeń regularnych (regex) – stają się wąskim gardłem serwerów. Odpowiedzią na te wyzwania jest CrowdSec – nowoczesne narzędzie typu Open Source, udostępniane na liberalnej licencji MIT. Projekt, zrodzony we Francji, to nie tylko lokalny analizator logów. To potężny "cyfrowy monitoring sąsiedzki". Za rozwojem narzędzia stoi firma budująca globalną sieć wymiany informacji o zagrożeniach (Cyber Threat Intelligence - CTI). Sercem CrowdSeca jest silnik napisany w języku Go (Golang). Gwarantuje to potężną wydajność i minimalne zużycie pamięci RAM oraz procesora. Kiedy Twój serwer wykryje i zablokuje agresywne IP, informacja o tym trafia do wspólnej bazy, błyskawicznie chroniąc dziesiątki tysięcy innych serwerów na świecie. I w drugą stronę – Twój serwer otrzymuje listy złośliwych adresów od innych, blokując ataki zanim te w ogóle nastąpią. Instalacja CrowdSec na serwerze Linux Instalacja rdzenia systemu sprowadza się do dodania oficjalnego repozytorium i instalacji paczki bazowej (tzw. LAPI): curl -s https://install.crowdsec.net | sudo bash sudo apt-get install crowdsec Podczas instalacji CrowdSec automatycznie przeskanuje system, wykryje zainstalowane usługi (np. Nginx, Apache, SSH) i wgra odpowiednie parsery do czytania ich logów. Remediation Component (Dawniej "Bouncer") Sam rdzeń CrowdSeca to tylko analityk – czyta logi i podejmuje decyzje. Aby fizycznie odciąć atakującego od serwera, potrzebujesz "ochroniarza", czyli tzw. Remediation Component (w starszych poradnikach nazywanego Bouncerem). W przeszłości trzeba było instalować konkretne pakiety pod dany firewall (np. crowdsec-firewall-bouncer-iptables). Obecnie proces ten zunifikowano. Wystarczy zainstalować jeden zintegrowany komponent, który automatycznie wykryje, czy system używa nftables, iptables czy ipset: sudo apt-get install crowdsec-firewall-bouncer Zbrojenie serwera: Kolekcje i Scenariusze CrowdSec Hub oferuje gotowe zestawy reguł (kolekcje), które chronią przed specyficznymi atakami. Warto rozszerzyć domyślną ochronę za pomocą narzędzia cscli. Instalacja głównych kolekcji: sudo cscli collections install crowdsecurity/sshd crowdsecurity/apache2 crowdsecurity/postfix crowdsecurity/dovecot crowdsecurity/smb crowdsecurity/appsec-virtual-patching crowdsecurity/iptables Instalacja zaawansowanych scenariuszy dla serwerów WWW: sudo cscli scenarios install \crowdsecurity/http-backdoors-attempts \crowdsecurity/http-bad-user-agent \crowdsecurity/http-bf-wordpress_bf \crowdsecurity/http-crawl-non_statics \crowdsecurity/http-generic-bf \crowdsecurity/http-path-traversal-probing \crowdsecurity/http-probing \crowdsecurity/http-sensitive-files \crowdsecurity/http-sqli-probing \crowdsecurity/http-wordpress-scan \crowdsecurity/http-xss-probing \crowdsecurity/http-admin-interface-probing \ltsich/http-w00tw00t Po wdrożeniu nowych reguł, przeładuj silnik analityczny: sudo systemctl reload crowdsec Własna biała lista (Whitelist) - Infrastruktura jako Kod CrowdSec pozwala na definiowanie adresów IP, które nigdy nie powinny otrzymać bana (np. IP biura, domowe, serwery Baselinker). Użyjemy do tego dedykowanego pliku YAML. Krok 1: Stwórz plik białej listy: sudo touch /etc/crowdsec/parsers/s02-enrich/moje-adresy.yaml Krok 2: Otwórz plik edytorem (np. nano) i wklej poniższą strukturę: name: uzytkownik/moje-adresy description: "Moja własna biała lista adresów IP" whitelist: reason: "Zaufane IP administratora i zewnętrznych API" ip: - "1.2.3.4" # Twoje stałe IP domowe cidr: - "192.168.1.0/24" # Twoja sieć lokalna/VPN Krok 3 (Pro-Tip): CrowdSec podczas dużych aktualizacji może modyfikować pliki konfiguracyjne. Aby zabezpieczyć naszą listę przed przypadkowym skasowaniem, nakładamy na plik systemową flagę niezmienności (immutable): sudo chattr +i /etc/crowdsec/parsers/s02-enrich/moje-adresy.yaml (Gdy w przyszłości zechcesz edytować ten plik, zdejmij flagę komendą: sudo chattr -i …) Przeładuj usługę: sudo systemctl reload crowdsec. Hardening: Zamykanie CrowdSeca w klatce (Systemd Sandboxing) CrowdSec z definicji wymaga uprawnień administratora (roota), aby zarządzać zaporą sieciową. Zgodnie z zasadą ograniczonego zaufania (Zero Trust), możemy ograniczyć uprawnienia tego konkretnego procesu, wykorzystując mechanizmy izolacji wbudowane w demona Systemd. Edytuj jednostkę usługi: sudo systemctl edit crowdsec Wklej poniższą konfigurację w otwartym oknie: [Service] # Montuje cały system jako "tylko do odczytu" ProtectSystem=strict # Zezwala na modyfikacje tylko we własnych katalogach roboczych ReadWritePaths=/etc/crowdsec /var/lib/crowdsec /var/log/crowdsec /tmp /run # Zaawansowana izolacja ProtectHome=true PrivateTmp=true NoNewPrivileges=true DeviceAllow=/dev/null rw RestrictRealtime=true Zastosuj zmiany: sudo systemctl daemon-reload sudo systemctl restart crowdsec Automatyzacja aktualizacji: Systemd Timers (Zamiast Crona) W starszych poradnikach zalecano dodawanie komend aktualizujących (cscli hub update) do systemowego Crontaba. Dziś to rozwiązanie przestarzałe. CrowdSec dostarcza nowoczesny Timer Systemd, który asynchronicznie dba o aktualizacje bazy wiedzy. Wystarczy go włączyć i uruchomić: sudo systemctl enable crowdsec-update.timer sudo systemctl start crowdsec-update.timer Systemd sam zadba o logowanie przebiegu aktualizacji w głównym dzienniku (journalctl), zwalniając Cię z konieczności tworzenia własnych plików logów. Ochrona niestandardowych aplikacji (Log Acquisition) Jeśli używasz paneli hostingowych takich jak ISPConfig, musisz poinstruować CrowdSeca, gdzie leżą pliki logów poszczególnych stron (tzw. Acquisition). Edytuj plik /etc/crowdsec/acquis.yaml i upewnij się, że zawiera odpowiednie ścieżki: filenames: - /var/www/clients/client*/web*/log/error.log - /var/www/clients/client*/web*/log/access.log labels: type: apache2 # (zmień na nginx, jeśli to Twój główny serwer) Po edycji wykonaj sudo systemctl reload crowdsec. Możesz zweryfikować, czy silnik poprawnie widzi i interpretuje logi konkretnej strony, wydając komendę: sudo cscli explain --type apache2 --file /var/www/twoja-strona.pl/log/access.log Bonus: Agresywny "Honey-Pot" (Tylko dla serwerów bez WordPressa) Jeśli Twój serwer hostuje dedykowane aplikacje, a nie używa WordPressa, to każda próba wywołania pliku wp-login.php jest ewidentnym skanowaniem (atakiem). Możemy stworzyć bardzo agresywny scenariusz, który permanentnie odetnie każdego bota za zaledwie jedno takie zapytanie. Krok 1: Stwórz plik scenariusza: sudo nano /etc/crowdsec/scenarios/wp-honeypot.yaml Krok 2: Wklej zawartość łapiącą krytyczne rozszerzenia i wirtualne ścieżki: type: leaky name: custom/wp-honeypot description: "Agresywne wykrywanie botów szukających plików wrażliwych na aplikacjach non-WP" filter: | evt.Meta.log_type == 'http_access-log' && ( evt.Parsed.request matches `(?i).*wp-login\.php.*` || evt.Parsed.request matches `(?i).*wp-admin.*` || evt.Parsed.request matches `(?i).*xmlrpc\.php.*` || evt.Parsed.request matches `(?i).*wp-config\..*` || evt.Parsed.request matches `(?i).*\.env.*` || evt.Parsed.request matches `(?i).*\.git/config.*` || evt.Parsed.request matches `(?i).*\.sql.*` || evt.Parsed.request matches `(?i).*\.bak.*` || evt.Parsed.request matches `(?i).*\.php~.*` ) leakspeed: "0s" capacity: 0 blackhole: 1m Krok 3: W pliku /etc/crowdsec/profiles.yaml dodaj na samej górze sekcję wydłużającą czas blokady dla tego konkretnego scenariusza (np. na 30 dni): name: long_term_ban_wp filters: - Alert.GetScenario() == 'custom/wp-honeypot' decisions: - type: ban duration: 720h on_success: break Przeładuj usługę sudo systemctl reload crowdsec. Dlaczego to działa tak świetnie? .env.* – Wyłapuje próby wykradzenia kluczy API, haseł do baz i danych chmurowych AWS (to obecnie "Święty Graal" cyberprzestępców). .git/config – Blokuje boty próbujące sklonować cały kod źródłowy Twojej aplikacji. .bak / .sql – Zatrzymuje poszukiwaczy zapomnianych backupów baz danych, które programiści często zostawiają w publicznych katalogach. Niezbędnik Administratora – Komendy (Ściągawka) Jeśli wdrażasz CrowdSec, możesz z czystym sumieniem wyłączyć i odinstalować Fail2Ban. Poniżej najważniejsze polecenia do zarządzania zaporą: Zarządzanie blokadami (Decisions): cscli decisions list – Wyświetla tabelę aktywnych banów (kto, za co i na jak długo). cscli decisions add --ip 1.2.3.4 --reason "manual ban" – Ręczne zablokowanie adresu. cscli decisions delete --ip 1.2.3.4 – Ręczne odblokowanie (zdjęcie bana). Monitorowanie Systemu: cscli metrics – Pokazuje statystyki w czasie rzeczywistym: ile linii zostało przeczytanych, i które scenariusze są najskuteczniejsze. cscli alerts list – Historia wykrytych zagrożeń (nawet tych, które nie zaowocowały blokadą). cscli capi status – Sprawdza status szyfrowanego połączenia z Centralnym API (CTI), skąd pobierane są "bazy wirusów" od innych użytkowników. Wskazówka: Jeśli używasz narzędzi CI/CD lub własnych skryptów Bash, możesz dodać flagę -o json lub -o raw na końcu większości komend cscli, co wyrzuci wyniki w formacie maszynowym, gotowym do automatycznego parsowania. ### Test Szybkości Strony: 6 najlepszych narzędzi na 2026 rok Aktualizacja: 19 sierpnia 2026 r Test szybkości strony jako klucz do sukcesu W dobie internetu o ekstremalnie wysokich oczekiwaniach użytkowników i rosnącej konkurencji, szybkość strony odgrywa kluczową rolę. Wpływa ona na doświadczenie użytkownika (UX), pozycję w wynikach wyszukiwania Google (Core Web Vitals) oraz bezpośrednio na wskaźniki konwersji. Test szybkości strony pozwala zdiagnozować wąskie gardła, które spowalniają witrynę, i znaleźć sposoby na ich natychmiastowe rozwiązanie. W 2026 roku wybór narzędzi do mierzenia wydajności witryn jest ogromny, jednak tylko kilka z nich wyróżnia się bezkompromisową dokładnością i realną przydatnością diagnostyczną. Oto zestawienie 6 najlepszych narzędzi do testowania szybkości strony polecanych na 2026 rok: Web Dev, BSNM cURL Checker, Pingdom Tools, GTmetrix, Cloudflare Observatory i WebPageTest. Proponowane narzędzia na 2026 rok Web Dev – Kompleksowy Test od Google Web Dev (dostępny na web.dev) to flagowe narzędzie opracowane przez Google, które pozwala na dogłębną ocenę kondycji witryny. Narzędzie bazuje na najnowszym silniku Lighthouse, analizując stronę pod kątem wskaźników Core Web Vitals i generując szczegółowy raport. Skupia się nie tylko na surowej wydajności, ale również na dostępności (a11y), dobrych praktykach i SEO. Zalety Web Dev: Dokładność i precyzja wskaźników: Analiza obejmuje kluczowe metryki Google, w tym LCP (Largest Contentful Paint), INP (Interaction to Next Paint - standard od 2024 r.) oraz CLS (Cumulative Layout Shift). Spójność z algorytmem Google: Ponieważ jest to narzędzie twórców najpopularniejszej wyszukiwarki, optymalizacja pod jego wskazówki bezpośrednio przekłada się na wyniki SEO. Przejrzysta punktacja: System ocen (0-100) z podziałem na kolory ułatwia błyskawiczną ocenę kondycji strony.. Wady Web Dev: Przytłaczający poziom detali: Raporty są bardzo obszerne technicznie, co może stanowić barierę dla osób bez wiedzy deweloperskiej. Zależność od połączenia sieciowego: Testy uruchamiane w przeglądarce mogą być podatne na lokalne wahania przepustowości sieci testującego. BSNM cURL Checker – Surowa ocena wydajności serwera (TTFB) BSNM cURL Checker (dostępny na https://www.bsnm.net/curl-checker/) to autorskie, minimalistyczne narzędzie diagnostyczne. W przeciwieństwie do kombajnów analitycznych, to narzędzie skupia się wyłącznie na czystej responsywności infrastruktury serwerowej za pomocą zapytań cURL. Jest to idealny wybór do mierzenia surowego czasu odpowiedzi (Time to First Byte - TTFB) bez narzutu renderowania przeglądarki. Zalety BSNM cURL Checker: Czysta analiza infrastruktury: Narzędzie bada wyłącznie czas połączenia i odpowiedź serwera (DNS, TCP, TLS, TTFB), pomijając wagę obrazków czy skryptów, co jest bezcenne przy optymalizacji backendu i bazy danych. Szybkość i bezkompromisowość: Test wykonuje się błyskawicznie, dostarczając precyzyjne czasy w milisekundach. Brak przekłamań renderowania: Odcina wpływ wydajności lokalnej przeglądarki czy ciężkiego JavaScriptu na końcowy wynik. Wady BSNM cURL Checker: Pojedyncza lokalizacja testowa: Narzędzie operuje wyłącznie z serwera zlokalizowanego w Warszawie. Nie pozwala to na ocenę opóźnień globalnych dla użytkowników z innych kontynentów. Wymaga technicznej interpretacji: Narzędzie podaje surowe czasy połączeń, co wymaga od użytkownika zrozumienia protokołów sieciowych. Pingdom Tools – Wszechstronny Test z Analizą Kaskadową Pingdom Tools (tools.pingdom.com) to klasyk w branży, niezmiennie popularny wśród webmasterów. Dzięki przejrzystemu interfejsowi wykresów kaskadowych (waterfall), Pingdom pozwala na szybką identyfikację zasobów obciążających witrynę. Zalety Pingdom Tools: Czytelny raport kaskadowy: Narzędzie w bardzo przystępny sposób wizualizuje kolejność i czas ładowania każdego pojedynczego pliku (CSS, JS, obrazy). Szybka identyfikacja "wąskich gardeł": Pozwala łatwo namierzyć nieproporcjonalnie ciężkie pliki multimedialne lub zewnętrzne skrypty blokujące renderowanie. Prosty interfejs: Raporty są zrozumiałe również dla osób z działów marketingu i analityki. Wady Pingdom Tools: Brak obsługi nowoczesnych kompresji: Narzędzie bywa niekompatybilne z nowoczesnymi standardami kompresji (np. Brotli), co często prowadzi do fałszywych alarmów o braku optymalizacji zasobów. Podejście "Desktop-first": W erze wskaźników Mobile-first, Pingdom nadal mocniej faworyzuje testy z perspektywy połączeń dla komputerów stacjonarnych. GTmetrix – Zaawansowana Diagnostyka Wydajności GTmetrix (gtmetrix.com) to potężne narzędzie diagnostyczne, które łączy dane z Google Lighthouse z zaawansowaną analizą strukturalną. Daje użytkownikom jedną z najbardziej precyzyjnych ocen na rynku. Zalety GTmetrix: Holistyczne podejście: GTmetrix analizuje wydajność zarówno pod kątem nowoczesnych wskaźników Web Vitals, jak i historycznej struktury kodu. Możliwość testowania z różnych lokalizacji i urządzeń: Zarejestrowani użytkownicy mogą symulować połączenia z różnych regionów świata na zróżnicowanych typach połączeń sieciowych (np. symulacja sieci 3G/4G). Historia wyników i nagrania wideo: Umożliwia śledzenie zmian wydajności w czasie oraz odtwarzanie wizualnego procesu ładowania się strony. Wady GTmetrix: Restrykcje dla darmowych kont: Pełen potencjał narzędzia (zmiana lokalizacji, testy mobilne) wymaga założenia konta, a często płatnej subskrypcji. Czas trwania testu: Ze względu na ogrom pobieranych danych, test nierzadko zmusza użytkownika do czekania w wirtualnej kolejce. Cloudflare Observatory – Głęboka Integracja i Monitorowanie Cloudflare Observatory to potężne rozwiązanie wbudowane w ekosystem Cloudflare. Narzędzie to odeszło od jednorazowych testów na rzecz ciągłego monitorowania wydajności witryny u realnych użytkowników (RUM - Real User Monitoring). Zalety Cloudflare Observatory: Dane oparte na realnych użytkownikach: Monitoruje wydajność u rzeczywistych odwiedzających stronę, a nie tylko w sztucznym środowisku testowym. Błyskawiczne propozycje optymalizacji: Bezpośrednia integracja z panelem Cloudflare pozwala na włączenie odpowiednich mechanizmów optymalizacyjnych jednym kliknięciem. Analiza globalna bez ograniczeń: Z racji globalnej infrastruktury Cloudflare, narzędzie idealnie obrazuje problemy regionalne na całym świecie. Wady Cloudflare Observatory: Ograniczenie do ekosystemu: Wymaga przypięcia domeny do serwerów DNS i usług Cloudflare. Zaawansowane analizy za paywallem: Część najbardziej wartościowych danych analitycznych i historycznych dostępna jest tylko w płatnych planach. WebPageTest – Branżowy Standard dla Inżynierów WebPageTest (webpagetest.org) to zaawansowane środowisko diagnostyczne przeznaczone dla profesjonalistów z dziedziny wydajności (Web Performance). Otwarty kod i potężne możliwości konfiguracji czynią z niego ostateczne narzędzie audytorskie. Zalety WebPageTest: hirurgiczna precyzja ustawień: Pozwala na testowanie pod dowolną przeglądarką, na fizycznych (nie emulowanych!) urządzeniach mobilnych z precyzyjnie przyciętą przepustowością łącza. Zaawansowane wykresy kaskadowe i analiza połączeń: Detaliczna rozpiska nagłówków, nawiązywania połączeń TLS i trasowania. Testy "First View" i "Repeat View": Narzędzie w jednym teście bada wydajność ładowania przy pustym cache'u, jak i przy powrotnej wizycie użytkownika. Wady WebPageTest: Stroma krzywa uczenia się: Interfejs jest ascetyczny i przytłaczająco techniczny. Początkujący użytkownicy mogą czuć się zagubieni. Długi czas oczekiwania: Ze względu na popularność i darmowy charakter narzędzia na fizycznych urządzeniach, na wyniki w kolejce czeka się niekiedy po kilka minut. Jakie Narzędzie do Testu Szybkości Strony Wybrać? Wybór odpowiedniego narzędzia w 2026 roku zależy od tego, jaki element architektury chcemy zbadać. Do optymalizacji pod kątem widoczności w Google i wrażeń użytkowników, Web Dev pozostaje absolutną koniecznością. Jeśli podejrzewasz problemy po stronie serwera lub chcesz zmierzyć surowy czas reakcji (TTFB) i wydajność infrastruktury z polskiej lokalizacji, BSNM cURL Checker dostarczy konkretnych odpowiedzi. Pingdom Tools sprawdzi się do szybkiego znalezienia ciężkich obrazków czy skryptów, natomiast GTmetrix i WebPageTest to potężne, analityczne kombajny dla deweloperów szukających mikrosekundowych optymalizacji. Dla witryn spiętych pod sieć CDN, Cloudflare Observatory oferuje niezrównany pogląd na działanie strony w skali globalnej. Niezależnie od wybranych narzędzi, regularne testowanie i diagnozowanie "wąskich gardeł" to nieodłączny element nowoczesnej strategii zarządzania witryną, który bezpośrednio przekłada się na wyniki biznesowe. ### Optymalizacja MariaDB/MySQL na Raspberry Pi 5: Praktyczne podejście do wydajności Optymalizacja silnika relacyjnej bazy danych (MariaDB / MySQL) to jedno z najważniejszych zadań w życiu administratora serwera. Wielu z nich ucieka od tego tematu, polegając na konfiguracji domyślnej, dopóki strona nie zacznie generować błędów "Connection timed out". Tymczasem odpowiednie dostrojenie bazy do dostępnego sprzętu – takiego jak np. Raspberry Pi 5 wyposażone w 8 GB RAM i dysk NVMe – potrafi dwukrotnie zwiększyć liczbę obsługiwanych zapytań na sekundę (QPS) przy jednoczesnym obniżeniu czasu odpowiedzi serwera (TTFB). Pamiętaj jednak o złotej zasadzie: w bazach danych nie ma nic za darmo. Skrócenie czasu zapytania zazwyczaj odbywa się kosztem większego zużycia pamięci RAM, a przyspieszenie operacji zapisu (Insert/Update) często oznacza drobny kompromis w kwestii bezpieczeństwa danych podczas nagłej przerwy w dostawie prądu. Diagnoza: Jak sprawdzić, co poprawić? Nie optymalizuj bazy "w ciemno". Narzędziem, od którego zaczyna każdy administrator, jest skrypt MySQLTuner. Pobiera on na żywo statystyki z pracującego silnika i wskazuje wąskie gardła. Ważne: Zanim uruchomisz tuner, upewnij się, że serwer bazy danych działał pod normalnym obciążeniem (z normalnym ruchem użytkowników) przez co najmniej 24 godziny. Włączenie go zaraz po restarcie bazy da fałszywe, często abstrakcyjne wyniki. Pobranie i uruchomienie skryptu: wget http://mysqltuner.pl/ -O mysqltuner.pl wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt perl mysqltuner.pl --host 127.0.0.1 Konfiguracja (Plik 50-server.cnf) Wszystkie poniższe wartości ustawiamy w pliku konfiguracyjnym serwera (najczęściej /etc/mysql/mariadb.conf.d/50-server.cnf lub /etc/mysql/my.cnf) pod nagłówkiem [mysqld]. Poniższe wartości zostały dobrane dla sprzętu klasy Raspberry Pi 5 (8 GB RAM / NVMe) i serwisu o umiarkowanym/dużym natężeniu ruchu. Połączenia i "odcinanie" nieaktywnych sesji max_connections = 150 – Maksymalna liczba jednoczesnych połączeń. Wzrost tej wartości chroni przed błędem "Too many connections", ale każde połączenie rezerwuje odrobinę RAM-u. wait_timeout = 60 (lub nawet 30) – Domyślnie serwer czeka aż 8 godzin (28800 sekund), zanim zamknie nieaktywne połączenie od skryptu PHP. Obniżenie tej wartości do 60 sekund błyskawicznie zwalnia zasoby (RAM i gniazda). Pamięć podręczna (Wycofane Query Cache) W starych poradnikach znajdziesz mnóstwo dyrektyw zaczynających się od query_cache_*. Uwaga: W nowoczesnej architekturze MariaDB 11 oraz MySQL 8, Query Cache został całkowicie porzucony i usunięty z kodu. Silniki te polegają na optymalizatorach, architekturze InnoDB oraz na zewnętrznym cache'u obiektowym (jak Valkey/Redis obsługiwanym na poziomie PHP). Skupiamy się zatem na definicjach tabel: table_open_cache = 2000 – Liczba plików z tabelami otwartymi w pamięci. Przyspiesza dostęp, ale wymaga odpowiednio wysokiego limitu otwartych plików (tzw. ulimit w systemie operacyjnym). table_definition_cache = 1400 – Ile definicji schematów (struktur) tabel trzymać w RAM-ie. Zmniejsza narzut na operacje I/O dysku. Serce systemu: Optymalizacja silnika InnoDB Dziś niemal każda nowoczesna baza (w tym WordPress) korzysta wyłącznie z silnika InnoDB. To jego konfiguracja decyduje o prędkości Twojej strony. innodb_buffer_pool_size = 2G (lub nawet 3G/4G) – Najważniejszy parametr w całym pliku. Określa, ile pamięci RAM przypisujemy buforowi, który w locie ładuje dane i indeksy. Zasada: im więcej (do około 60-70% całkowitego RAM-u maszyny, jeśli to dedykowany serwer bazy), tym rzadziej baza musi sięgać do dysku. innodb_log_file_size = 512M – Rozmiar dziennika transakcji (tzw. Redo Log). Duży rozmiar potężnie przyspiesza zapis do bazy (szczególnie operacje masowe), ale w przypadku "twardego" resetu zasilania, baza będzie się dłużej odbudowywać przy ponownym rozruchu. innodb_log_buffer_size = 32M – Zwiększa rozmiar danych "w locie", zanim zostaną zrzucone do fizycznego pliku Redo Logu na dysku. innodb_flush_log_at_trx_commit = 2 – Kolejny Gamechanger dla wydajności. Wartość 1 (domyślna) daje 100% pewności zapisu kosztem powolnego działania. Wartość 2 daje potężnego "kopa" wydajnościowego do operacji zapisu (np. przy imporcie, czy ciężkim WooCommerce). Ryzyko? Jeśli system (np. zasilanie RPi) ulegnie awarii (kernel panic / hard reset), możesz stracić do 1 sekundy transakcji. Dla większości stron WWW jest to ryzyko absolutnie akceptowalne w zamian za uzyskane przyspieszenie. innodb_thread_concurrency = 4 – Ogranicza liczbę aktywnych wątków do fizycznej ilości rdzeni w Raspberry Pi 5. Chroni system przed tzw. Context Switching (przeciążeniem procesora wynikającym z żonglowania zbyt dużą ilością zapytań naraz). Optymalizator MariaDB 11 a dyski NVMe / SSD MariaDB 11 wprowadza nowy, bardzo szczegółowy model kosztów optymalizatora (optimizer_*_cost). W skrócie: silnik przed wykonaniem zapytania zgaduje, jak najszybciej odzyskać dane. Poniższe wartości obniżają wagę "kary" dla operacji dyskowych. Dlaczego? Domyślne wagi były pisane w erze powolnych, talerzowych dysków HDD. Dziś, dysponując dyskiem NVMe, odczyt jest na tyle szybki, że chcemy zachęcić optymalizator do częstszego korzystania z tych zapytań kosztem skomplikowanych pętli w pamięci. optimizer_disk_read_cost = 5 optimizer_disk_read_ratio = 0.01 optimizer_index_block_copy_cost = 0.01 optimizer_key_compare_cost = 0.005 optimizer_key_copy_cost = 0.01 optimizer_key_lookup_cost = 0.2 optimizer_row_copy_cost = 0.03 optimizer_row_lookup_cost = 0.1 Podsumowanie: Realne efekty Po wdrożeniu tych kilku linijek i zrestartowaniu usługi (sudo systemctl restart mariadb), różnica w wydajności na sprzęcie typu RPi 5 czy VPS jest drastyczna. W moim środowisku testowym czas realizacji poszczególnych zapytań spadł o ponad połowę, a przepustowość wzrosła dwukrotnie. Pamiętaj jednak: optymalizacja to proces ciągły. Aplikuj zmiany stopniowo, monitoruj zużycie RAM-u (komendą htop) i sprawdzaj logi pod kątem ewentualnych ostrzeżeń po każdym restarcie. optymalizacja mysql test ### Aktualizacja MariaDB 10 do MariaDB 11 Wprowadzenie Czy warto wykonać aktualizację MariaDB do najnowszej wersji 11.6? MariaDB 10, mimo wielu lat solidnej pracy, jest już przestarzała. MariaDB 11 przynosi znaczące zmiany, a w tej wersji znajdziemy usprawnienia, które mogą podnieść wydajność i bezpieczeństwo bazy danych. Co to jest MariaDB? MariaDB to popularna baza danych open-source, która wywodzi się z MySQL. Jest szeroko stosowana na serwerach linuksowych, ale również na wielu innych platformach. Aktualizacja MariaDB do wersji 11 przynosi ulepszenia, które omówię w dalszej części. Kluczowe Nowości w MariaDB 11 Ulepszenia i Optymalizacja Wydajności MariaDB 11 zapewnia istotne usprawnienia, które mogą przyspieszyć czas odpowiedzi na zapytania. Dzięki zastosowaniu nowoczesnych algorytmów przetwarzania zapytań, MariaDB 11 radzi sobie lepiej przy analizie dużych zbiorów danych, co jest dużym krokiem naprzód w porównaniu do wersji 10. Nowe Funkcje i Rozszerzenia W MariaDB 11 znajdziemy szereg nowych funkcji, które wspierają programistów i administratorów. Ulepszone wsparcie dla JSON, nowe typy indeksów, które zwiększają wydajność zapytań, oraz zaawansowane opcje replikacji i kopii zapasowych. Aktualizacja MariaDB w tej wersji jest więc korzystna dla tych, którzy potrzebują stabilnego i nowoczesnego systemu baz danych. Poprawki Bezpieczeństwa i Prywatności Bezpieczeństwo bazy danych to kluczowy aspekt, a MariaDB 11 przynosi nowe mechanizmy szyfrowania, ulepszone zarządzanie dostępem oraz audyt. To sprawia, że ochrona danych w MariaDB jest teraz znacznie bardziej zaawansowana, co jest istotne dla firm zobowiązanych do przestrzegania regulacji w zakresie ochrony prywatności. Łatwa Migracja i Zgodność Aktualizacja MariaDB została zaprojektowana tak, aby migracja z wersji 10 do 11 była jak najprostsza. Deweloperzy mogą oczekiwać bezproblemowej kompatybilności z istniejącymi bazami danych i aplikacjami, choć zawsze warto przeprowadzić dokładne testy. Aktualizacja MariaDB Krok po Kroku: Przewodnik Aktualizacja MariaDB w poniższej instrukcji została przeprowadzona na przykładzie Debian 12. Można ją jednak dostosować do innych systemów, takich jak Ubuntu. Dodaj repozytorium MariaDB Utwórz plik /etc/apt/sources.list.d/mariadb.sources i dodaj do niego poniższą konfigurację: X-Repolib-Name: MariaDB Types: deb URIs: https://mirrors.aliyun.com/mariadb/repo/11.6/debian Suites: bookworm Components: main Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp Następnie zaimportuj klucz GPG: $ apt install apt-transport-https curl $ mkdir -p /etc/apt/keyrings $ curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp' Zaktualizuj MariaDB Wykonaj polecenia: $ apt update $ apt upgrade $ apt autoremove Doinstaluj Brakujące Pakiety $ apt install libsnappy1v5 mariadb-plugin-provider-bzip2 mariadb-plugin-provider-lz4 mariadb-plugin-provider-lzma mariadb-plugin-provider-lzo mariadb-plugin-provider-snappy Zwiększ Bezpieczeństwo MariaDB Uruchom: $ mysql_secure_installation Następnie ustaw hasło dla użytkownika root i skonfiguruj pozostałe opcje zgodnie z instrukcją. Zrestartuj i Zweryfikuj Poprawność Aktualizacji $ systemctl restart mariadb $ systemctl status mariadb Jeśli aktualizacja MariaDB przebiegła pomyślnie, zobaczysz odpowiedni komunikat o statusie usługi. Także informację o nowej wersji tego oprogramowania. aktualizacja mariadb status Korzyści z Aktualizacji MariaDB Na własnym przykładzie mogę powiedzieć, że aktualizacja MariaDB do wersji 11 nie przyniosła u mnie widocznych korzyści. Moja baza działa na serwerze Raspberry Pi 5 z 8 GB RAM, serwer korzysta z rozwiązań takich jak Redis i Cloudflare, które w znaczny sposób redukują liczbę zapytań do bazy. Jednak aktualizacja może być bardzo korzystna dla tych, którzy nie używają CDN ani cache'owania, szczególnie jeśli serwer jest mocno obciążony. Podsumowanie Aktualizacja MariaDB do wersji 11 może wymagać przygotowania, ale może też przynieść liczne korzyści, szczególnie w zakresie wydajności i bezpieczeństwa. Bez względu na to, czy prowadzisz bloga, sklep internetowy czy zarządzasz dużą bazą danych, aktualizacja MariaDB to krok, który może pomóc Ci osiągnąć lepszą stabilność i efektywność pracy bazy danych. Podziel się opinią na Forum ### Serwer na Raspberry Pi 5 po 6 miesiącach: Testy, stabilność i wnioski (cz. 10) Wstęp Obecnie mój Raspberry Pi 5 hostuje 10 stron internetowych, głównie opartych na WordPressie. Mimo to serwer zużywa tylko ułamek swoich zasobów, co daje mu spory zapas mocy do dalszego rozwoju. W poniższych testach sprawdziłem szybkość i wydajność serwera, aby zobaczyć, jak radzi sobie w rzeczywistych warunkach. Testy szybkości strony Aby ocenić jakość i szybkość ładowania strony, wykorzystałem narzędzia takie jak WebDev, Pingdom Tools oraz testy wydajności Apache AB. Wyniki są imponujące — większość wyników oscyluje wokół 100 punktów w WebDev, co jest świetnym wynikiem. Czy takie wysokie wartości punktowe są niezbędne do tego, aby stronę uznać za optymalną ? Oczywiście, zawsze warto dążyć do jak najlepszych wyników, ale testy te mają na celu głównie identyfikację potencjalnych problemów i niedociągnięć w optymalizacji strony. Testy internetowe test webDev dla urządzeń przenośnych test webDev dla urządzeń stacjonarnych test Pingdom test cloudflare Testy wydajności Apache AB Testy jakie przeprowadziłem z użyciem narzędzia Apache AB, symulują duże obciążenie serwera. Testy odbyły się z i bez CDN CloudFlare oraz z różnymi opcjami dodatkowymi, takimi jak APO (Automatic Platform Optimization) i Argo Smart Routing. Oto wyniki: Bez CDN CloudFlare: 60 zapytań, 20 jednoczesnych. Przepustowość łącza internetowego do 30 Mb/s Z CDN CloudFlare: 120 zapytań, 50 jednoczesnych Z CDN CloudFlare + APO: 1000 zapytań, 100 jednoczesnych Z CDN CloudFlare + APO + Argo: 1000 zapytań, 170 jednoczesnych Dzięki darmowej wersji CloudFlare zyskujemy dwukrotny wzrost wydajności, a po dodaniu płatnych usług takich jak APO i Argo, serwer internetowy może obsłużyć jeszcze większy ruch. W razie potrzeby można skorzystać z opcji Pro i usług takich jak Loadbalancing, co jeszcze bardziej zwiększy możliwości serwera. Wnioski Raspberry Pi 5, mimo swoich małych rozmiarów, świetnie radzi sobie jako serwer internetowy. W ciągu jednej minuty serwer obsługuje nawet do 1000 zapytań bez błędów, co oznacza, że spokojnie może obsłużyć kilka tysięcy wizyt dziennie. Jest to idealne rozwiązanie dla mniejszych stron internetowych, blogów czy małych firm, które szukają taniego, a jednocześnie wydajnego serwera. [Wstęp] Własny serwer na Raspberry Pi 5: Kompletny przewodnik krok po kroku [Część 1] Wybór akcesoriów i przygotowanie sprzętu [Część 2] Instalacja LAMP (Apache, MariaDB, PHP) [Część 3] Konfiguracja domeny i DNS dla serwera [Część 4] Panel ISPConfig 3: Instalacja i zarządzanie hostingiem [Część 5] Optymalizacja wydajności: Jak przyspieszyć strony WWW [Część 6] Bezpieczeństwo serwera: Jak skutecznie zabezpieczyć Raspberry Pi 5 [Część 7] Cloudflare: Darmowy SSL i dodatkowa ochrona [Część 8] Monitorowanie serwera: Instalacja Monit [Część 9] Własny NAS i magazyn danych na Raspberry Pi 5 [Część 10] [Jesteś tutaj] Testy stabilności: Serwer po 6 miesiącach pracy ### Własny serwer NAS na Raspberry Pi 5: Magazyn danych, SFTP i Nextcloud (cz. 9) Artykuł zaktualizowany 18 Sierpnia 2026 r. – treść dostosowana do najnowszych standardów Raspberry Pi 5 Własny NAS (Network Attached Storage) to nic innego jak scentralizowany dysk sieciowy. Służy do bezpiecznego przechowywania multimediów, dokumentów firmowych czy kopii zapasowych (backupów), dając Ci do nich dostęp z każdego urządzenia. Stawiając własny serwer internetowy (z panelem ISPConfig3) na Raspberry Pi 5, być może zastanawiałeś się, czy maszyna ta udźwignie dodatkowo rolę serwera plików. Odpowiedź brzmi: zdecydowanie tak. Malinka w wersji 5, wyposażona w interfejs PCIe i szybki dysk NVMe, deklasuje wydajnością wiele gotowych, komercyjnych i drogich rozwiązań NAS dostępnych w sklepach. Jeśli Twój system Linux, panel ISPConfig i strony WWW zajmują łącznie około 30-50 GB, a Ty zainwestowałeś w dysk NVMe o pojemności 512 GB lub 1 TB, grzechem byłoby nie wykorzystać pozostałej przestrzeni na własną chmurę. Jakie rozwiązanie wybrać? (Architektura dostępu) W sieci znajdziesz setki poradników opartych wyłącznie na jednym, starym rozwiązaniu. My jako administratorzy podejdziemy do tematu inżynieryjnie i podzielimy dostęp na cztery protokoły, zależnie od tego, kto i skąd ma mieć dostęp do plików: Samba (SMB) – Idealna do sieci domowej (LAN) dla komputerów z systemem Windows i telewizorów Smart TV. NFS – Najszybszy możliwy protokół, ale bez autoryzacji. Idealny do łączenia serwerów linuksowych wewnątrz sieci lokalnej. SFTP – Niezwykle bezpieczny, szyfrowany protokół oparty na SSH. Idealny do przesyłania plików przez Internet, bez konieczności zestawiania połączeń VPN. Nextcloud (Chmura WWW) – Nowoczesny kombajn przez przeglądarkę. Idealny do udostępniania linków znajomym i synchronizacji zdjęć z telefonu. Serwer Samby (SMB) - Tylko sieć lokalna Samba to klasyka. Pozwala zmapować dysk w systemie Windows tak, jakby był fizycznie podpięty do Twojego komputera. Instalacja: sudo apt install samba samba-common-bin Konfiguracja:Stwórzmy dedykowany katalog i użytkownika systemowego, który nie ma dostępu do powłoki (shell), a jedynie do plików: sudo useradd -M -d /home/nas -s /usr/sbin/nologin nas sudo mkdir -p /home/nas sudo chown nas:nas /home/nas sudo chmod 770 /home/nas Nadaj hasło dla Samby (będziesz go używał do logowania w Windowsie): sudo smbpasswd -a nas Edytuj plik konfiguracyjny /etc/samba/smb.conf i na samym końcu dopisz: [NAS_Prywatny] path = /home/nas valid users = nas read only = no create mask = 0770 directory mask = 0770 Zrestartuj usługę: sudo systemctl restart smbd. W systemie Windows otwórz Eksplorator plików, wpisz w pasku adresu \IP_TWOJEGO_SERWERA (np. \192.168.1.100), podaj login nas oraz swoje hasło. Gotowe! Protokół NFS - Demon szybkości (Tylko Linux) NFS (Network File System) to natywny system uniksowy. Ma gigantyczną przewagę wydajnościową nad Sambą i minimalny narzut na procesor. Jego wadą jest brak wbudowanego systemu uwierzytelniania na hasło (autoryzacja opiera się na zaufanych adresach IP). Instalacja: sudo apt install nfs-kernel-server Konfiguracja:W pliku /etc/exports definiujemy, który katalog udostępniamy i jakiej podsieci (np. Twojej domowej sieci 192.168.1.x): /home/nas 192.168.1.0/24(rw,sync,no_subtree_check) Odśwież tablicę eksportów i zrestartuj serwer: sudo exportfs -a sudo systemctl restart nfs-kernel-server (Uwaga: Z zasobów NFS najlepiej korzystać do wewnętrznych backupów między serwerami z systemem Linux. Nigdy nie wystawiaj tego protokołu poza sieć domową!) Protokół SFTP - Pancerny dostęp przez Internet Co w sytuacji, gdy jesteś w podróży, w hotelowej sieci Wi-Fi i musisz bezpiecznie pobrać lub wgrać duże pliki na swój serwer, a nie chcesz otwierać niebezpiecznej Samby na świat? Odpowiedzią jest SFTP (SSH File Transfer Protocol). SFTP wykorzystuje ten sam pancerny, szyfrowany kanał co Twoja konsola SSH (port 22 lub ten, na który go zmieniłeś). Nie wymaga instalacji żadnych dodatkowych serwerów FTP (jak ProFTPd). Bezpieczeństwo przede wszystkim (Chroot Jail): Aby mieć pewność, że użytkownik logujący się przez SFTP nie będzie mógł "wyjść" ze swojego folderu i przeglądać plików systemowych Twojego serwera WWW, zamkniemy go w wirtualnej klatce (Chroot). Edytuj główny plik demona SSH (/etc/ssh/sshd_config). Upewnij się, że masz tam poniższy wpis (jeśli podsystem sftp jest ustawiony inaczej, zmień go na internal-sftp): Subsystem sftp internal-sftp Na samym końcu tego samego pliku dodaj regułę dla naszego użytkownika nas: Match User nas ChrootDirectory /home/nas ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no Uwaga: W OpenSSH katalog nadrzędny używany do Chroot (czyli /home/nas) musi należeć do użytkownika root. Zmieniamy więc właściciela katalogu bazowego, a w środku tworzymy katalog roboczy na pliki: sudo chown root:root /home/nas sudo mkdir /home/nas/pliki sudo chown nas:nas /home/nas/pliki sudo systemctl restart sshd Do połączenia z zewnątrz wystarczy użyć darmowego klienta, takiego jak FileZilla czy Cyberduck. Jako protokół wybierasz "SFTP", podajesz swój publiczny adres IP (lub domenę), port SSH oraz dane logowania. Szybko, bezawaryjnie i z szyfrowaniem na poziomie militarnym. Nextcloud - Twoja własna chmura (Zamiennik OwnCloud) Dla dostępu przez przeglądarkę, udostępniania linków znajomym i automatycznej synchronizacji zdjęć ze smartfona (jak w Google Photos), instalujemy Nextcloud. To nowoczesny, aktywnie rozwijany fork (odgałęzienie) starego projektu OwnCloud. Jako że posiadasz panel ISPConfig3, proces jest banalnie prosty: W ISPConfig utwórz nową stronę (np. chmura.twojadomena.pl). Włącz Let's Encrypt SSL oraz PHP 8.3. W zakładce Bazy Danych utwórz nową bazę MySQL dla Nextclouda. Pobierz archiwum Nextcloud ze strony głównej projektu, rozpakuj je w katalogu web/ swojej nowej strony i nadaj uprawnienia użytkownikowi tej strony (np. web1). Wejdź pod adres chmura.twojadomena.pl i przejdź przez prosty graficzny instalator. Optymalizacja Nextcloud (Redis): Nextcloud to ciężka aplikacja w PHP. Aby działała błyskawicznie na Raspberry Pi, musimy połączyć ją z serwerem Redis (pamięcią podręczną).Otwórz plik /var/www/twojadomena.pl/web/config/config.php i dopisz blok dla cache'u: 'memcache.local' => '\\OC\\Memcache\\APCu', 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => [ 'host' => '127.0.0.1', 'port' => 6379, ], Upewnij się, że masz zainstalowane systemowe pakiety wspierające: sudo apt install redis-server php8.3-apcu php8.3-redis. Zadania w tle (Cron): Aby Nextcloud działał płynnie, nie może polegać na wyzwalaniu zadań przez przeglądarkę. Zaloguj się w konsoli jako użytkownik danej strony (np. web1 obsługiwany przez ISPConfig) i dodaj zadanie do crontaba: sudo crontab -u web1 -e  */5 * * * * php /var/www/chmura.twojadomena.pl/web/cron.php Złote zasady bezpieczeństwa własnego NAS-a Gdy przechowujesz dane na własnym serwerze, ponosisz pełną odpowiedzialność za ich bezpieczeństwo. Zakaz otwierania Samby/NFS na świat: Porty 445 (SMB) i 2049 (NFS) muszą być trwale zablokowane na Twoim domowym routerze. Jeśli chcesz mieć dostęp do plików z zewnątrz jak do dysku lokalnego, zainstaluj serwer VPN (np. WireGuard). Kopie Zapasowe (Reguła 3-2-1): Sam fakt, że pliki leżą na NAS-ie, to nie backup! Dysk NVMe na Raspberry Pi może ulec awarii sprzętowej. Najcenniejsze dokumenty i zdjęcia synchronizuj okresowo na zewnętrzny dysk USB lub do taniej chmury (np. zaszyfrowane przez narzędzie Rclone). Cloudflare dla Nextcloud: Interfejs webowy Twojej chmury (Nextcloud) koniecznie schowaj za darmowym proxy Cloudflare (włączona pomarańczowa chmurka). Odciąży to procesor przy ładowaniu statycznych elementów (obrazki/CSS) i ukryje prawdziwe IP przed atakami DDoS. Pamiętaj jednak, że Cloudflare nie przepuszcza ruchu SFTP – do SFTP musisz łączyć się po bezpośrednim adresie IP. Podsumowanie Podział ról jest kluczem do wydajnej infrastruktury. Używaj Samby do odtwarzania filmów na domowym telewizorze. Używaj SFTP do pancernego i błyskawicznego przerzucania potężnych paczek z plikami z laptopa w podróży. Z kolei Nextcloud zostaw do zadań multimedialnych, notatek, kalendarzy i wygodnej pracy z poziomu ekranu smartfona. Raspberry Pi 5 udźwignie to wszystko bez najmniejszego problemu. [Wstęp] Własny serwer na Raspberry Pi 5: Kompletny przewodnik krok po kroku [Część 1] Wybór akcesoriów i przygotowanie sprzętu [Część 2] Instalacja LAMP (Apache, MariaDB, PHP) [Część 3] Konfiguracja domeny i DNS dla serwera [Część 4] Panel ISPConfig 3: Instalacja i zarządzanie hostingiem [Część 5] Optymalizacja wydajności: Jak przyspieszyć strony WWW [Część 6] Bezpieczeństwo serwera: Jak skutecznie zabezpieczyć Raspberry Pi 5 [Część 7] Cloudflare: Darmowy SSL i dodatkowa ochrona [Część 8] Monitorowanie serwera: Instalacja Monit [Część 9] [Jesteś tutaj] Własny NAS i magazyn danych na Raspberry Pi 5 [Część 10] Testy stabilności: Serwer po 6 miesiącach pracy