{"id":10402,"date":"2026-09-13T18:10:00","date_gmt":"2026-09-13T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10402"},"modified":"2026-10-26T11:49:49","modified_gmt":"2026-10-26T10:49:49","slug":"etykiety-traefika-po-kolei-wraz-z-pulapka-dolara","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/","title":{"rendered":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara"},"content":{"rendered":"<p>Etykiety Dockera opisuj\u0105 kilka po\u0142\u0105czonych obiekt\u00f3w Traefika. Router HTTP wybiera \u017c\u0105dania wed\u0142ug regu\u0142y, us\u0142uga okre\u015bla cel, a middleware przetwarza \u017c\u0105dania lub odpowiedzi. Obiekty \u0142\u0105cz\u0105 odwo\u0142ania; identyczne nazwy nie tworz\u0105 automatycznie powi\u0105zania.<\/p>\n<p>Diagnostyka wymaga trzech osobnych widok\u00f3w: pliku Compose przed podstawianiem, etykiet rzeczywi\u015bcie zapisanych w kontenerze i wynikowej konfiguracji Traefika. B\u0142\u0119dy mog\u0105 powsta\u0107 ju\u017c przy dekodowaniu; liter\u00f3wka nie musi pozosta\u0107 bez komunikatu.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10402-traefiklabels-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"ETYKIETY TRAEFIKA: ODNIESIENIA I INTERPOLACJA\"><figcaption>$2y i $05 nie s\u0105 nazwami zmiennych Compose bez klamer.<\/figcaption><\/figure>\n<h2>Jawne po\u0142\u0105czenie routera, us\u0142ugi i middleware<\/h2>\n<p>Fragment nale\u017cy umie\u015bci\u0107 pod us\u0142ug\u0105 aplikacji w Compose. Zak\u0142ada skonfigurowany provider Docker, entrypoint <code>websecure<\/code>, resolver <code>le<\/code> oraz wsp\u00f3ln\u0105 sie\u0107 Dockera rzeczywi\u015bcie nazwan\u0105 <code>proxy<\/code>. Provider Docker odczytuje ustawienia routingu z etykiet kontener\u00f3w. Entrypoint okre\u015bla miejsce przyjmowania po\u0142\u0105cze\u0144 przez Traefika, a resolver certyfikat\u00f3w pobiera certyfikaty TLS. Aplikacja musi by\u0107 osi\u0105galna na wewn\u0119trznym porcie 8080. Plik u\u017cytkownik\u00f3w musi by\u0107 zamontowany do odczytu pod wskazan\u0105 \u015bcie\u017ck\u0105 w <strong>kontenerze Traefika<\/strong>; sam fragment nie jest pe\u0142n\u0105 instalacj\u0105.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">labels:\n<\/span><span class=\"cbb-line\">  - \"traefik.enable=true\"\n<\/span><span class=\"cbb-line\">  - \"traefik.docker.network=proxy\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.rule=Host(`blog.example.com`)\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.entrypoints=websecure\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.tls=true\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.tls.certresolver=le\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.service=blog-service\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.routers.blog.middlewares=blog-auth@docker\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.middlewares.blog-auth.basicauth.usersfile=\/etc\/traefik\/auth\/blog.htpasswd\"\n<\/span><span class=\"cbb-line\">  - \"traefik.http.services.blog-service.loadbalancer.server.port=8080\"<\/span><\/code><\/pre><\/figure>\n<p><code>blog<\/code>, <code>blog-service<\/code> i <code>blog-auth<\/code> celowo maj\u0105 r\u00f3\u017cne nazwy. Pola us\u0142ugi i middleware routera tworz\u0105 odwo\u0142ania. Liter\u00f3wka w dowolnie wybranej nazwie obiektu mo\u017ce zadeklarowa\u0107 inny obiekt, natomiast b\u0142\u0105d w okre\u015blonym polu, takim jak <code>loadbalancer<\/code>, mo\u017ce powodowa\u0107 b\u0142\u0105d dekodowania.<\/p>\n<p>Bez jawnego wskazania us\u0142ugi provider Docker mo\u017ce automatycznie przypisa\u0107 jedyn\u0105 zadeklarowan\u0105 us\u0142ug\u0119 albo utworzy\u0107 us\u0142ug\u0119. Wiele us\u0142ug sprawia, \u017ce automatyczny wyb\u00f3r staje si\u0119 niejednoznaczny. Inna nazwa us\u0142ugi mo\u017ce zatem pozosta\u0107 niezauwa\u017cona przy jednej us\u0142udze, a p\u00f3\u017aniejsze jawne odwo\u0142anie przestaje dzia\u0142a\u0107. Nazwy powinny by\u0107 bezkonfliktowe w ca\u0142ym providerze, tak\u017ce mi\u0119dzy projektami Compose.<\/p>\n<p>Bez jawnego portu docelowego udokumentowane wykrywanie Dockera korzysta z jedynego lub najni\u017cszego eksponowanego portu. Nie jest to automatyczny wyb\u00f3r opublikowanego portu hosta ani dow\u00f3d, \u017ce nas\u0142uchuje tam w\u0142a\u015bciwa aplikacja. Jawny port wewn\u0119trzny pokazuje zamierzony cel.<\/p>\n<h2>Nazwy provider\u00f3w i rzeczywista ochrona<\/h2>\n<p>Nazwa middleware bez przyrostka jest rozwi\u0105zywana w providerze routera. <code>blog-auth@docker<\/code> wskazuje przestrze\u0144 nazw wprost; <code>blog-auth@file<\/code> odwo\u0142uje si\u0119 do middleware z w\u0142\u0105czonego providera plikowego. Brak wskazanego obiektu uniemo\u017cliwia zbudowanie danej trasy. Nie gwarantuje to jednak ochrony ca\u0142ej nazwy hosta: inny pasuj\u0105cy router mo\u017ce nadal przyj\u0105\u0107 \u017c\u0105danie.<\/p>\n<p>Samo zadeklarowanie middleware nie chroni automatycznie ka\u017cdego doj\u015bcia do us\u0142ugi. \u0141a\u0144cuchy router\u00f3w i ewentualne domy\u015blne middleware entrypointu okre\u015blaj\u0105 rzeczywisty przebieg. Pusta lista middleware routera nie musi wi\u0119c oznacza\u0107 braku ochrony; inna nazwa hosta, entrypoint lub bezpo\u015brednio opublikowany port backendu mo\u017ce natomiast omin\u0105\u0107 oczekiwan\u0105 ochron\u0119. BasicAuth wymaga HTTPS do zabezpieczenia danych logowania podczas transmisji.<\/p>\n<h2>Co Compose rzeczywi\u015bcie robi ze znakami dolara<\/h2>\n<p>Podstawianie zmiennych zast\u0119puje nazw\u0119 zmiennej jej ustawion\u0105 warto\u015bci\u0105. Ten proces nazywa si\u0119 interpolacj\u0105. Compose podstawia poprawne wyra\u017cenia zmiennych, na przyk\u0142ad <code>$NAME<\/code> i <code>${NAME}<\/code>. Nazwa zmiennej bez klamer zaczyna si\u0119 liter\u0105 lub podkre\u015bleniem. Prefiksy bcrypt <code>$2y<\/code> i <code>$05<\/code> nie s\u0105 wi\u0119c usuwane jako takie zmienne. Dalszy fragment skr\u00f3tu, na przyk\u0142ad <code>$e6zX...<\/code>, mo\u017ce jednak zosta\u0107 rozpoznany jako pocz\u0105tek zmiennej; brak warto\u015bci zwykle powoduje ostrze\u017cenie i pusty tekst zast\u0119pczy. Oryginalny skr\u00f3t nie jest wtedy wiarygodnie zachowany.<\/p>\n<p>Dla skr\u00f3tu wpisanego bezpo\u015brednio w interpolowanej etykiecie Compose Traefik zaleca zapis ka\u017cdego <code>$<\/code> jako <code>$$<\/code>. Polecenie Bash pyta interaktywnie o has\u0142o i podwaja znaki dolara w wygenerowanym wierszu u\u017cytkownika:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">set<\/span> <span class=\"cbb-attr\">-o<\/span> pipefail\n<\/span><span class=\"cbb-line\">htpasswd <span class=\"cbb-attr\">-nB<\/span> admin <span class=\"cbb-operator\">|<\/span> <span class=\"cbb-function\">sed<\/span> <span class=\"cbb-string\">'s\/\\$\/$$\/g'<\/span><\/span><\/code><\/pre><\/figure>\n<p>Ca\u0142y wynik trafia za <code>basicauth.users=<\/code>, je\u015bli ta opcja zast\u0119puje <code>usersfile<\/code>. Wielokropki we fragmentach obja\u015bniaj\u0105cych nie zast\u0119puj\u0105 poprawnego pe\u0142nego skr\u00f3tu. Has\u0142o przekazane jako argument <code>htpasswd -b<\/code> mo\u017ce ujawni\u0107 si\u0119 na li\u015bcie proces\u00f3w lub w historii pow\u0142oki; wariant interaktywny unika takiego argumentu.<\/p>\n<p>Podwajanie wynika z przetwarzania Compose, a nie z regu\u0142 Traefika. Niezmieniony zamontowany plik u\u017cytkownik\u00f3w i bezpo\u015brednio czytany plik konfiguracji dynamicznej Traefika zawieraj\u0105 pojedyncze dolary. Wiersz polece\u0144 wymaga dodatkowo uwzgl\u0119dnienia pow\u0142oki; pojedyncze cudzys\u0142owy pow\u0142oki POSIX chroni\u0105 dos\u0142owny skr\u00f3t przed rozwijaniem zmiennych. Pliki <code>.env<\/code> maj\u0105 w\u0142asne zasady cytowania. Zmiana miejsca przechowywania wymaga zatem ponownej kontroli.<\/p>\n<h2>Diagnostyka bez gwarantowanych kod\u00f3w odpowiedzi<\/h2>\n<table><thead><tr><th>Problem<\/th><th>Przydatna kontrola<\/th><\/tr><\/thead><tbody>\n<tr><td>Brak us\u0142ugi lub middleware<\/td><td>Provider, odwo\u0142anie i b\u0142\u0119dy routera. Bez innej pasuj\u0105cej trasy typowe jest 404; inne routery lub systemy po\u015brednie mog\u0105 odpowiedzie\u0107 inaczej.<\/td><\/tr>\n<tr><td>Zmieniony lub niepoprawny skr\u00f3t<\/td><td>Ostrze\u017cenia Compose, rzeczywista warto\u015b\u0107 i b\u0142\u0119dy uwierzytelniania. Mo\u017cliwe 401 nie dowodzi jednoznacznie interpolacji.<\/td><\/tr>\n<tr><td>Nieosi\u0105galny backend<\/td><td>Sie\u0107, wewn\u0119trzny adres IP, port, nas\u0142uch i limity czasu. 502\/504 to typowe wskaz\u00f3wki, a nie pe\u0142na diagnoza.<\/td><\/tr>\n<tr><td>Niew\u0142\u0105czony kontener<\/td><td>Przy <code>exposedByDefault=false<\/code> wymagaj\u0105 kontroli <code>traefik.enable=true<\/code> i pozosta\u0142e warunki providera.<\/td><\/tr>\n<tr><td>Ta sama nazwa obiektu przy r\u00f3\u017cnych definicjach<\/td><td>Konflikty nazw w ca\u0142ym providerze i logi; nazewnictwo projekt\u00f3w Compose nie rozwi\u0105zuje automatycznie konflikt\u00f3w obiekt\u00f3w z etykiet.<\/td><\/tr><\/tbody><\/table>\n<p><code>docker compose config<\/code> pokazuje rozwi\u0105zan\u0105 konfiguracj\u0119 bez uruchamiania kontener\u00f3w. <code>docker inspect<\/code> pokazuje zapisane etykiety i sieci istniej\u0105cego kontenera. Por\u00f3wnanie musi obejmowa\u0107 ca\u0142y skr\u00f3t, nie tylko d\u0142ugo\u015b\u0107; oba wyniki mog\u0105 zawiera\u0107 dane wra\u017cliwe. Logi Traefika i rzeczywiste obiekty router\u00f3w oraz us\u0142ug pokazuj\u0105 nast\u0119pnie zaakceptowan\u0105 konfiguracj\u0119. Widok panelu nie zast\u0119puje test\u00f3w logowania wszystkimi drogami dost\u0119pu.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy usersFile wskazuje ten sam plik w kontenerze aplikacji?<\/h3><p>Nie. Traefik czyta plik we w\u0142asnym \u015brodowisku. Zamontowanie tylko w aplikacji nie wystarcza. Kontroli wymagaj\u0105 prawa odczytu i montowanie tylko do odczytu. Po\u0142\u0105czenie <code>users<\/code> i <code>usersFile<\/code> scala listy; pierwsze\u0144stwo przy jednakowych nazwach wymaga sprawdzenia dla u\u017cywanej wersji Traefika.<\/p>\n<h3>Jakiej nazwy sieci oczekuje etykieta?<\/h3><p><code>traefik.docker.network<\/code> wymaga rzeczywistej nazwy sieci Dockera. Compose mo\u017ce doda\u0107 nazw\u0119 projektu; jawne <code>name<\/code> lub sie\u0107 zewn\u0119trzna mog\u0105 dzia\u0142a\u0107 inaczej. Etykieta wybiera istniej\u0105c\u0105 sie\u0107 i nie pod\u0142\u0105cza do niej kontener\u00f3w.<\/p>\n<h3>Jak wykorzysta\u0107 panel Traefika?<\/h3><p>Przez chroniony, kontrolowany dost\u0119p z odpowiednim uwierzytelnianiem i TLS. Publiczne <code>api.insecure<\/code> nie jest w\u0142a\u015bciwym skr\u00f3tem. Brak trasy, b\u0142\u0119dne uwierzytelnienie i problemy backendu wymagaj\u0105 osobnej kontroli konfiguracji, log\u00f3w oraz \u017c\u0105da\u0144.<\/p><\/div><div class=\"lw-quellen\"><h2>\u0179r\u00f3d\u0142a<\/h2><ul><li><a href=\"https:\/\/docs.docker.com\/reference\/compose-file\/interpolation\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker: podstawianie zmiennych w Compose<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/routing-configuration\/other-providers\/docker\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: etykiety Dockera do routingu<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/routing-configuration\/http\/middlewares\/basicauth\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: BasicAuth<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/install-configuration\/entrypoints\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: domy\u015blne middleware entrypoint\u00f3w<\/a><\/li><li><a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/programs\/htpasswd.html\" target=\"_blank\" rel=\"noopener noreferrer\">Apache HTTP Server: htpasswd<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/install-configuration\/providers\/docker\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: provider Docker<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/install-configuration\/api-dashboard\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: API i panel administracyjny<\/a><\/li><li><a href=\"https:\/\/raw.githubusercontent.com\/traefik\/traefik\/master\/pkg\/provider\/configuration.go\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: kod konfiguracji provider\u00f3w<\/a><\/li><li><a href=\"https:\/\/docs.docker.com\/compose\/how-tos\/environment-variables\/variable-interpolation\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker: podstawianie zmiennych \u015brodowiskowych<\/a><\/li><li><a href=\"https:\/\/doc.traefik.io\/traefik\/\" target=\"_blank\" rel=\"noopener noreferrer\">Traefik: dokumentacja<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Routery, us\u0142ugi i middleware Traefika \u0142\u0105cz\u0105 odwo\u0142ania. Poprawne etykiety Dockera, znaki dolara w Compose i kontrola rzeczywistej konfiguracji pomagaj\u0105 diagnozowa\u0107 b\u0142\u0119dy routingu oraz uwierzytelniania.<\/p>\n","protected":false},"author":1,"featured_media":13901,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[92232,92226],"class_list":["post-10402","post","type-post","status-publish","format-standard","hentry","category-it-networks-pl","tag-docker-pl","tag-self-hosting-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-13T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T10:49:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara\",\"datePublished\":\"2026-09-13T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:49:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/\"},\"wordCount\":1040,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png\",\"keywords\":[\"Docker\",\"Self-Hosting\"],\"articleSection\":[\"IT &amp; Networks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/\",\"name\":\"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png\",\"datePublished\":\"2026-09-13T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:49:49+00:00\",\"description\":\"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/it-networks-pl\\\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik","description":"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/","og_locale":"en_US","og_type":"article","og_title":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik","og_description":"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-13T16:10:00+00:00","article_modified_time":"2026-10-26T10:49:49+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara","datePublished":"2026-09-13T16:10:00+00:00","dateModified":"2026-10-26T10:49:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/"},"wordCount":1040,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png","keywords":["Docker","Self-Hosting"],"articleSection":["IT &amp; Networks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/","name":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png","datePublished":"2026-09-13T16:10:00+00:00","dateModified":"2026-10-26T10:49:49+00:00","description":"Jak router, us\u0142uga i middleware w Traefiku odnajduj\u0105 si\u0119 po nazwie, dlaczego odwo\u0142anie do middleware potrzebuje \u017ar\u00f3d\u0142a i dlaczego znaki dolara si\u0119 podwaja.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10402-etykiety-traefika-po-kolei-wraz-z-pu-g.png","width":1200,"height":630,"caption":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/it-networks-pl\/etykiety-traefika-po-kolei-wraz-z-pulapka-dolara\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Etykiety Traefika po kolei, wraz z pu\u0142apk\u0105 dolara"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10402"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10402\/revisions"}],"predecessor-version":[{"id":26684,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10402\/revisions\/26684"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13901"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}