[{"data":1,"prerenderedAt":1463},["ShallowReactive",2],{"post:\u002Fblog\u002Ftysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze":3,"surround:\u002Fblog\u002Ftysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze":626,"related:\u002Fblog\u002Ftysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze":632,"categories":667,"tags":736,"post-author:maciek-walczak":1449},{"id":4,"title":5,"author":6,"body":7,"categories":601,"comments":603,"cover":15,"coverAlt":604,"date":605,"description":606,"draft":607,"extension":608,"hidden":607,"meta":609,"navigation":603,"path":610,"readingTime":611,"redirectFrom":612,"seo":613,"sitemap":614,"slug":615,"stem":616,"tags":617,"updated":624,"wpId":624,"__hash__":625},"blog\u002Fblog\u002F2026-10-03-tysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze.md","Tysiące zdjęć i filmów – jak to ogarnąć na własnym serwerze?","maciek-walczak",{"type":8,"value":9,"toc":583},"minimark",[10,17,30,40,48,51,56,59,81,84,88,91,96,169,173,192,195,206,210,226,230,239,242,245,295,298,307,310,317,334,338,347,350,353,396,403,448,452,459,462,465,469,472,475,495,498,505,508,547,550,554,557,560,563,567,570,573,577,580],[11,12],"figure",{"alt":13,"height":14,"src":15,"width":16},"Grafika: laptop z galerią zdjęć w Immich i monitor z biblioteką filmów w Stash, pomiędzy nimi serwer NAS, nad nimi napis „Zarządzanie wielkimi zbiorami zdjęć i filmów”",1086,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002F2026\u002F10\u002Fzdjecia-i-filmy-okladka.png",1448,[18,19,20,21,29],"p",{},"Jest takie mądre powiedzenie, że są 2 rodzaje ludzi – ci którzy robią backupy i ci, którzy dopiero będą je robić. Ja od jakiegoś czasu należę do tej pierwszej grupy – mój serwer NAS z TrueNAS Scale, którego perypetie opisałem we wpisie ",[22,23,25],"a",{"href":24},"\u002Fblog\u002Ftruenas-czyli-jak-postawic-sieciowy-magazyn-dyskowy-i-nie-zbankrutowac-przydluga-opowiesc-ze-zwrotem-akcji",[26,27,28],"strong",{},"TrueNAS – czyli jak postawić sieciowy magazyn dyskowy i nie zbankrutować – przydługa opowieść ze zwrotem akcji",", od początku miał być bezpiecznym miejscem na to, czego nie da się odkupić – dokumenty, a przede wszystkim zdjęcia i filmy z naszych telefonów.",[18,31,32,33,39],{},"I to działa. Pliki są zgrane, dyski pracują w mirrorze (już na CMR – o tym, jak się na tym przejechałem, było w ",[22,34,36],{"href":35},"\u002Fblog\u002Ftruenas-vs-dyski-smr-cmr-czyli-jak-wpadlem-w-pulapke-zastawiona-przez-producentow-dyskow-hdd",[26,37,38],{},"TrueNAS vs dyski SMR\u002FCMR – czyli jak wpadłem w pułapkę zastawioną przez producentów dysków HDD","), dane są bezpieczne. Problem pojawia się później – gdy chcemy coś w tym archiwum znaleźć.",[18,41,42,43,47],{},"Bo co z tego, że na dyskach leżą tysiące zdjęć i filmów, skoro znalezienie konkretnego filmiku sprzed kilku lat sprowadza się do przeklikiwania folderów o nazwach typu ",[44,45,46],"code",{},"DCIM_2019_kopia_2","? Z kilku telefonów, z kilku lat, kopiowanych na raty i czasem po 2 razy…",[18,49,50],{},"O tym, jak to ogarniam, będzie właśnie ten wpis. Ogarniam – bo od razu się przyznam, że jestem dopiero na początku drogi. Do Immicha zaimportowałem póki co zaledwie część zdjęć – ok. 4000, czyli 17 GB. W Stashu jest niecałe 2000 filmów zajmujących 232 GB – i to też dopiero początek, będzie ich dużo więcej. Ale już na tym etapie widać, że to był dobry kierunek.",[52,53,55],"h2",{"id":54},"czego-właściwie-szukam","Czego właściwie szukam?",[18,57,58],{},"Zanim zacząłem cokolwiek instalować, spisałem sobie kilka wymagań:",[60,61,62,69,75],"ul",{},[63,64,65,68],"li",{},[26,66,67],{},"self-hosted"," – wszystko ma działać na moim serwerze, a nie w chmurze. Powody są 2: koszty (płacenie co miesiąc za kilka TB miejsca w Google Photos czy iCloud szybko przestaje być zabawne) i prywatność – zdjęcia dzieci to ostatnia rzecz, jaką chcę oddawać do trenowania czyichś modeli",[63,70,71,74],{},[26,72,73],{},"import, katalogowanie i wyszukiwanie"," – program ma sam przeskanować pliki, wyciągnąć z nich co się da i pozwolić je potem szybko znaleźć",[63,76,77,80],{},[26,78,79],{},"wygodny interfejs www"," – tak, żeby z biblioteki mogła skorzystać też żona, a nie tylko „ten od komputerów”",[18,82,83],{},"Ktoś powie – przecież to wszystko robi Google Photos. Tak, to prawda, robi to świetnie. Tylko że płacimy za to podwójnie – raz abonamentem, a drugi raz swoimi danymi. A skoro mam już serwer, który i tak chodzi 24\u002F7, to szkoda go nie wykorzystać.",[52,85,87],{"id":86},"co-jest-na-rynku","Co jest na rynku?",[18,89,90],{},"Okazuje się, że self-hostowanych galerii jest całkiem sporo – wyrosły jak grzyby po deszczu, zwłaszcza w ostatnich latach, gdy Google przestał oferować darmowe miejsce bez limitu. Przejrzałem najpopularniejsze (liczby gwiazdek na GitHubie z października 2026, tak dla orientacji w popularności):",[92,93,95],"h3",{"id":94},"zdjęcia","Zdjęcia",[60,97,98,109,119,129,139,163],{},[63,99,100,108],{},[22,101,105],{"href":102,"rel":103},"https:\u002F\u002Fimmich.app",[104],"nofollow",[26,106,107],{},"Immich"," (~115 tys. gwiazdek) – zdecydowany lider. Napisany jako alternatywa dla Google Photos – aplikacja mobilna z automatycznym backupem, rozpoznawanie twarzy, wyszukiwanie „po ludzku” (CLIP), mapa, albumy, wiele kont użytkowników. Licencja AGPL, projekt wspierany przez FUTO",[63,110,111,118],{},[22,112,115],{"href":113,"rel":114},"https:\u002F\u002Fwww.photoprism.app",[104],[26,116,117],{},"PhotoPrism"," (~40 tys. gwiazdek) – starszy i dojrzały, również z rozpoznawaniem twarzy i automatycznym tagowaniem. Część funkcji jest jednak dostępna tylko w płatnych planach, a dedykowanej aplikacji mobilnej do backupu brak",[63,120,121,128],{},[22,122,125],{"href":123,"rel":124},"https:\u002F\u002Fente.io",[104],[26,126,127],{},"Ente"," (~29 tys. gwiazdek) – nastawiony na szyfrowanie end-to-end. Głównie usługa chmurowa, ale serwer można postawić u siebie",[63,130,131,138],{},[22,132,135],{"href":133,"rel":134},"https:\u002F\u002Fgithub.com\u002FLibrePhotos\u002Flibrephotos",[104],[26,136,137],{},"LibrePhotos"," (~8 tys. gwiazdek) – podobne założenia co Immich, ale dużo mniejsza społeczność",[63,140,141,148,149,156,157,162],{},[22,142,145],{"href":143,"rel":144},"https:\u002F\u002Fpiwigo.org",[104],[26,146,147],{},"Piwigo"," i ",[22,150,153],{"href":151,"rel":152},"https:\u002F\u002Flychee.electerious.com",[104],[26,154,155],{},"Lychee"," – klasyczne galerie ",[22,158,161],{"href":159,"rel":160},"http:\u002F\u002Fwww",[104],"www",". Fajne, jeśli chcemy pokazać albumy światu, ale do archiwum z telefonów – szału nie ma",[63,164,165,168],{},[26,166,167],{},"Nextcloud"," (z aplikacją Memories) – opcja dla tych, którzy i tak mają już Nextclouda. Dla samych zdjęć to jednak spora armata na wróbla",[92,170,172],{"id":171},"filmy","Filmy",[18,174,175,176,183,184,187,188,191],{},"Tu sprawa jest ciekawsza. Hasło „self-hosted video” wyrzuca przede wszystkim serwery multimedialne: ",[22,177,180],{"href":178,"rel":179},"https:\u002F\u002Fjellyfin.org",[104],[26,181,182],{},"Jellyfin"," (~58 tys. gwiazdek), ",[26,185,186],{},"Plex"," czy ",[26,189,190],{},"Emby",". To świetne narzędzia, ale do czego innego – służą do oglądania filmów i seriali, a metadane pobierają z baz typu TMDB. Domowy filmik „IMG_4521.MOV” nie ma w nich ani okładki, ani opisu, a narzędzi do jego katalogowania jest niewiele.",[18,193,194],{},"Immich też obsługuje filmy – i to całkiem dobrze – ale traktuje je jak zdjęcia, które się ruszają. Do porządkowania dużej kolekcji wideo brakowało mi w nim filtrowania i opisywania.",[18,196,197,198,205],{},"I tak trafiłem na ",[22,199,202],{"href":200,"rel":201},"https:\u002F\u002Fgithub.com\u002Fstashapp\u002Fstash",[104],[26,203,204],{},"Stash"," (~13 tys. gwiazdek) – aplikację napisaną w Go, która jest właśnie organizerem kolekcji wideo (i zdjęć). Ale o nim za chwilę…",[92,207,209],{"id":208},"co-ważne-dla-posiadaczy-truenas","Co ważne dla posiadaczy TrueNAS",[18,211,212,213,217,218,221,222,225],{},"Zarówno Immich, jak i Stash są dostępne w katalogu aplikacji TrueNAS Scale (sekcja ",[214,215,216],"em",{},"community","). Jellyfin, Nextcloud i Piwigo zresztą też. Instalacja sprowadza się do wyklikania aplikacji w zakładce ",[26,219,220],{},"Apps"," i wskazania datasetów na dane – bez ręcznego pisania ",[44,223,224],{},"docker-compose.yml",". Tu nie ma żadnej filozofii.",[52,227,229],{"id":228},"immich-czyli-google-photos-u-siebie","Immich – czyli Google Photos u siebie",[11,231,236],{"alt":232,"height":233,"src":234,"width":235},"Zrzuty ekranu Immich: oś czasu ze zdjęciami w przeglądarce oraz aplikacja mobilna",1118,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002F2026\u002F10\u002Fimmich-zrzuty-ekranu.png",1802,[18,237,238],{},"Immich w wersji www i mobilnej (źródło: repozytorium immich-app\u002Fimmich)",[18,240,241],{},"Immich wygląda i działa jak Google Photos – i to jest jego największa zaleta. Kto korzystał z aplikacji Google, ten odnajdzie się tu bez instrukcji – a to ważne, jeśli z biblioteki ma korzystać cała rodzina 🙂",[18,243,244],{},"Co mi się w nim najbardziej podoba:",[60,246,247,253,259,265,271,277,283,289],{},[63,248,249,252],{},[26,250,251],{},"instalacja z Apps w TrueNAS Scale"," – kilka kliknięć, wskazanie datasetu na zdjęcia i bazę danych i gotowe",[63,254,255,258],{},[26,256,257],{},"automatyczna indeksacja"," – po wrzuceniu zdjęć Immich sam generuje miniatury, czyta metadane i odpala uczenie maszynowe. Przy dużej bibliotece pierwsze skanowanie trochę potrwa, ale robi się je raz, a potem nowe zdjęcia są przetwarzane na bieżąco",[63,260,261,264],{},[26,262,263],{},"rozpoznawanie twarzy"," – Immich grupuje zdjęcia według osób, wystarczy nadać im imiona. Potem wyszukanie wszystkich zdjęć z babcią to jedno kliknięcie. A można też szukać kilku osób naraz – np. zdjęć, na których jest 2 konkretnych dzieci",[63,266,267,270],{},[26,268,269],{},"wyszukiwanie kontekstowe"," – wpisujemy „pies na plaży” albo „tort urodzinowy” i Immich znajduje pasujące zdjęcia, nawet jeśli nikt ich nigdy nie opisał. Domyślny model rozumie po angielsku, ale w ustawieniach można go zmienić na wielojęzyczny i szukać po polsku",[63,272,273,276],{},[26,274,275],{},"geolokalizacja z danych EXIF"," – telefony zapisują w zdjęciach współrzędne GPS, a Immich pokazuje je na mapie i zamienia na nazwy miejscowości. Wystarczy wpisać nazwę miejscowości, żeby zobaczyć wszystkie zdjęcia z danego wyjazdu",[63,278,279,282],{},[26,280,281],{},"albumy"," – również współdzielone z innymi użytkownikami albo udostępniane linkiem, np. rodzinie",[63,284,285,288],{},[26,286,287],{},"wyszukiwanie duplikatów"," – w zakładce narzędzi Immich pokazuje zdjęcia podobne do siebie i pozwala zostawić tylko najlepszą wersję. Przy archiwum kopiowanym latami z kilku telefonów to strzał w dziesiątkę",[63,290,291,294],{},[26,292,293],{},"aplikacja mobilna"," (iOS i Android) – automatycznie wysyła nowe zdjęcia z telefonu na serwer, także w tle. Czyli backup dzieje się sam, bez pamiętania o podpinaniu telefonu do komputera",[18,296,297],{},"Zrzutu ekranu z rozpoznanymi twarzami nie pokażę – to akurat są dane, które zostają w domu 🙂 Pokażę za to mapę:",[11,299,304],{"alt":300,"height":301,"src":302,"width":303},"Mapa Europy w Immich z liczbami zdjęć pogrupowanych według miejsc: m.in. Islandia, Norwegia, Polska, okolice Tatr i północne Włochy",1073,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002F2026\u002F10\u002Fimmich-mapa.png",1512,[18,305,306],{},"Mapa w Immich – zdjęcia pogrupowane według miejsc, w których zostały zrobione",[18,308,309],{},"Wystarczyło zaimportować zdjęcia, a Immich sam rozłożył je na mapie na podstawie danych EXIF – Islandia, Norwegia, Włochy… Klikamy w punkt na mapie i mamy wszystkie zdjęcia z tego miejsca.",[18,311,312,313,316],{},"Jeśli mamy już archiwum zdjęć na NASie, to nie musimy go nigdzie przenosić – Immich obsługuje tzw. ",[214,314,315],{},"external libraries",", czyli katalogi tylko do odczytu, które indeksuje w miejscu. Można też wrzucić wszystko przez przeglądarkę albo narzędziem CLI.",[18,318,319,320,325,326,329,330,333],{},"Kto chce się pobawić przed instalacją – jest ",[22,321,324],{"href":322,"rel":323},"https:\u002F\u002Fdemo.immich.app",[104],"demo online"," (login: ",[44,327,328],{},"demo@immich.app",", hasło: ",[44,331,332],{},"demo",").",[52,335,337],{"id":336},"stash-czyli-porządek-w-filmach","Stash – czyli porządek w filmach",[11,339,344],{"alt":340,"height":341,"src":342,"width":343},"Interfejs Stash: siatka miniatur filmów z panelem filtrów",750,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002F2026\u002F10\u002Fstash-zrzut-ekranu.png",1275,[18,345,346],{},"Interfejs Stash (źródło: repozytorium stashapp\u002Fstash)",[18,348,349],{},"Uczciwie trzeba powiedzieć jedno – Stash wyrósł ze społeczności, która porządkowała kolekcje filmów… powiedzmy, nie dla dzieci. Widać to po nazewnictwie w interfejsie („Performers”, „Studios”) i po wbudowanej integracji z bazami metadanych typu StashDB. Ktoś może się zdziwić, ale nie ma się co zrażać – pod spodem to po prostu bardzo dobry organizer wideo, a te elementy, których nie potrzebujemy, zwyczajnie pomijamy. Do domowych filmów z wakacji sprawdza się świetnie.",[18,351,352],{},"Co mnie w nim przekonało:",[60,354,355,360,366,372,390],{},[63,356,357,359],{},[26,358,251],{}," – dokładnie tak samo jak Immich",[63,361,362,365],{},[26,363,364],{},"podmontowanie katalogów bez przenoszenia plików"," – wskazujemy Stashowi katalogi z filmami, a on je skanuje i indeksuje w miejscu. Struktura folderów na NASie zostaje taka, jaka była – i to dla mnie bardzo ważne, bo te same pliki są dostępne też np. przez udział SMB",[63,367,368,371],{},[26,369,370],{},"generowanie podglądów"," – miniatury, krótkie podglądy wideo po najechaniu myszką, a nawet „sprite” do przewijania. Dzięki temu nie trzeba odpalać filmu, żeby wiedzieć, co na nim jest",[63,373,374,377,378,381,382,385,386,389],{},[26,375,376],{},"tagi, grupy i własne opisy"," – każdy film możemy otagować, ocenić, opisać, dodać datę, połączyć w grupy. Tagi mogą być hierarchiczne (np. ",[44,379,380],{},"lokalizacja"," → ",[44,383,384],{},"Islandia","), a w filmie można dodać znaczniki (",[214,387,388],{},"markers",") na konkretnej minucie",[63,391,392,395],{},[26,393,394],{},"edycja hurtowa"," – zaznaczamy kilkadziesiąt filmów i dodajemy im te same tagi za jednym razem",[18,397,398,399,402],{},"No i najważniejsze – ",[26,400,401],{},"filtrowanie",". Tu Stash wygrywa wszystko, co widziałem. Filtry można łączyć ze sobą, a gotowy zestaw zapisać na później. Kilka przykładów:",[60,404,405,408,425,432,435,438,441],{},[63,406,407],{},"długość filmu krótsza niż 5 sekund",[63,409,410,411,414,415,414,418,421,422],{},"tagi zawierające ",[44,412,413],{},"Norwegia"," ",[26,416,417],{},"i",[44,419,420],{},"rower",", ale nie ",[44,423,424],{},"koncert",[63,426,427,428,431],{},"ścieżka pliku zawierająca ",[44,429,430],{},"2019"," (przydaje się, gdy foldery są nazwane latami)",[63,433,434],{},"rozdzielczość co najmniej 1080p",[63,436,437],{},"rozmiar pliku większy niż 2 GB (szukanie „pożeraczy miejsca”)",[63,439,440],{},"ocena co najmniej 4 gwiazdki – czyli „best of” do pokazania rodzinie",[63,442,443,444,447],{},"flaga ",[214,445,446],{},"Organized"," niezaznaczona – czyli lista filmów, których jeszcze nie opisałem",[52,449,451],{"id":450},"dlaczego-2-programy-a-nie-1","Dlaczego 2 programy, a nie 1?",[18,453,454,455,458],{},"Oba programy obsługują i zdjęcia i filmy, więc teoretycznie wystarczyłby 1. Ja sobie jednak je podzieliłem: ",[26,456,457],{},"Immich do zdjęć, Stash do filmów",".",[18,460,461],{},"O ile do zdjęć nie ma nic lepszego od Immicha – rozpoznawanie twarzy, mapa, aplikacja mobilna – o tyle przy filmach brakowało mi w nim narzędzi do porządkowania. Z kolei Stash ze zdjęciami sobie poradzi, ale bez backupu z telefonu i bez rozpoznawania twarzy to tylko połowa zabawy. Każdy z nich robi więc to, w czym jest najlepszy.",[18,463,464],{},"Sam import filmów do Stasha jest banalny – w ustawieniach aplikacji podmontowuję kolejny katalog z dysku NAS, a Stash go skanuje i indeksuje. Pliki zostają tam, gdzie były, a ja dokładam do biblioteki kolejne zbiory w swoim tempie.",[52,466,468],{"id":467},"stash-w-praktyce-sprzątanie-archiwum","Stash w praktyce – sprzątanie archiwum",[18,470,471],{},"Kto ma dzieci i telefon, ten wie, ile w galerii jest filmików trwających sekundę – kieszeń, podłoga, przypadkowe przytrzymanie przycisku… Takie „śmieci” zwykle nikomu do niczego się nie przydadzą, a przy przeglądaniu archiwum skutecznie przeszkadzają.",[18,473,474],{},"W Stashu poradziłem sobie z tym raz dwa:",[476,477,478,485,488],"ol",{},[63,479,480,481,484],{},"Ustawiamy filtr: ",[26,482,483],{},"Duration"," mniejsze niż 5 sekund.",[63,486,487],{},"Przeglądamy wyniki (podglądy po najechaniu myszką bardzo pomagają) i odznaczamy te, które jednak warto zostawić.",[63,489,490,491,494],{},"Zaznaczamy resztę, wybieramy ",[26,492,493],{},"Delete"," i zaznaczamy opcję usunięcia również plików z dysku.",[18,496,497],{},"Dokładnie nie liczyłem, ale w ten sposób zniknęło kilkaset takich filmików. Bez skryptów, bez szukania po folderach.",[18,499,500,501,504],{},"Tylko uwaga – usunięcie razem z plikami jest ",[26,502,503],{},"nieodwracalne"," (no chyba, że mamy snapshoty w TrueNAS, a warto mieć). Najpierw sprawdzamy, co jest w wynikach, potem klikamy.",[18,506,507],{},"Druga rzecz to tagowanie. Ja na razie stosuję 3 rodzaje tagów:",[60,509,510,523,535],{},[63,511,512,514,515,517,518,517,520],{},[26,513,380],{}," – np. ",[44,516,384],{},", ",[44,519,413],{},[44,521,522],{},"Włochy",[63,524,525,514,528,517,531,517,533],{},[26,526,527],{},"aktywność",[44,529,530],{},"paintball",[44,532,420],{},[44,534,424],{},[63,536,537,540,541,517,544],{},[26,538,539],{},"osoby"," – po prostu imiona, np. ",[44,542,543],{},"Maciek",[44,545,546],{},"Weronika",[18,548,549],{},"Możliwość opisania filmów hurtem, wieloma tagami naraz – np. zaznaczam wszystkie filmy z jednego wyjazdu i dodaję im lokalizację i imiona osób – sprawia, że potem nawet wielkie archiwum przeszukuje się w kilka sekund. Szukam rowerowych filmów z Norwegii? 2 tagi w filtrze i gotowe.",[52,551,553],{"id":552},"czy-stash-zrobi-wszystko-za-nas","Czy Stash zrobi wszystko za nas?",[18,555,556],{},"No nie. Trzeba to powiedzieć wprost – o ile Immich większość pracy robi sam (twarze, miejsca, duplikaty), o tyle w Stashu to my jesteśmy tym „uczeniem maszynowym”. Ktoś musi te filmy przejrzeć, otagować i opisać. Przy kilku latach nagrań to jest praca na wiele wieczorów.",[18,558,559],{},"Dobra wiadomość jest taka, że największy efekt widać od razu. Ja dopiero zacząłem, ale dosłownie w 1 wieczór udało się zrobić całkiem sporo: instalacja aplikacji, indeksacja plików, odsianie śmieci i wstępne otagowanie całych zbiorów – hurtem, katalog po katalogu. Dokładniejsze opisywanie pojedynczych filmów to już proces na dłużej.",[18,561,562],{},"Ale jeśli raz to zrobimy i potem utrzymamy ustalony porządek – nowe filmy opisujemy na bieżąco, a nie raz na rok – to wyszukanie konkretnego filmu jest dużo szybsze i prostsze. Zamiast przeklikiwać foldery, wpisuję 2 tagi i mam to, czego szukam. Tylko tyle i aż tyle.",[52,564,566],{"id":565},"zatem-czy-warto","Zatem czy warto?",[18,568,569],{},"Dla mnie zdecydowanie tak. Sam backup to tylko połowa sukcesu – zdjęcia i filmy, których nie da się znaleźć, są trochę jak pudło ze zdjęciami na strychu: niby są, ale nikt do nich nie zagląda. Immich i Stash zmieniły moje archiwum w coś, w czym da się wreszcie coś znaleźć – a wszystko to na własnym serwerze, bez abonamentu i bez wysyłania zdjęć dzieci do chmury.",[18,571,572],{},"Trzeba tylko pamiętać, że to wciąż jest self-hosting – czyli aktualizacje, kopie zapasowe bazy danych i od czasu do czasu jakaś zabawa przy konfiguracji spadają na nas. A NAS z jedną kopią danych to nadal nie jest backup w rozumieniu zasady 3-2-1 – ale to już temat na inny wpis…",[52,574,576],{"id":575},"co-dalej","Co dalej?",[18,578,579],{},"Plan jest prosty – dodawać kolejne katalogi ze zdjęciami i filmami, bo to, co mam teraz, to tylko wierzchołek góry lodowej. W Stashu chcę też zacząć tworzyć grupy filmów – np. wszystkie nagrania z jednego wyjazdu w jednym miejscu – żeby nawigacja po bibliotece była jeszcze łatwiejsza. Jak archiwum urośnie, może opiszę, jak oba programy radzą sobie przy większej skali.",[18,581,582],{},"A jak Wy ogarniacie swoje zdjęcia i filmy? Może korzystacie z czegoś, co pominąłem – dajcie znać w komentarzach, chętnie sprawdzę 🙂",{"title":584,"searchDepth":585,"depth":585,"links":586},"",2,[587,588,594,595,596,597,598,599,600],{"id":54,"depth":585,"text":55},{"id":86,"depth":585,"text":87,"children":589},[590,592,593],{"id":94,"depth":591,"text":95},3,{"id":171,"depth":591,"text":172},{"id":208,"depth":591,"text":209},{"id":228,"depth":585,"text":229},{"id":336,"depth":585,"text":337},{"id":450,"depth":585,"text":451},{"id":467,"depth":585,"text":468},{"id":552,"depth":585,"text":553},{"id":565,"depth":585,"text":566},{"id":575,"depth":585,"text":576},[602],"artykuly",true,"Laptop z galerią zdjęć w Immich i monitor z biblioteką filmów w Stash, pomiędzy nimi serwer NAS, nad nimi napis „Zarządzanie wielkimi zbiorami zdjęć i filmów”","2026-10-03","Backup zdjęć z telefonów na NAS to dopiero połowa sukcesu. Druga połowa to znaleźć potem cokolwiek w tysiącach plików… U mnie robią to Immich i Stash.",false,"md",{},"\u002Fblog\u002Ftysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze",11,[],{"title":5,"description":606},{"loc":610},"tysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze","blog\u002F2026-10-03-tysiace-zdjec-i-filmow-jak-to-ogarnac-na-wlasnym-serwerze",[618,619,620,621,622,623],"nas","truenas","selfhosting","privacy","immich","stash",null,"yRbuoz7qX-BYPBP1FaUWnrZctIK7h7pp2zsunMLA-e8",[627,624],{"title":628,"path":629,"stem":630,"description":631,"children":-1},"Programista w czasach AI","\u002Fblog\u002Fprogramista-w-czasach-ai","blog\u002F2026-10-01-programista-w-czasach-ai","Czy AI zabierze nam robotę? Nie sądzę. Ale zmieni ją tak, że za kilka lat sami jej nie poznamy – i mam na to dowód w postaci 543 commitów…",[633,642,656],{"path":35,"title":38,"description":634,"date":635,"categories":636,"tags":637,"readingTime":640,"draft":607,"cover":641},"Jakieś 2 lata temu postanowiłem wzbogacić swój HomeLab o prawdziwy serwer NAS – całe perypetie z tym związane opisałem w artykule TrueNAS – czyli jak…","2024-11-06",[602],[638,618,639,619],"cmr","smr",5,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002Fwp\u002F2022\u002F12\u002Fwdred.jpg",{"path":643,"title":644,"description":645,"date":646,"categories":647,"tags":650,"readingTime":654,"draft":607,"cover":655},"\u002Fblog\u002Fproxmox-na-lenovo-m710q-czyli-domowy-serwer-po-taniosci","Proxmox na Lenovo M710q – czyli domowy serwer po taniości","W artykule o modernizacji domowej sieci komputerowej pisałem o moich planach zakupu dedykowanego serwera NAS: Synology RX418. Serwer ten jest o tyle ciekawy…","2022-06-05",[602,648,649],"nauka","polecane",[651,652,653,620],"lenovo-m710q","mini-pc","proxmox",6,"https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002Fwp\u002F2022\u002F06\u002FZrzut-ekranu-2022-06-5-o-18.12.11.png",{"path":657,"title":658,"description":659,"date":660,"categories":661,"tags":662,"readingTime":654,"draft":607,"cover":666},"\u002Fblog\u002Fmodernizacja-domowej-sieci-komputerowej","Modernizacja domowej sieci komputerowej","Dziś temat nieco odbiegający od spraw związanych z typowym front-endem, ale jednak powiązany z moją pracą i domowym biurem. Postanowiłem zrobić porządek i…","2022-04-18",[602],[618,663,664,665],"sieci-komputerowe","switch","szafa-rack","https:\u002F\u002F5icqmonbzxnrw2bn.public.blob.vercel-storage.com\u002Fwp\u002F2022\u002F04\u002FIMG_3125_small.jpg",[668,675,682,689,696,702,709,715,722,729],{"id":669,"description":624,"extension":670,"meta":671,"name":672,"slug":602,"stem":673,"__hash__":674},"categories\u002Fcategories\u002Fartykuly.yml","yml",{},"Artykuły","categories\u002Fartykuly","aw37OCuccDz54Q07CDyESiid8VqHzN1nGf8cMOk_mI0",{"id":676,"description":624,"extension":670,"meta":677,"name":678,"slug":679,"stem":680,"__hash__":681},"categories\u002Fcategories\u002Fdostepnosc-cyfrowa.yml",{},"Dostępność cyfrowa","dostepnosc-cyfrowa","categories\u002Fdostepnosc-cyfrowa","6m7Ag8ZZ1EzfdgLuQnAUAMmRcjkgb2tpFM9n1qxANOM",{"id":683,"description":624,"extension":670,"meta":684,"name":685,"slug":686,"stem":687,"__hash__":688},"categories\u002Fcategories\u002Fkonferencje.yml",{},"Konferencje","konferencje","categories\u002Fkonferencje","dQl4MW7163iEG-b7Cv6FJ2gUxLqnpaiMOLixCXvhHTw",{"id":690,"description":624,"extension":670,"meta":691,"name":692,"slug":693,"stem":694,"__hash__":695},"categories\u002Fcategories\u002Fkonfiguracja.yml",{},"Konfiguracja","konfiguracja","categories\u002Fkonfiguracja","ESTOPlJnBPnwuuqgOm7yqGAwgllsRJfSPVk22K_nQe0",{"id":697,"description":624,"extension":670,"meta":698,"name":699,"slug":648,"stem":700,"__hash__":701},"categories\u002Fcategories\u002Fnauka.yml",{},"Nauka","categories\u002Fnauka","3hQRPpuXqoNblW09Gj46arWFgH-3YfsMcgDyd4xLkN4",{"id":703,"description":624,"extension":670,"meta":704,"name":705,"slug":706,"stem":707,"__hash__":708},"categories\u002Fcategories\u002Fosx.yml",{},"OSX","osx","categories\u002Fosx","WW8-0hUIqcivgAUl8WQuAvJ3-xVLRLjLkmP00PP4eXY",{"id":710,"description":624,"extension":670,"meta":711,"name":712,"slug":649,"stem":713,"__hash__":714},"categories\u002Fcategories\u002Fpolecane.yml",{},"Polecane","categories\u002Fpolecane","ckLXqMEBUHLxZavR7FGvpQjhxc7ycP_sQ7myEw64R9I",{"id":716,"description":624,"extension":670,"meta":717,"name":718,"slug":719,"stem":720,"__hash__":721},"categories\u002Fcategories\u002Fpomoce.yml",{},"Pomoce","pomoce","categories\u002Fpomoce","3oKSrG-VgrihP1nofQwuUItxUsyzVfgEfTMF2vq7EIw",{"id":723,"description":624,"extension":670,"meta":724,"name":725,"slug":726,"stem":727,"__hash__":728},"categories\u002Fcategories\u002Fprezentacje.yml",{},"Prezentacje","prezentacje","categories\u002Fprezentacje","4L5LUH8zxl0qXRvdymYTwtrkuj1tQun8R7yYz_OfndE",{"id":730,"description":624,"extension":670,"meta":731,"name":732,"slug":733,"stem":734,"__hash__":735},"categories\u002Fcategories\u002Fvue-js.yml",{},"Vue.js","vue-js","categories\u002Fvue-js","wOIuiF3jWQ-Zph8v7hYGNuLdJbCx0VguVg0loyh-Mwk",[737,743,749,756,763,770,777,783,790,797,804,811,817,824,831,838,845,852,858,865,872,878,884,890,896,902,908,914,921,927,933,939,945,952,958,963,970,977,983,990,997,1003,1008,1013,1019,1026,1032,1038,1044,1050,1055,1062,1069,1076,1082,1089,1094,1101,1108,1114,1121,1127,1133,1140,1146,1153,1159,1164,1170,1175,1182,1188,1195,1201,1207,1214,1221,1228,1234,1241,1246,1252,1258,1265,1271,1277,1282,1289,1296,1303,1308,1314,1320,1327,1334,1340,1346,1352,1358,1364,1370,1377,1384,1391,1397,1403,1409,1415,1421,1428,1435,1442],{"id":738,"extension":670,"meta":739,"name":740,"slug":740,"stem":741,"__hash__":742},"tags\u002Ftags\u002Faccessibility.yml",{},"accessibility","tags\u002Faccessibility","luflFOwd8bzxVK2qeBv80Pzxhje6x-hbJYaDUihuwOk",{"id":744,"extension":670,"meta":745,"name":746,"slug":746,"stem":747,"__hash__":748},"tags\u002Ftags\u002Fai.yml",{},"ai","tags\u002Fai","dps1QD2_kN7ri7PVTP0uaeL-lYhL69nCwndkqEqLLhU",{"id":750,"extension":670,"meta":751,"name":752,"slug":753,"stem":754,"__hash__":755},"tags\u002Ftags\u002Fangular.yml",{},"Angular","angular","tags\u002Fangular","z6SH0xA8FvB2X9kVmW-gtOdfx__mVrgIuA7HVCzfLjo",{"id":757,"extension":670,"meta":758,"name":759,"slug":760,"stem":761,"__hash__":762},"tags\u002Ftags\u002Fapache2.yml",{},"Apache2","apache2","tags\u002Fapache2","unCvGoDYof2-UiVE0lnN8eq5ru5roRg5_2mAo4TdEHk",{"id":764,"extension":670,"meta":765,"name":766,"slug":767,"stem":768,"__hash__":769},"tags\u002Ftags\u002Faplikacje-i-uslugi-internetowe.yml",{},"aplikacje i usługi internetowe","aplikacje-i-uslugi-internetowe","tags\u002Faplikacje-i-uslugi-internetowe","G2Vojqp3Zd7QgL3zFleglcNCFkjzkAAeDQCScU6P8bc",{"id":771,"extension":670,"meta":772,"name":773,"slug":774,"stem":775,"__hash__":776},"tags\u002Ftags\u002Fasynchronicznosc.yml",{},"asynchroniczność","asynchronicznosc","tags\u002Fasynchronicznosc","9RMRbHed9wQxDzVpEjO6Ay9zxWDCI0e4hE8F4zqGgj0",{"id":778,"extension":670,"meta":779,"name":780,"slug":780,"stem":781,"__hash__":782},"tags\u002Ftags\u002Fautomatyzacja.yml",{},"automatyzacja","tags\u002Fautomatyzacja","vfUpLN8opVGvKUQgjGwEYxKfsZsLo3jxneMF9YMMVD0",{"id":784,"extension":670,"meta":785,"name":786,"slug":787,"stem":788,"__hash__":789},"tags\u002Ftags\u002Fblokowanie-reklam.yml",{},"blokowanie reklam","blokowanie-reklam","tags\u002Fblokowanie-reklam","lq-tfiZ_uB_SerIlaIQFMOXvGIF3QoVVVyPxjwrEsR4",{"id":791,"extension":670,"meta":792,"name":793,"slug":794,"stem":795,"__hash__":796},"tags\u002Ftags\u002Fblue-media.yml",{},"Blue Media","blue-media","tags\u002Fblue-media","z8G577CxZ7uSy-oNOkWtn3XgbsbjeKhuNby5Q6BCRuM",{"id":798,"extension":670,"meta":799,"name":800,"slug":801,"stem":802,"__hash__":803},"tags\u002Ftags\u002Fchrome-extensions.yml",{},"chrome extensions","chrome-extensions","tags\u002Fchrome-extensions","Ip0fOTD9TMJiHcbXwgvAB2mFf_D1rlP5ZfkJG3GbCL0",{"id":805,"extension":670,"meta":806,"name":807,"slug":808,"stem":809,"__hash__":810},"tags\u002Ftags\u002Fclaude-code.yml",{},"claude code","claude-code","tags\u002Fclaude-code","wJZCEyRD6Cq9w7YKW0WDw94B_K-Y-nbkt1sLGN2RgEw",{"id":812,"extension":670,"meta":813,"name":814,"slug":638,"stem":815,"__hash__":816},"tags\u002Ftags\u002Fcmr.yml",{},"CMR","tags\u002Fcmr","eNv_ncSDXVsAFBCM8A4uJqAJItqSOP29I1Kabpm-l3Y",{"id":818,"extension":670,"meta":819,"name":820,"slug":821,"stem":822,"__hash__":823},"tags\u002Ftags\u002Fcodersday.yml",{},"CodersDay","codersday","tags\u002Fcodersday","jLWUVGvGvi2irKFpFs0Ea6hkW71mLoiroOaGDcv1KWw",{"id":825,"extension":670,"meta":826,"name":827,"slug":828,"stem":829,"__hash__":830},"tags\u002Ftags\u002Fcoderslab.yml",{},"CodersLab","coderslab","tags\u002Fcoderslab","NQEy1mD_tk9h71yZtjSoC4LhXGE54DGYaYgj3JOoUqY",{"id":832,"extension":670,"meta":833,"name":834,"slug":835,"stem":836,"__hash__":837},"tags\u002Ftags\u002Fcolor-contrast-analyzer.yml",{},"Color Contrast Analyzer","color-contrast-analyzer","tags\u002Fcolor-contrast-analyzer","hGu3gO_owf9Tn4p5-FssJGVt4ToSsRfgjMjWdX2YgEI",{"id":839,"extension":670,"meta":840,"name":841,"slug":842,"stem":843,"__hash__":844},"tags\u002Ftags\u002Fcolor-contrast-checker.yml",{},"Color Contrast Checker","color-contrast-checker","tags\u002Fcolor-contrast-checker","w8QKUWUH691wTFtUWDJMjbCvC6zlFZo6j4UDDSg1NDY",{"id":846,"extension":670,"meta":847,"name":848,"slug":849,"stem":850,"__hash__":851},"tags\u002Ftags\u002Fconfrontjs.yml",{},"ConFrontJS","confrontjs","tags\u002Fconfrontjs","G4ePmrCbuLVA_ccxs7rcKSveQ3Kvn7y6-Ie9-H_5gpc",{"id":853,"extension":670,"meta":854,"name":855,"slug":855,"stem":856,"__hash__":857},"tags\u002Ftags\u002Fcss3.yml",{},"css3","tags\u002Fcss3","f5Gtp9yzvmyMSZ-IN--19c7OR-v5LXzdvhNaEmiOsuw",{"id":859,"extension":670,"meta":860,"name":861,"slug":862,"stem":863,"__hash__":864},"tags\u002Ftags\u002Fdesi-2020.yml",{},"DESI 2020","desi-2020","tags\u002Fdesi-2020","KeSFSj6VcXN0OciAUSTR8C1kiGUE3nLzGR1Pi5h_USE",{"id":866,"extension":670,"meta":867,"name":868,"slug":869,"stem":870,"__hash__":871},"tags\u002Ftags\u002Fdns.yml",{},"DNS","dns","tags\u002Fdns","_TzsfpRL_ROm8MT5opDE1gg4GnuukbCyKY87W-IFl68",{"id":873,"extension":670,"meta":874,"name":875,"slug":679,"stem":876,"__hash__":877},"tags\u002Ftags\u002Fdostepnosc-cyfrowa.yml",{},"dostępność cyfrowa","tags\u002Fdostepnosc-cyfrowa","8xZ6WRsys1qnr-vWH_Y4Ne8ac2RBONWyLrrm31u00xI",{"id":879,"extension":670,"meta":880,"name":881,"slug":881,"stem":882,"__hash__":883},"tags\u002Ftags\u002Febook.yml",{},"ebook","tags\u002Febook","2Eqjl28-mK0fxpryAfGFMCel8MSByJVuQRsvy_S_cgY",{"id":885,"extension":670,"meta":886,"name":887,"slug":887,"stem":888,"__hash__":889},"tags\u002Ftags\u002Felgato.yml",{},"elgato","tags\u002Felgato","ys3dC5VhSFe1JP_z6vIBB8W8WSJmrbB2C3gwTjSkINM",{"id":891,"extension":670,"meta":892,"name":893,"slug":893,"stem":894,"__hash__":895},"tags\u002Ftags\u002Fevent.yml",{},"event","tags\u002Fevent","xcUCN7zoFrW8LCakRgx4s2r8YTGvycTdYQEyx_Yg7Fk",{"id":897,"extension":670,"meta":898,"name":899,"slug":899,"stem":900,"__hash__":901},"tags\u002Ftags\u002Ffacebook.yml",{},"facebook","tags\u002Ffacebook","xk1FSKdOP155PdsTUy6lbefdoi6pOrwzZtVO8B52vMo",{"id":903,"extension":670,"meta":904,"name":905,"slug":905,"stem":906,"__hash__":907},"tags\u002Ftags\u002Ffanpage.yml",{},"fanpage","tags\u002Ffanpage","RoMU1ceix1opnNG2LPoGzfOjVZE128Gmk12ZtDAQxrM",{"id":909,"extension":670,"meta":910,"name":911,"slug":911,"stem":912,"__hash__":913},"tags\u002Ftags\u002Ffront-end.yml",{},"front-end","tags\u002Ffront-end","xKzeWb2B7yr2l4WBGtpyUzD1T_sBK5i-sb21-MEDOWw",{"id":915,"extension":670,"meta":916,"name":917,"slug":918,"stem":919,"__hash__":920},"tags\u002Ftags\u002Ffront-end-developer.yml",{},"front-end developer","front-end-developer","tags\u002Ffront-end-developer","rHwMfWcbpd8wXqIVD1HzPWxBheHq8V_9TdHCHkz4Sp8",{"id":922,"extension":670,"meta":923,"name":924,"slug":924,"stem":925,"__hash__":926},"tags\u002Ftags\u002Ffrontend.yml",{},"frontend","tags\u002Ffrontend","CxnBlT8roa7DydGYGxgRVXKKTvJrkjMMQrvHZQMxukA",{"id":928,"extension":670,"meta":929,"name":930,"slug":930,"stem":931,"__hash__":932},"tags\u002Ftags\u002Fgamepad.yml",{},"gamepad","tags\u002Fgamepad","Gsi3HzAfw68AJR6qCt8qeuS7Euw22ZMSpnaKNw0QV-A",{"id":934,"extension":670,"meta":935,"name":936,"slug":936,"stem":937,"__hash__":938},"tags\u002Ftags\u002Fgoalkicker.yml",{},"goalkicker","tags\u002Fgoalkicker","L_zNfxJfO6lZOUiLaE5m_ggQUX0komBXXth0SrszFUk",{"id":940,"extension":670,"meta":941,"name":942,"slug":942,"stem":943,"__hash__":944},"tags\u002Ftags\u002Fhandbook.yml",{},"handbook","tags\u002Fhandbook","D0-VmrV-_WQQnlVvaePXWciWrJ8zuWNJoJULW_rOpmI",{"id":946,"extension":670,"meta":947,"name":948,"slug":949,"stem":950,"__hash__":951},"tags\u002Ftags\u002Fhtml-api.yml",{},"HTML API","html-api","tags\u002Fhtml-api","DBZv8DJ2hZR64GhJALF_-YzUG4mZWG9m2VZE76eM_wY",{"id":953,"extension":670,"meta":954,"name":955,"slug":955,"stem":956,"__hash__":957},"tags\u002Ftags\u002Fhtml5.yml",{},"html5","tags\u002Fhtml5","fcqPnoul30jPoEk6tO8K9WWwU8XyFz3N7-GAse2uwsQ",{"id":959,"extension":670,"meta":960,"name":622,"slug":622,"stem":961,"__hash__":962},"tags\u002Ftags\u002Fimmich.yml",{},"tags\u002Fimmich","yRqxfTgoJptMOBpcKUS-JAmsUYKQZe4N5gyGFXSxoyU",{"id":964,"extension":670,"meta":965,"name":966,"slug":967,"stem":968,"__hash__":969},"tags\u002Ftags\u002Finteligentny-dom.yml",{},"inteligentny dom","inteligentny-dom","tags\u002Finteligentny-dom","LwWCH_MYDfKSgfl9wyRWrWegvCgb2hAnXMlON3OQ0dk",{"id":971,"extension":670,"meta":972,"name":973,"slug":974,"stem":975,"__hash__":976},"tags\u002Ftags\u002Fjaws.yml",{},"Jaws","jaws","tags\u002Fjaws","aklZIj6z2_fzRQ_h9RtAfvXgDhHH9v02f224m6u8B7s",{"id":978,"extension":670,"meta":979,"name":980,"slug":980,"stem":981,"__hash__":982},"tags\u002Ftags\u002Fjunior.yml",{},"junior","tags\u002Fjunior","ega8Cjq-Z5swNxexQG-ROW8hvi0eaDCJj-l4ILDW-4U",{"id":984,"extension":670,"meta":985,"name":986,"slug":987,"stem":988,"__hash__":989},"tags\u002Ftags\u002Fkariera-w-it.yml",{},"kariera w IT","kariera-w-it","tags\u002Fkariera-w-it","tyqsMUw9eQaVgTnsZy9DZAHFQXZNe0sDZavdgJ0KTcA",{"id":991,"extension":670,"meta":992,"name":993,"slug":994,"stem":995,"__hash__":996},"tags\u002Ftags\u002Fkobiety-w-it.yml",{},"kobiety w IT","kobiety-w-it","tags\u002Fkobiety-w-it","Gm0D6QX7IUT1CDThH6LuhQtWOOWFop09QiDZwX_Tm7c",{"id":998,"extension":670,"meta":999,"name":1000,"slug":1000,"stem":1001,"__hash__":1002},"tags\u002Ftags\u002Fkonferencja.yml",{},"konferencja","tags\u002Fkonferencja","-n95F1XvVC7rR9O9sOxyxnKIJBm4i5o3Md_Q-Z72occ",{"id":1004,"extension":670,"meta":1005,"name":686,"slug":686,"stem":1006,"__hash__":1007},"tags\u002Ftags\u002Fkonferencje.yml",{},"tags\u002Fkonferencje","Qf_9S1xyR0mqWi1CzdU_iGIwcU8Z0ET_3JBEIOWhaxA",{"id":1009,"extension":670,"meta":1010,"name":693,"slug":693,"stem":1011,"__hash__":1012},"tags\u002Ftags\u002Fkonfiguracja.yml",{},"tags\u002Fkonfiguracja","r2NNwL_ZY7xvPy0pUN2IPK8U6qBXSfay_MZbt1FpC2I",{"id":1014,"extension":670,"meta":1015,"name":1016,"slug":1016,"stem":1017,"__hash__":1018},"tags\u002Ftags\u002Fkoronawirus.yml",{},"koronawirus","tags\u002Fkoronawirus","8DgCLCZ1uSF_kl0dmgiEVVM-KkZFxGpXJus3fmMH4sE",{"id":1020,"extension":670,"meta":1021,"name":1022,"slug":1023,"stem":1024,"__hash__":1025},"tags\u002Ftags\u002Fksiazki-programistyczne.yml",{},"książki programistyczne","ksiazki-programistyczne","tags\u002Fksiazki-programistyczne","DF1l0MrjODlaeQ0evw8JedIJJb3v4MpesV0Fi6HpViQ",{"id":1027,"extension":670,"meta":1028,"name":1029,"slug":651,"stem":1030,"__hash__":1031},"tags\u002Ftags\u002Flenovo-m710q.yml",{},"lenovo m710q","tags\u002Flenovo-m710q","H2DSlpm_FUSkpZXj5AZxrXjTzdGXcfWhIFXE8MAjoJw",{"id":1033,"extension":670,"meta":1034,"name":1035,"slug":1035,"stem":1036,"__hash__":1037},"tags\u002Ftags\u002Fmid.yml",{},"mid","tags\u002Fmid","61US_hzDYC5fw5yPUWya7ZNjc9fOddRUJyOJU3oVKaM",{"id":1039,"extension":670,"meta":1040,"name":1041,"slug":652,"stem":1042,"__hash__":1043},"tags\u002Ftags\u002Fmini-pc.yml",{},"mini pc","tags\u002Fmini-pc","zCEZkcdMTwLbaNGmGiT8qGCtnECxEafkiJ-glDrozw0",{"id":1045,"extension":670,"meta":1046,"name":1047,"slug":618,"stem":1048,"__hash__":1049},"tags\u002Ftags\u002Fnas.yml",{},"NAS","tags\u002Fnas","RsN64SVV6BmbaR7e4pVVvGgbxQ0q8ihj5J4b_1oPH2k",{"id":1051,"extension":670,"meta":1052,"name":648,"slug":648,"stem":1053,"__hash__":1054},"tags\u002Ftags\u002Fnauka.yml",{},"tags\u002Fnauka","bMIyGRMcT5SRj0bxdrER6sibTNLAHr1enmElQI67jTo",{"id":1056,"extension":670,"meta":1057,"name":1058,"slug":1059,"stem":1060,"__hash__":1061},"tags\u002Ftags\u002Fnauka-programowania.yml",{},"nauka programowania","nauka-programowania","tags\u002Fnauka-programowania","M04c5RtH0Fu4ikOuW9fLy2-g2YBIAX0Yj9SHKEwOuUg",{"id":1063,"extension":670,"meta":1064,"name":1065,"slug":1066,"stem":1067,"__hash__":1068},"tags\u002Ftags\u002Fnvda.yml",{},"NVDA","nvda","tags\u002Fnvda","AS3XsW73sA9-MAI4JVv4y7luo2oGkpXrGptc51MKLQY",{"id":1070,"extension":670,"meta":1071,"name":1072,"slug":1073,"stem":1074,"__hash__":1075},"tags\u002Ftags\u002Fochrona-rodzicielska.yml",{},"ochrona rodzicielska","ochrona-rodzicielska","tags\u002Fochrona-rodzicielska","DZHsS1aBzb6OmeQFhCXy3Qu3QUMHsrbbN62bXmyBB0Q",{"id":1077,"extension":670,"meta":1078,"name":1079,"slug":1079,"stem":1080,"__hash__":1081},"tags\u002Ftags\u002Foptimization.yml",{},"optimization","tags\u002Foptimization","fJedkuv-GIoYXYs-z7AFgjvCxunavWHOWZDesN1EgFU",{"id":1083,"extension":670,"meta":1084,"name":1085,"slug":1086,"stem":1087,"__hash__":1088},"tags\u002Ftags\u002Forganizacja-pracy.yml",{},"organizacja pracy","organizacja-pracy","tags\u002Forganizacja-pracy","IJWHAuqRIlzOIgQbp6B0dYJLpApXOyvDii-k8n_CUCQ",{"id":1090,"extension":670,"meta":1091,"name":705,"slug":706,"stem":1092,"__hash__":1093},"tags\u002Ftags\u002Fosx.yml",{},"tags\u002Fosx","QymfouNjzTcNrsPkrZeaPTZdKpMsdYilpn7HRI1FxQQ",{"id":1095,"extension":670,"meta":1096,"name":1097,"slug":1098,"stem":1099,"__hash__":1100},"tags\u002Ftags\u002Fpanel-macro.yml",{},"panel macro","panel-macro","tags\u002Fpanel-macro","WrhWywY5PTfhm7n_TuxTZEWwebeWKfYiQf6n6nh19t4",{"id":1102,"extension":670,"meta":1103,"name":1104,"slug":1105,"stem":1106,"__hash__":1107},"tags\u002Ftags\u002Fpassword-manager.yml",{},"password manager","password-manager","tags\u002Fpassword-manager","viAfKlsGbzjczJJrb8pwaB4tInjCfLzynbSm-GRQz4Y",{"id":1109,"extension":670,"meta":1110,"name":1111,"slug":1111,"stem":1112,"__hash__":1113},"tags\u002Ftags\u002Fpdf.yml",{},"pdf","tags\u002Fpdf","UTB02hK82S5LzDB9kqZWrDRFb8SYzHfFRgCsqFwdBcE",{"id":1115,"extension":670,"meta":1116,"name":1117,"slug":1118,"stem":1119,"__hash__":1120},"tags\u002Ftags\u002Fphp.yml",{},"PHP","php","tags\u002Fphp","Id59psmnOEw6xZ04LGSXqaCSXElgAZVfZdIWk4TTMmU",{"id":1122,"extension":670,"meta":1123,"name":1124,"slug":1124,"stem":1125,"__hash__":1126},"tags\u002Ftags\u002Fpi-hole.yml",{},"pi-hole","tags\u002Fpi-hole","1YJ1tr1Tr23ItFg6rYXw6iKjvPJCdYb2MB_5W1FdZNw",{"id":1128,"extension":670,"meta":1129,"name":1130,"slug":1130,"stem":1131,"__hash__":1132},"tags\u002Ftags\u002Fpixel-mania.yml",{},"pixel-mania","tags\u002Fpixel-mania","N9WX_K8mFmAndjRdRzZX1PonLHyneP4XCJe9kQlGOpY",{"id":1134,"extension":670,"meta":1135,"name":1136,"slug":1137,"stem":1138,"__hash__":1139},"tags\u002Ftags\u002Fplaywright.yml",{},"PlayWright","playwright","tags\u002Fplaywright","fZAbd5k3k85yeGire7iJzvnRk00Wfww8OTu1h6rEuZM",{"id":1141,"extension":670,"meta":1142,"name":1143,"slug":1143,"stem":1144,"__hash__":1145},"tags\u002Ftags\u002Fpraca.yml",{},"praca","tags\u002Fpraca","ra3_bHnZqDrux1PiJ_pW6eqfX7l-uIFUPUhPqaq5cf4",{"id":1147,"extension":670,"meta":1148,"name":1149,"slug":1150,"stem":1151,"__hash__":1152},"tags\u002Ftags\u002Fpraca-zdalna.yml",{},"praca zdalna","praca-zdalna","tags\u002Fpraca-zdalna","HD5EOgzs-b3t5KIBRxlWQr0FuQVJ4N7eLQJV77YWcqc",{"id":1154,"extension":670,"meta":1155,"name":1156,"slug":1156,"stem":1157,"__hash__":1158},"tags\u002Ftags\u002Fprezentacja.yml",{},"prezentacja","tags\u002Fprezentacja","eiP5x-l400TtOy-gxO3TyOqYwcD4LP65jJ--7H-jyng",{"id":1160,"extension":670,"meta":1161,"name":621,"slug":621,"stem":1162,"__hash__":1163},"tags\u002Ftags\u002Fprivacy.yml",{},"tags\u002Fprivacy","Ln1AAZQ3fPOzuMJB0BWwUsjwaWTI7cFtzI6TaPrvKXc",{"id":1165,"extension":670,"meta":1166,"name":1167,"slug":1167,"stem":1168,"__hash__":1169},"tags\u002Ftags\u002Fprogramowanie.yml",{},"programowanie","tags\u002Fprogramowanie","EUO8owu6V8cJivzRtVvD12KgW4ojOCp-N7aI4euHEa0",{"id":1171,"extension":670,"meta":1172,"name":653,"slug":653,"stem":1173,"__hash__":1174},"tags\u002Ftags\u002Fproxmox.yml",{},"tags\u002Fproxmox","2AZfZmPZffxT3YuTVGHbsGvqKzpNRfot-OjFS6kkSYs",{"id":1176,"extension":670,"meta":1177,"name":1178,"slug":1179,"stem":1180,"__hash__":1181},"tags\u002Ftags\u002Fprywatny-dns.yml",{},"prywatny DNS","prywatny-dns","tags\u002Fprywatny-dns","kq-27-SNzP2YitFANg5iLgu0kdzyufoiOCLYApAehUc",{"id":1183,"extension":670,"meta":1184,"name":1185,"slug":1185,"stem":1186,"__hash__":1187},"tags\u002Ftags\u002Fprzekwalifikowanie.yml",{},"przekwalifikowanie","tags\u002Fprzekwalifikowanie","TqQNM6H8dfkRMTjNT8ZWyzynSMGeFjxseCt7-fZq0nA",{"id":1189,"extension":670,"meta":1190,"name":1191,"slug":1192,"stem":1193,"__hash__":1194},"tags\u002Ftags\u002Freact.yml",{},"React","react","tags\u002Freact","nXIcvF19iFz3UIXk2jbbJKRrr1_S9NLNYH3PUX_a2C4",{"id":1196,"extension":670,"meta":1197,"name":1198,"slug":1198,"stem":1199,"__hash__":1200},"tags\u002Ftags\u002Fredux.yml",{},"redux","tags\u002Fredux","CYtiFQKJae6MZE4Z_2qWwt7OGctPAutMzfD9f35a6-A",{"id":1202,"extension":670,"meta":1203,"name":1204,"slug":1204,"stem":1205,"__hash__":1206},"tags\u002Ftags\u002Fretro.yml",{},"retro","tags\u002Fretro","5AjMkMU44tDn8TV2FSTzbrvxoE7rplMmkLej7E-RIYM",{"id":1208,"extension":670,"meta":1209,"name":1210,"slug":1211,"stem":1212,"__hash__":1213},"tags\u002Ftags\u002Fretropi.yml",{},"RetroPi","retropi","tags\u002Fretropi","v_z0VjrAHiqYkzENB2DRMmo-V9VwE-8D2V_pRT-EBxw",{"id":1215,"extension":670,"meta":1216,"name":1217,"slug":1218,"stem":1219,"__hash__":1220},"tags\u002Ftags\u002Frozwoj.yml",{},"rozwój","rozwoj","tags\u002Frozwoj","RkL4It2FQnfcyHt1gNPjQ7cLqxrpgMy9ewFnPkF5sms",{"id":1222,"extension":670,"meta":1223,"name":1224,"slug":1225,"stem":1226,"__hash__":1227},"tags\u002Ftags\u002Frzemieslnik.yml",{},"rzemieślnik","rzemieslnik","tags\u002Frzemieslnik","fLVgsq47mga12X6gNKQ6QM5tpWdwICnLJwfSDwk1xEE",{"id":1229,"extension":670,"meta":1230,"name":1231,"slug":1231,"stem":1232,"__hash__":1233},"tags\u002Ftags\u002Fsaas.yml",{},"saas","tags\u002Fsaas","IJK35nx0P9hIm-I-szhYuII4LVixyUi2zgQINNh0irc",{"id":1235,"extension":670,"meta":1236,"name":1237,"slug":1238,"stem":1239,"__hash__":1240},"tags\u002Ftags\u002Fsamodzielnosc.yml",{},"samodzielność","samodzielnosc","tags\u002Fsamodzielnosc","mu6DqJVN-dhRiXCnV4A5ewTRx_ndkWH_pu7Fdf7n6XI",{"id":1242,"extension":670,"meta":1243,"name":620,"slug":620,"stem":1244,"__hash__":1245},"tags\u002Ftags\u002Fselfhosting.yml",{},"tags\u002Fselfhosting","ScAMu2i5h-QpOOGEuIvBN9fQn0ZmfyYfvD-561cUzKs",{"id":1247,"extension":670,"meta":1248,"name":1249,"slug":1249,"stem":1250,"__hash__":1251},"tags\u002Ftags\u002Fsenior.yml",{},"senior","tags\u002Fsenior","DFUFihqxLSI2g34_DFYLVSXQnP79966itG8NnBs44TE",{"id":1253,"extension":670,"meta":1254,"name":1255,"slug":663,"stem":1256,"__hash__":1257},"tags\u002Ftags\u002Fsieci-komputerowe.yml",{},"sieci komputerowe","tags\u002Fsieci-komputerowe","lziU51DXijHvzSYVgbK5r_aRCBS9KLdgU5FWjE3pD4s",{"id":1259,"extension":670,"meta":1260,"name":1261,"slug":1262,"stem":1263,"__hash__":1264},"tags\u002Ftags\u002Fsmart-home.yml",{},"smart home","smart-home","tags\u002Fsmart-home","wjGS16vdTWjBvPIfyZ7Jjv2rSAUfgKxYQTfVmfE_oNc",{"id":1266,"extension":670,"meta":1267,"name":1268,"slug":639,"stem":1269,"__hash__":1270},"tags\u002Ftags\u002Fsmr.yml",{},"SMR","tags\u002Fsmr","hd_86HRNRQ5vp9GFDgvFR3iXcRs57XNvESz05e-vh-o",{"id":1272,"extension":670,"meta":1273,"name":1274,"slug":1274,"stem":1275,"__hash__":1276},"tags\u002Ftags\u002Fspotkanie.yml",{},"spotkanie","tags\u002Fspotkanie","G-4xZsmDWDaZnA1t7fWrsGY0CvA2PWBRch_ISxgV3eY",{"id":1278,"extension":670,"meta":1279,"name":623,"slug":623,"stem":1280,"__hash__":1281},"tags\u002Ftags\u002Fstash.yml",{},"tags\u002Fstash","x-cfxrcr_me1q-Ea4BqtRl041a1CjwZbFM76VlobkVE",{"id":1283,"extension":670,"meta":1284,"name":1285,"slug":1286,"stem":1287,"__hash__":1288},"tags\u002Ftags\u002Fstore-management.yml",{},"store management","store-management","tags\u002Fstore-management","BDlb8jliEvzP4ByR_nwh5YcPAphegyjsvxnwheppvwM",{"id":1290,"extension":670,"meta":1291,"name":1292,"slug":1293,"stem":1294,"__hash__":1295},"tags\u002Ftags\u002Fstream-deck.yml",{},"stream deck","stream-deck","tags\u002Fstream-deck","ETKaTcPMSGRXiF8fX9HaCChrkWvjK1Qhc8DCtKNRLFo",{"id":1297,"extension":670,"meta":1298,"name":1299,"slug":1300,"stem":1301,"__hash__":1302},"tags\u002Ftags\u002Fstudia-podyplomowe.yml",{},"studia podyplomowe","studia-podyplomowe","tags\u002Fstudia-podyplomowe","CllbIMrpHwk7nHpdgNS5EJlfoY37AYtu6D28xcL7B8Y",{"id":1304,"extension":670,"meta":1305,"name":664,"slug":664,"stem":1306,"__hash__":1307},"tags\u002Ftags\u002Fswitch.yml",{},"tags\u002Fswitch","PqeuQm8ai89DcVFTdIBBYnrs6IVq0oystkF3JdV2cbQ",{"id":1309,"extension":670,"meta":1310,"name":1311,"slug":665,"stem":1312,"__hash__":1313},"tags\u002Ftags\u002Fszafa-rack.yml",{},"szafa rack","tags\u002Fszafa-rack","Tdq-0TqjtHfOvyhnHIwrDsPzQYMI6Rkb3iJBoqgudAc",{"id":1315,"extension":670,"meta":1316,"name":1317,"slug":1317,"stem":1318,"__hash__":1319},"tags\u002Ftags\u002Fszkolenia.yml",{},"szkolenia","tags\u002Fszkolenia","Ty9KLofCdboQngGvYkJOH1YZpBX-E3_Y1SLrdGucptY",{"id":1321,"extension":670,"meta":1322,"name":1323,"slug":1324,"stem":1325,"__hash__":1326},"tags\u002Ftags\u002Fszkolenie-front-end.yml",{},"szkolenie front-end","szkolenie-front-end","tags\u002Fszkolenie-front-end","yv2XwBbhwF8m1vceHXglBt_lax32HDj4iqYS8ymfIpM",{"id":1328,"extension":670,"meta":1329,"name":1330,"slug":1331,"stem":1332,"__hash__":1333},"tags\u002Ftags\u002Fszkolnictwo-zawodowe.yml",{},"szkolnictwo zawodowe","szkolnictwo-zawodowe","tags\u002Fszkolnictwo-zawodowe","wHy70cvPzW-iXNTesa8dnmsUN3GZ6RQ_08rvp2jcr-o",{"id":1335,"extension":670,"meta":1336,"name":1337,"slug":1337,"stem":1338,"__hash__":1339},"tags\u002Ftags\u002Ftech3camp.yml",{},"tech3camp","tags\u002Ftech3camp","2xN4prsqldeVcTsCibyLj-T84k_q27SekfsQ9H3ml6w",{"id":1341,"extension":670,"meta":1342,"name":1343,"slug":1343,"stem":1344,"__hash__":1345},"tags\u002Ftags\u002Ftestowanie.yml",{},"testowanie","tags\u002Ftestowanie","bQ7J7HLrZe6c9Me3bn_3VCbshav5tsqNTBIwd0xkRaQ",{"id":1347,"extension":670,"meta":1348,"name":1349,"slug":1349,"stem":1350,"__hash__":1351},"tags\u002Ftags\u002Ftesty.yml",{},"testy","tags\u002Ftesty","JDNtVkIDLY5e-th779qHOQFRrQ6Ywoq8us2HXlBz9PY",{"id":1353,"extension":670,"meta":1354,"name":1355,"slug":619,"stem":1356,"__hash__":1357},"tags\u002Ftags\u002Ftruenas.yml",{},"TrueNas","tags\u002Ftruenas","jGviBDrcOLcc4LIDAMUINs_clt6cqQIbnmCsGjlBoEU",{"id":1359,"extension":670,"meta":1360,"name":1361,"slug":1361,"stem":1362,"__hash__":1363},"tags\u002Ftags\u002Ftuya.yml",{},"tuya","tags\u002Ftuya","MwpPoYlxeAiebaRVNdxytmFq9k0BpiTEbiEvwh4pfq4",{"id":1365,"extension":670,"meta":1366,"name":1367,"slug":1367,"stem":1368,"__hash__":1369},"tags\u002Ftags\u002Fublock.yml",{},"ublock","tags\u002Fublock","EPnKEvKkfWB2hbpkolTIytNQ9c12jSrnctf8CWEVbUM",{"id":1371,"extension":670,"meta":1372,"name":1373,"slug":1374,"stem":1375,"__hash__":1376},"tags\u002Ftags\u002Fvirtual-host.yml",{},"virtual host","virtual-host","tags\u002Fvirtual-host","Ru2r4wU7txKcWDbL3hq2QGx7v8gKwTJE25BItrzjqCQ",{"id":1378,"extension":670,"meta":1379,"name":1380,"slug":1381,"stem":1382,"__hash__":1383},"tags\u002Ftags\u002Fvoiceover.yml",{},"VoiceOver","voiceover","tags\u002Fvoiceover","7_jZqkfOk163vezQCATCpkIhdxmxfXe5dsLjgORGRWc",{"id":1385,"extension":670,"meta":1386,"name":1387,"slug":1388,"stem":1389,"__hash__":1390},"tags\u002Ftags\u002Fvue.yml",{},"Vue","vue","tags\u002Fvue","9ztytvQnoFLSGIXCwVz0HDl1yEBgdxBtwfIb4xxED8w",{"id":1392,"extension":670,"meta":1393,"name":1394,"slug":733,"stem":1395,"__hash__":1396},"tags\u002Ftags\u002Fvue-js.yml",{},"vue.js","tags\u002Fvue-js","ZEglZJ4b32MxGRUCWg3ij0_Sz-YkJDI60yOFUG3Dip8",{"id":1398,"extension":670,"meta":1399,"name":1400,"slug":1400,"stem":1401,"__hash__":1402},"tags\u002Ftags\u002Fvuejs.yml",{},"vuejs","tags\u002Fvuejs","Qz3030ujqXE_33tL5hbF8n1MGIh1jpRtdzXVrQT79jA",{"id":1404,"extension":670,"meta":1405,"name":1406,"slug":1406,"stem":1407,"__hash__":1408},"tags\u002Ftags\u002Fvuenews.yml",{},"vuenews","tags\u002Fvuenews","5I7T-cG9aZzeR62I-tWYDruQvjkSbRxtAeDI9otWrR8",{"id":1410,"extension":670,"meta":1411,"name":1412,"slug":1412,"stem":1413,"__hash__":1414},"tags\u002Ftags\u002Fvuetoolbox.yml",{},"vuetoolbox","tags\u002Fvuetoolbox","y5NXiZfQviI16DIkNjTxSwnLQIyrXs7OBZjVY1IyNmk",{"id":1416,"extension":670,"meta":1417,"name":1418,"slug":1418,"stem":1419,"__hash__":1420},"tags\u002Ftags\u002Fvuex.yml",{},"vuex","tags\u002Fvuex","ksF82HLoN49mJn2cJ0DhYz_Dt6mlrJDT82Ufu6QKmKQ",{"id":1422,"extension":670,"meta":1423,"name":1424,"slug":1425,"stem":1426,"__hash__":1427},"tags\u002Ftags\u002Fweb-development.yml",{},"web development","web-development","tags\u002Fweb-development","144N0DLmtEIX98zdSuOWIsCZYMHyxStp8_ZksWK2M7E",{"id":1429,"extension":670,"meta":1430,"name":1431,"slug":1432,"stem":1433,"__hash__":1434},"tags\u002Ftags\u002Fwladyslawowo.yml",{},"Władysławowo","wladyslawowo","tags\u002Fwladyslawowo","LgrtfAzosbyNoEeZ6_GWMrueP29fN7fPL3N5Kp5Wm4w",{"id":1436,"extension":670,"meta":1437,"name":1438,"slug":1439,"stem":1440,"__hash__":1441},"tags\u002Ftags\u002Fwork-life-balance.yml",{},"work-life balance","work-life-balance","tags\u002Fwork-life-balance","hXw9EMtMUVm71LSUBz1o6Ttz7xlyrsnMo-VOEfMJwr0",{"id":1443,"extension":670,"meta":1444,"name":1445,"slug":1446,"stem":1447,"__hash__":1448},"tags\u002Ftags\u002Fxbox.yml",{},"XBOX","xbox","tags\u002Fxbox","tDsqBFEx88ZSQxV8Q78dFlkSdjNdQOwFU4jn0D2wcYQ",{"id":1450,"avatar":1451,"bio":1452,"extension":670,"intro":1453,"links":1454,"meta":1459,"name":1460,"slug":6,"stem":1461,"__hash__":1462},"authors\u002Fauthors\u002Fmaciek-walczak.yml","\u002Fmaciek.png","Front-End Developer, Team Leader, trener i wykładowca na kursach programowania.","Cześć! Nazywam się Maciek i od 2005 roku pracuję jako programista – najpierw Full Stack, a obecnie jako Front-End Developer i Team Leader. Udzielam się też jako trener – prowadzę zajęcia w ramach kursów dla osób, które chcą rozpocząć swoją przygodę z programowaniem. Miałem też okazję występować jako prelegent na spotkaniach z serii tech3camp. Zapraszam do lektury mojego bloga, gdzie staram się publikować swoje przemyślenia w tematach mniej lub bardziej związanych z front-endem.",[1455],{"label":1456,"url":1457,"icon":1458},"YouTube","https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCMG_PvHPcSe0TCmnIXvzB1Q","i-lucide-youtube",{},"Maciej Walczak","authors\u002Fmaciek-walczak","6aJnd9c5TZ6nsZd_ycEjnlIJ4stHJREQCAgigfsc_Hk",1791037694802]