{"id":491,"date":"2026-09-23T17:50:00","date_gmt":"2026-09-23T15:50:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=491"},"modified":"2026-09-10T10:52:45","modified_gmt":"2026-09-10T08:52:45","slug":"self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/","title":{"rendered":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Przesy\u0142anie poufnych dokument\u00f3w firmowych, danych klient\u00f3w czy kodu \u017ar\u00f3d\u0142owego do publicznych interfejs\u00f3w API du\u017cych modeli j\u0119zykowych (LLM), takich jak OpenAI, Anthropic czy Google Gemini, wi\u0105\u017ce si\u0119 z powa\u017cnym ryzykiem utraty suwerenno\u015bci danych oraz naruszeniami przepis\u00f3w RODO. Hostowanie otwartych modeli AI \u2013 takich jak Llama 3.1, Mistral czy CodeLlama \u2013 na w\u0142asnej infrastrukturze serwerowej gwarantuje ca\u0142kowit\u0105 izolacj\u0119 informacji. Poniewa\u017c popularny serwer inferencyjny Ollama domy\u015blnie wystawia swoje API REST na porcie <code>11434<\/code> bez natywnego uwierzytelniania, jego bezpieczne wdro\u017cenie w sieci przedsi\u0119biorstwa wymaga zastosowania dodatkowej warstwy architektonicznej: serwera proxy odwrotnego Nginx wymuszaj\u0105cego rygorystyczne uwierzytelnianie tokenem oraz szyfrowanie TLS.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Architektura rozwi\u0105zania: Bezpieczny potok inferencji brzegowej<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Profesjonalne lokalne wdro\u017cenie modelu LLM oddziela wykonywanie oblicze\u0144 od bezpo\u015bredniej ekspozycji sieciowej poprzez warstwowe po\u0142\u0105czenie trzech odizolowanych us\u0142ug w \u015brodowisku kontenerowym:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Backend inferencyjny Ollama:<\/strong> Wykonuje obliczenia modeli o otwartych wagach przy u\u017cyciu akceleracji GPU NVIDIA (za po\u015brednictwem NVIDIA Container Toolkit) lub kwantyzacji CPU, komunikuj\u0105c si\u0119 wy\u0142\u0105cznie przez wewn\u0119trzne interfejsy sieci kontenerowej.<\/li>\r\n<li><strong>Serwer proxy uwierzytelniaj\u0105cy i szyfruj\u0105cy Nginx:<\/strong> Dzia\u0142a jako jedyny punkt wej\u015bcia, przechodz\u0105c przez kt\u00f3ry ka\u017cde zapytanie HTTP podlega terminacji SSL\/TLS oraz weryfikacji tokena Bearer lub po\u015bwiadcze\u0144 HTTP Basic Auth przed przekazaniem do serwera Ollama.<\/li>\r\n<li><strong>Kompatybilny z OpenAI interfejs lub skrypty:<\/strong> Wewn\u0119trzne interfejsy internetowe (np. Open WebUI) lub zautomatyzowane skrypty Python komunikuj\u0105 si\u0119 z zabezpieczonym punktem ko\u0144cowym przy u\u017cyciu standardowej sk\u0142adni SDK OpenAI, bez pomijania warstwy ochronnej.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-ollama-pl.png\" width=\"1120\" height=\"580\" alt=\"Diagram perymetru: opublikowany jest tylko port 8443 proxy nginx, backend Ollama na 11434 pozostaje w sieci mostkowej Dockera\">\n<figcaption>Backend inferencyjny nigdy nie dotyka \u015bwiata zewn\u0119trznego. Opublikowany jest wy\u0142\u0105cznie proxy, a ten bez uwierzytelnienia nie odpowiada w og\u00f3le \u2014 dopiero to czyni z lokalnego modelu us\u0142ug\u0119 wewn\u0119trzn\u0105.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Wdro\u017cenie kontener\u00f3w i akceleracji GPU krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">W celu uruchomienia serwera Ollama wraz z dedykowanym proxy odwrotnym Nginx nale\u017cy wdro\u017cy\u0107 poni\u017cszy produkcyjny plik <code>docker-compose.yml<\/code> skonfigurowany pod k\u0105tem dost\u0119pu do procesor\u00f3w graficznych (GPU Passthrough) oraz izolacji sieciowej:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-yaml\">services:\n  ollama:\n    image: ollama\/ollama:latest\n    container_name: enterprise_ollama\n    restart: always\n    environment:\n      - OLLAMA_HOST=0.0.0.0\n      - OLLAMA_ORIGINS=*\n    volumes:\n      - .\/ollama_data:\/root\/.ollama\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - driver: nvidia\n              count: all\n              capabilities: [gpu]\n    networks:\n      - llm_internal\n\n  auth_proxy:\n    image: nginx:alpine\n    container_name: ollama_auth_proxy\n    restart: always\n    ports:\n      - \"8443:443\"\n    volumes:\n      - .\/nginx.conf:\/etc\/nginx\/nginx.conf:ro\n      - .\/certs:\/etc\/nginx\/certs:ro\n      - .\/htpasswd:\/etc\/nginx\/.htpasswd:ro\n    depends_on:\n      - ollama\n    networks:\n      - llm_internal\n\nnetworks:\n  llm_internal:\n    driver: bridge<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Konfiguracja proxy uwierzytelniaj\u0105cego Nginx krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Aby ograniczy\u0107 dost\u0119p do API wy\u0142\u0105cznie do autoryzowanych system\u00f3w firmowych, Nginx jest konfigurowany z wymogiem HTTP Basic Auth lub weryfikacji token\u00f3w. Poni\u017cszy skrypt <code>nginx.conf<\/code> egzekwuje uwierzytelnianie i wyd\u0142u\u017ca limity czasowe dla d\u0142ugotrwa\u0142ego strumieniowania odpowiedzi modeli LLM:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-nginx\">events {\n    worker_connections 1024;\n}\n\nhttp {\n    upstream ollama_backend {\n        server ollama:11434;\n    }\n\n    server {\n        listen 443 ssl;\n        server_name llm.internal.domain;\n\n        ssl_certificate \/etc\/nginx\/certs\/server.crt;\n        ssl_certificate_key \/etc\/nginx\/certs\/server.key;\n        ssl_protocols TLSv1.2 TLSv1.3;\n\n        # Wymuszenie HTTP Basic Auth (Generowanie przez: htpasswd -c .\/htpasswd api_user)\n        auth_basic \"Enterprise LLM Secure Gateway\";\n        auth_basic_user_file \/etc\/nginx\/.htpasswd;\n\n        # Obowi\u0105zkowe wyd\u0142u\u017cenie timeout\u00f3w dla strumieniowania d\u0142ugich odpowiedzi\n        proxy_read_timeout 600s;\n        proxy_connect_timeout 600s;\n        proxy_send_timeout 600s;\n\n        location \/ {\n            proxy_pass http:\/\/ollama_backend;\n            proxy_set_header Host $host;\n            proxy_set_header X-Real-IP $remote_addr;\n            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n            proxy_set_header X-Forwarded-Proto $scheme;\n            \n            # Obs\u0142uga strumieniowania Server-Sent Events (SSE)\n            proxy_buffering off;\n            proxy_cache off;\n        }\n    }\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">4. Weryfikacja dzia\u0142ania skrypt\u00f3w i interfejsu Web UI krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Po uruchomieniu proxy serwer inferencyjny da si\u0119 bezpiecznie odpytywa\u0107 za pomoc\u0105 skrypt\u00f3w lub po\u0142\u0105czy\u0107 z interfejsami czatu:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li><strong>Pobieranie modeli:<\/strong> Pocz\u0105tkowe pobranie modelu odbywa si\u0119 wewn\u0105trz kontenera przy u\u017cyciu wiersza polece\u0144:\r\n    <br><code>docker exec -it enterprise_ollama ollama run llama3.1<\/code>\r\n<\/li>\r\n<li><strong>Weryfikacja przez API w Pythonie\/cURL:<\/strong> Wys\u0142anie uwierzytelnionego zapytania HTTPS REST do proxy z podaniem po\u015bwiadcze\u0144 Basic Auth:\r\n    <br><code>curl -k -u \"api_user:SecretPassword123\" https:\/\/localhost:8443\/api\/generate -d '{\"model\": \"llama3.1\", \"prompt\": \"Podsumuj polityk\u0119 prywatno\u015bci firmy.\", \"stream\": false}'<\/code>\r\n<\/li>\r\n<li><strong>Po\u0142\u0105czenie z Open WebUI:<\/strong> Wdro\u017cenie kontenera <code>open-webui<\/code> w tej samej sieci przy odpowiednim skonfigurowaniu zmiennej \u015brodowiskowej punktu ko\u0144cowego:\r\n    <br><code>OLLAMA_BASE_URL=https:\/\/api_user:SecretPassword123@auth_proxy:443<\/code>\r\n<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">5. Podsumowanie i warto\u015b\u0107 architektoniczna<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Co da si\u0119 osi\u0105gn\u0105\u0107 dzi\u0119ki temu poradnikowi:<\/strong> Wdro\u017cenie w\u0142asnego, akcelerowanego procesorami GPU serwera du\u017cych modeli j\u0119zykowych (LLM) z wykorzystaniem platformy Ollama, zabezpieczonego przez serwer proxy Nginx z uwierzytelnianiem i szyfrowaniem SSL\/TLS.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Wynikaj\u0105ca z tego warto\u015b\u0107:<\/strong> Wewn\u0119trzne zespo\u0142y, systemy programistyczne oraz interfejsy pracownik\u00f3w zyskuj\u0105 dost\u0119p do prywatnego, wysoce wydajnego odpowiednika &#8220;ChatGPT&#8221; bez ryzyka wycieku danych do zewn\u0119trznych komercyjnych interfejs\u00f3w API. Zachowana zostaje pe\u0142na suwerenno\u015b\u0107 informacji oraz zgodno\u015b\u0107 z przepisami RODO, a obowi\u0105zkowe nag\u0142\u00f3wki uwierzytelniaj\u0105ce uniemo\u017cliwiaj\u0105 nieuprawniony dost\u0119p do firmowych zasob\u00f3w obliczeniowych.<\/p>\r\n\n\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/ollama\/ollama\/blob\/main\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">Ollama documentation<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik krok po kroku po wdro\u017ceniu prywatnego serwera LLM z akceleracj\u0105 GPU (Ollama) zabezpieczonego przez serwer proxy Nginx z autoryzacj\u0105.<\/p>\n","protected":false},"author":1,"featured_media":14051,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92640],"tags":[92343,92220,92334,92346,92226,92421,92238,92077],"class_list":["post-491","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-cloud-ai-pl","tag-artificial-intelligence-pl","tag-homelab-pl","tag-linux-pl","tag-llm-pl","tag-self-hosting-pl","tag-server-administration-pl","tag-tutorial-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog<\/title>\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\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Techniczny przewodnik krok po kroku po wdro\u017ceniu prywatnego serwera LLM z akceleracj\u0105 GPU (Ollama) zabezpieczonego przez serwer proxy Nginx z autoryzacj\u0105.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-23T15:50:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-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=\"2 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\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105\",\"datePublished\":\"2026-09-23T15:50:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/\"},\"wordCount\":592,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-491-self-hosted-large-language-model-llm-g.png\",\"keywords\":[\"Artificial Intelligence\",\"Homelab\",\"Linux\",\"LLM\",\"Self-Hosting\",\"Server Administration\",\"Tutorial\",\"Web Security\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/\",\"name\":\"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-491-self-hosted-large-language-model-llm-g.png\",\"datePublished\":\"2026-09-23T15:50:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-491-self-hosted-large-language-model-llm-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-491-self-hosted-large-language-model-llm-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105\"}]},{\"@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":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog","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\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/","og_locale":"en_US","og_type":"article","og_title":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog","og_description":"Techniczny przewodnik krok po kroku po wdro\u017ceniu prywatnego serwera LLM z akceleracj\u0105 GPU (Ollama) zabezpieczonego przez serwer proxy Nginx z autoryzacj\u0105.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-23T15:50:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105","datePublished":"2026-09-23T15:50:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/"},"wordCount":592,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-g.png","keywords":["Artificial Intelligence","Homelab","Linux","LLM","Self-Hosting","Server Administration","Tutorial","Web Security"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/","name":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105 - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-g.png","datePublished":"2026-09-23T15:50:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-491-self-hosted-large-language-model-llm-g.png","width":1200,"height":630,"caption":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/self-hosted-large-language-model-llm-z-ollama-za-serwerem-proxy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Self-Hosted Large Language Model (LLM) z Ollama za serwerem proxy z autoryzacj\u0105"}]},{"@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\/491","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=491"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/491\/revisions"}],"predecessor-version":[{"id":17957,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/491\/revisions\/17957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14051"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}