{"id":1921,"date":"2025-09-29T18:14:54","date_gmt":"2025-09-29T16:14:54","guid":{"rendered":"https:\/\/eonea.pl\/?p=1921"},"modified":"2025-12-30T15:51:35","modified_gmt":"2025-12-30T14:51:35","slug":"nginx-proxy-manager-docker-compose","status":"publish","type":"post","link":"https:\/\/eonea.pl\/en\/nginx-proxy-manager-docker-compose\/","title":{"rendered":"Nginx proxy manager \u2013 Docker Compose"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1921\" class=\"elementor elementor-1921\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d508869 e-flex e-con-boxed e-con e-parent\" data-id=\"d508869\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44a4f2c elementor-widget elementor-widget-video\" data-id=\"44a4f2c\" data-element_type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/FOkJWH8B7Qk&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-84ddd7b e-flex e-con-boxed e-con e-parent\" data-id=\"84ddd7b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-04a06db elementor-widget elementor-widget-heading\" data-id=\"04a06db\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">NGINX Proxy Manager - a simple way to SSL certificates and service management in Docker<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf4d20a elementor-widget elementor-widget-text-editor\" data-id=\"cf4d20a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In the world of server administration, we are increasingly relying on solutions that allow us to manage our infrastructure in a simple way, while ensuring the security and convenience of our users. One tool that is perfect for this role is <strong data-start=\"475\" data-end=\"498\">NGINX Proxy Manager<\/strong>. It's a lightweight and intuitive open source solution that lets you manage reverse proxies, SSL certificates and hosts in a simple web interface.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e6fa6d6 elementor-widget elementor-widget-heading\" data-id=\"e6fa6d6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Why use NGINX Proxy Manager?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3687c4b elementor-widget elementor-widget-text-editor\" data-id=\"3687c4b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"714\" data-end=\"1202\">Many administrators face the problem of how to make several different services available on a single public IP address. NGINX Proxy Manager solves this problem in a transparent way - using reverse proxy. In practice, this means that a user connects to a single IP address, and Proxy Manager knows which service \"in the backend\" should direct traffic to. This makes it possible to expose multiple applications or websites without the need for additional public addresses.<\/p><p data-start=\"1204\" data-end=\"1720\">The second key function is <strong data-start=\"1232\" data-end=\"1265\">SSL certificate management<\/strong>. NGINX Proxy Manager integrates with. <strong data-start=\"1303\" data-end=\"1320\">Let\u2019s Encrypt<\/strong>, enabling automatic generation and renewal of certificates. It supports both <strong data-start=\"1405\" data-end=\"1423\">HTTP Challenge<\/strong> - ideal for publicly available services, as well as <strong data-start=\"1473\" data-end=\"1490\">DNS Challenge<\/strong> - which works well for internally operating sites that should not be exposed to the Internet. It is the DNS Challenge that allows you to generate a certificate even if the service only operates on the local network.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cadc087 elementor-widget elementor-widget-heading\" data-id=\"cadc087\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Installation with Docker Compose<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb376c3 elementor-widget elementor-widget-text-editor\" data-id=\"fb376c3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1766\" data-end=\"2171\">In the material I show a complete setup using the <strong data-start=\"1820\" data-end=\"1838\">Docker Compose<\/strong>, which makes running NGINX Proxy Manager down to a few lines in a file <code data-start=\"1928\" data-end=\"1948\">docker-compose.yml<\/code>. All you need to do is prepare the containers, indicate the port mapping (80, 443 and administrative port 81), and take care of mounting directories <code data-start=\"2086\" data-end=\"2092\">data<\/code> i <code data-start=\"2095\" data-end=\"2108\">letsencrypt<\/code>, to keep the configuration and certificates even after a reboot.<\/p><p data-start=\"2173\" data-end=\"2460\">With this solution, the whole configuration is easy to transfer to another server - just backup the mentioned directories and file <code data-start=\"2315\" data-end=\"2335\">docker-compose.yml<\/code>. This approach not only facilitates maintenance, but also significantly speeds up the process of restoring the environment in the event of a disaster.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7c08aa elementor-widget elementor-widget-heading\" data-id=\"c7c08aa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Practical applications<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-677d207 elementor-widget elementor-widget-text-editor\" data-id=\"677d207\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"2494\" data-end=\"2870\">NGINX Proxy Manager is not just about managing sites <a class=\"decorated-link\" href=\"http:\/\/WWW\" target=\"_new\" rel=\"noopener\" data-start=\"2548\" data-end=\"2551\">WWW<\/a>. With its help, you can expose different web services running on the same host to the network, such as. <strong data-start=\"2649\" data-end=\"2662\">Nextcloud<\/strong>, <strong data-start=\"2664\" data-end=\"2689\">admin panel<\/strong>, test applications or internal dashboards. With SSL and simple host management, all these services can run under secure addresses with Let's Encrypt certificates.<\/p><p data-start=\"2872\" data-end=\"3303\">An important element is the correct configuration of <strong data-start=\"2916\" data-end=\"2923\">DNS<\/strong>. Whether you're using Cloudflare, OVH, DigitalOcean or another provider, the key to success is correctly pointing domain records to the server running Proxy Manager. This is where most errors occur - especially with the HTTP Challenge method - so in the material I discuss in detail how to set up DNS so that the whole thing works without a problem.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82bca4b elementor-widget elementor-widget-code-highlight\" data-id=\"82bca4b\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>plik docker-compose.yaml:\r\nservices:\r\n  app:\r\n    image: 'jc21\/nginx-proxy-manager:2'\r\n    restart: unless-stopped\r\n    ports:\r\n      - '80:80' # Public HTTP Port\r\n      - '443:443' # Public HTTPS Port\r\n      - '81:81' # Admin Web Port\r\n\r\n    volumes:\r\n      - .\/data:\/data\r\n      - .\/letsencrypt:\/etc\/letsencrypt\r\n\r\n    healthcheck:\r\n      test: [\"CMD\", \"\/usr\/bin\/check-health\"]\r\n      interval: 10s\r\n      timeout: 3s\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ad21cc elementor-widget elementor-widget-text-editor\" data-id=\"4ad21cc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Commands:<\/p><p>Start docker compose<\/p><p><em>docker compose up -d<\/em><\/p><p><em>\u00a0<\/em><\/p><p>Stopping docker compose <br \/><em>docker compose stop<\/em><\/p><p><em>\u00a0<\/em><\/p><p>Download the latest version of images<br \/><em>docker compose pull<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-db1bd09 elementor-widget elementor-widget-text-editor\" data-id=\"db1bd09\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Kody:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b37bfd elementor-widget elementor-widget-heading\" data-id=\"0b37bfd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Summary<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ce7fa5 elementor-widget elementor-widget-text-editor\" data-id=\"6ce7fa5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"3326\" data-end=\"3736\">NGINX Proxy Manager is a solution that should be in every administrator's arsenal. It combines simplicity of use with great configuration capabilities, and thanks to its integration with Let's Encrypt, it allows you to fully automate the process of managing SSL certificates. On top of that, it comes with easy installation using Docker, the ability to issue multiple services behind a single IP address and an intuitive administration panel.<\/p><p data-start=\"3738\" data-end=\"3986\">If you want to see the step-by-step installation and configuration, watch the prepared video - you will find complete instructions from creating a simple test environment to generating a wildcard certificate for the entire domain.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f632bca e-flex e-con-boxed e-con e-parent\" data-id=\"f632bca\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Are you looking for a simple way to host multiple services under a single IP address and automatically manage SSL certificates? NGINX Proxy Manager combined with Docker Compose is a solution that allows you to set up a reverse proxy in minutes and integrate it with Let\u2019s Encrypt.  In this article, I show you step by step how to run this tool, how DNS Challenge works, and how to back up your configuration. See how easy it is to organize and secure your infrastructure!<\/p>","protected":false},"author":3,"featured_media":1922,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[7,8,10],"tags":[256,261,373,371,370,372],"class_list":["post-1921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-dla-kazdego","category-truenas","category-wirtualizacja","tag-docker","tag-docker-compose","tag-docker-compose-nginx-proxy-manager","tag-lets-encrypt","tag-nginx-proxy-manager","tag-proxy"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/posts\/1921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/comments?post=1921"}],"version-history":[{"count":10,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/posts\/1921\/revisions"}],"predecessor-version":[{"id":2147,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/posts\/1921\/revisions\/2147"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/media\/1922"}],"wp:attachment":[{"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/media?parent=1921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/categories?post=1921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eonea.pl\/en\/wp-json\/wp\/v2\/tags?post=1921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}