{"id":20347,"date":"2024-04-03T17:58:59","date_gmt":"2024-04-03T15:58:59","guid":{"rendered":"https:\/\/chochol.io\/smart-home\/nginx-proxy-cloudflare-how-to-restore-a-real-ip-address\/"},"modified":"2025-08-23T19:56:23","modified_gmt":"2025-08-23T17:56:23","slug":"nginx-proxy-cloudflare-how-to-restore-a-real-ip-address","status":"publish","type":"post","link":"https:\/\/chochol.io\/en\/computer-networking\/nginx-proxy-cloudflare-how-to-restore-a-real-ip-address\/","title":{"rendered":"Nginx Proxy and Cloudflare: How to restore a real IP address"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"20347\" class=\"elementor elementor-20347 elementor-20314\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e88583c e-flex e-con-boxed e-con e-parent\" data-id=\"e88583c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3127f1a elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"3127f1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<div class=\"elementor-toc__header-title\">\n\t\t\t\tSpis tre\u015bci\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__3127f1a\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__3127f1a\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__3127f1a\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\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-bf2b759 elementor-widget elementor-widget-text-editor\" data-id=\"bf2b759\" data-element_type=\"widget\" data-e-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<h2>Hello!<\/h2><div class=\"grid grid-cols-1 gap-3 font-claude-message pr-9 relative overflow-x-auto leading-[1.65rem]\"><div class=\"contents [&amp;_pre&lt;encoded_tag_closed \/&gt;div]:-mr-9 [&amp;_pre&lt;encoded_tag_closed \/&gt;div]:bg-bg-300\" style=\"box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: hsl(var(--accent-secondary-100)\/1); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; outline-color: hsl(var(--accent-main-100)); display: contents; border: 0px solid hsl(var(--border-100));\"><p class=\"whitespace-pre-wrap break-words\">Today we will address a very simple issue that arises when setting up a website and connecting it to a proxy from Cloudflare.<\/p><h2>Case study<\/h2><p class=\"whitespace-pre-wrap break-words\">When your site is handled by Cloudflare, the IP addresses recorded in the server logs come from Cloudflare, not from actual users visiting the site. That&#8217;s because the traffic goes through Cloudflare&#8217;s network first. Cloudflare acts as a reverse proxy, speeding up page loads and caching static resources.<\/p><p class=\"whitespace-pre-wrap break-words\">This situation can create problems for some web applications. Many of them require access to users&#8217; real IP addresses, for example, to identify them or analyze their traffic. Fortunately, there is a way to restore the display of real IP addresses in the server logs using Nginx Proxy Manager and Cloudflare. In this article, we will explain how to do this and configure the Nginx server to correctly log the real IP addresses of users.<\/p><p class=\"whitespace-pre-wrap break-words\" style=\"text-align: center;\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-20333\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-6.png\" alt=\"Nginx Proxy Manager &amp; Cloudflare, without proxy\" width=\"641\" height=\"224\" data-wp-editing=\"1\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-6.png 641w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-6-300x105.png 300w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/> Server without proxy &#8211; the logs show the actual public IP address of the client.<\/p><p class=\"whitespace-pre-wrap break-words\" style=\"text-align: center;\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-20329\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-4.png\" alt=\"Nginx Proxy Manager &amp; Cloudflare, with proxy\" width=\"641\" height=\"224\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-4.png 641w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-4-300x105.png 300w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/>Use of Cloudflare proxy &#8211; the logs show the Cloudflare proxy address as the incoming IP.<\/p><p class=\"whitespace-pre-wrap break-words\" style=\"text-align: center;\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-20331\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-5.png\" alt=\"Nginx Proxy Manager &amp; Cloudflare, proxy with configuration\" width=\"641\" height=\"224\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-5.png 641w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Untitled-Diagram.drawio-5-300x105.png 300w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/>Use of Cloudflare proxy and new configuration in NPM &#8211; the logs show the actual public IP address of the client.<\/p><\/div><\/div><h2>Introduction<\/h2><h3>What is a proxy from Cloudflare?<\/h3><p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-20335 alignleft\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911.png\" alt=\"Cloudflare, logo\" width=\"200\" height=\"200\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911.png 256w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911-150x150.png 150w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911-60x60.png 60w\" sizes=\"(max-width: 200px) 100vw, 200px\" \/><\/p><p class=\"whitespace-pre-wrap break-words\">Reverse proxy from Cloudflare is a service that bridges the communication between clients (browsers) and the server on which your website is running. When traffic is routed through the proxy, it is Cloudflare that receives requests from clients. It then passes them to your origin server and sends the response back to the clients.<\/p><p class=\"whitespace-pre-wrap break-words\">Cloudflare&#8217;s operation as a reverse proxy has several key advantages:<\/p><ul><li class=\"whitespace-pre-wrap break-words\">Speeds up the loading of web pages. Cloudflare caches static resources such as images, JavaScript and CSS files. It then distributes them from its global network of edge servers.<\/li><li class=\"whitespace-pre-wrap break-words\">It provides an additional layer of security, protecting against many types of attacks, including DDoS.<\/li><li class=\"whitespace-pre-wrap break-words\">It optimizes network traffic by routing it along the shortest routes.<\/li><\/ul><p class=\"whitespace-pre-wrap break-words\">However, this architecture causes you to see Cloudflare server IP addresses in the origin server logs instead of the real IP addresses of customers visiting your site. This is the problem we will solve by configuring the Nginx server to display users&#8217; real IP addresses.<\/p><h3>What is Nginx Proxy Manager?<\/h3><p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/nginx.png\" alt=\"Icon: Nginx Proxy Manager\" width=\"200\" height=\"217\" \/><\/p><p class=\"whitespace-pre-wrap break-words\">Nginx Proxy Manager (NPM) is a popular open-source tool that greatly simplifies the management and configuration of the Nginx proxy server. Next to Apache, it is one of the most widely used HTTP servers in the world. However, its text file-based configuration can be complicated, especially for less experienced users.<\/p><p class=\"whitespace-pre-wrap break-words\">NPM provides a user-friendly point-and-click GUI that abstracts the main Nginx concepts, such as proxy servers, upstream hosts, SSL certificates and redirection rules. As a result, even people without in-depth knowledge can easily configure advanced HTTP traffic routing rules and manage multiple sites and applications running on a single server.<\/p><p class=\"whitespace-pre-wrap break-words\">NPM is particularly useful in scenarios where the server is used as a central reverse proxy in front of services such as Nginx, Apache, or other web applications. It allows for easy configuration and maintenance of complex HTTP\/HTTPS traffic routing topologies in one place.<\/p><h2>Preparation<\/h2><p>In order to prepare the tutorial, we will adopt an established domain name and certain configuration names, shown below. For customized configuration, apply settings according to individual requirements.<\/p><ul><li><strong>Nginx Proxy Manager<\/strong> installed on the server,<\/li><li><strong>Configured DNS in Cloudflare<\/strong> for the domain,<\/li><li>Prepared list of proxy IP addresses from Cloudflare &#8211; <strong>IPv4 addresses<\/strong>: <a href=\"https:\/\/www.cloudflare.com\/ips-v4\" target=\"_blank\" rel=\"noopener\">https:\/\/www.cloudflare.com\/ips-v4<\/a><\/li><li>Prepared list of proxy IP addresses from Cloudflare &#8211; <strong>IPv6 addresses<\/strong>: <a href=\"https:\/\/www.cloudflare.com\/ips-v6\" target=\"_blank\" rel=\"noopener\">https:\/\/www.cloudflare.com\/ips-v6<\/a><\/li><\/ul><h2>Step 1 &#8211; Logging into Proxy Manager<\/h2><ul><li><strong>Log in to the manager:<\/strong><ul><li>Open a web browser and go to the address where NPM is running (e.g. <strong>http:\/\/IP-ADDRESS:81<\/strong>).<\/li><li>Go to the list of Proxy Hosts and select the desired host you want to edit.<\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20337\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.35.28.png\" alt=\"Nginx Proxy Manager and Cloudflare, host proxy menu\" width=\"465\" height=\"220\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.35.28.png 465w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.35.28-300x142.png 300w\" sizes=\"(max-width: 465px) 100vw, 465px\" \/><\/p><ul><li>Go to the Advanced tab and paste the following code. It is created based on the list of IP addresses described above from Cloudflare.<\/li><\/ul><\/li><\/ul>\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-dc3b866 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"dc3b866\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-dc3b866\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers\"data-previewers=\"\"><code># IPv6 Cloudflare - Je\u017celi nie obs\u0142ugujesz po\u0142\u0105cze\u0144 w tej adresacji, nie musisz wkleja\u0107&nbsp;tego do konfiguracji hosta\nset_real_ip_from 2400:cb00::\/32;\nset_real_ip_from 2606:4700::\/32;\nset_real_ip_from 2803:f800::\/32;\nset_real_ip_from 2405:b500::\/32;\nset_real_ip_from 2405:8100::\/32;\nset_real_ip_from 2a06:98c0::\/29;\nset_real_ip_from 2c0f:f248::\/32;\n\n# IPv4 Cloudflare\nset_real_ip_from 173.245.48.0\/20;\nset_real_ip_from 103.21.244.0\/22;\nset_real_ip_from 103.22.200.0\/22;\nset_real_ip_from 103.31.4.0\/22;\nset_real_ip_from 141.101.64.0\/18;\nset_real_ip_from 108.162.192.0\/18;\nset_real_ip_from 190.93.240.0\/20;\nset_real_ip_from 188.114.96.0\/20;\nset_real_ip_from 197.234.240.0\/22;\nset_real_ip_from 198.41.128.0\/17;\nset_real_ip_from 162.158.0.0\/15;\nset_real_ip_from 104.16.0.0\/13;\nset_real_ip_from 104.24.0.0\/14;\nset_real_ip_from 172.64.0.0\/13;\nset_real_ip_from 131.0.72.0\/22;\n\nreal_ip_header X-Forwarded-For;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_dc3b866 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_dc3b866();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_dc3b866 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7726f76 elementor-widget elementor-widget-text-editor\" data-id=\"7726f76\" data-element_type=\"widget\" data-e-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<ul>\n<li>The whole setup looks as follows, as shown in the following screen shot.<\/li>\n<\/ul>\n\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-f404e36 elementor-widget elementor-widget-image\" data-id=\"f404e36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.36.45.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Nginx Proxy Manager &amp; Cloudflare, proxy host advanced\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjAzNDAsInVybCI6Imh0dHBzOlwvXC9jaG9jaG9sLmlvXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvU2NyZWVuc2hvdC0yMDI0LTA0LTAzLWF0LTE3LjM2LjQ1LnBuZyJ9\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"499\" height=\"596\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.36.45.png\" class=\"attachment-large size-large wp-image-20340\" alt=\"Edit Proxy Host dialog showing custom Nginx variables and Cloudflare IPv4 whitelist config with Save button\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.36.45.png 499w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-03-at-17.36.45-251x300.png 251w\" sizes=\"(max-width: 499px) 100vw, 499px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\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-00eee0a elementor-widget elementor-widget-text-editor\" data-id=\"00eee0a\" data-element_type=\"widget\" data-e-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<ul><li>Save the configuration by clicking on the Save button.<\/li><li>Done!<\/li><\/ul><p>In conclusion &#8211; If you have additional questions about the configuration, <strong>go ahead and leave a comment under this article<\/strong> or <strong>contact me directly<\/strong>. I will be happy to answer any concerns and help solve any problems. Your questions can help improve the guides for other users.<\/p><h2>Additional materials and information<\/h2><p>For further exploration and more information, I recommend checking out the links below. They are valuable sources that were used in the development of this guide.<\/p><ul><li>Cloudflare, Restoring original visitor IPs: <a href=\"https:\/\/developers.cloudflare.com\/support\/troubleshooting\/restoring-visitor-ips\/restoring-original-visitor-ips\/\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.cloudflare.com\/support\/troubleshooting\/restoring-visitor-ips\/restoring-original-visitor-ips\/<\/a><\/li><li>Nginx, Module ngx_http_realip_module: <a href=\"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_realip_module.html\" target=\"_blank\" rel=\"noopener\">https:\/\/nginx.org\/en\/docs\/http\/ngx_http_realip_module.html<\/a><\/li><\/ul><h2>Read also<\/h2><ul><li><a href=\"https:\/\/chochol.io\/en\/hardware\/tvheadend-satip-decoder-installation-and-configuration\/\">TVHeadend: Installing and configuring SAT&gt;IP decoder<\/a> \/ Telestar Digibit Twin: Discover in today&#8217;s blog post the step-by-step configuration of SAT&gt;IP with TVHeadend in Docker Compose.<\/li><li><a href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-configure-a-leox-gpon-ont-module-on-a-mikrotik-router\/\">How to configure Leox GPON ONT insert on Mikrotik router<\/a> \/ Step-by-step guide on how to configure Leox LXT-010S-H GPON ONT insert on Mikrotik RB5009 router, instead of ONT module from Orange.<\/li><li><a href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-network-application-remote-adoption-of-an-access-point\/\">UniFi Network Application: Connecting an Access Point from another network<\/a> \/ Discover how to connect a device from Ubiquiti UniFi from another network to Network Application &#8211; using Mikrotik&#8217;s IPSec tunnel as an example.<\/li><li><a href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-controller-in-docker-migrating-to-unifi-network-application\/\">UniFi Controller in Docker: Migrating to UniFi Network Application<\/a> \/ UniFi Controller: Discover step-by-step how to successfully migrate to Network Application using Docker Compose.<\/li><li><a href=\"https:\/\/chochol.io\/en\/smart-home\/home-assistant-installing-mirror-lighting-on-esphome\/\">Home Assistant: Install mirror lighting on ESPHome<\/a> \/ Set up simple mirror lighting with ESPHome in Home Assistant. Discover simple integration and control light with ease.<\/li><li><a href=\"https:\/\/chochol.io\/en\/hardware\/ads-b-receiver-installation-and-configuration-on-raspberry-pi\/\">ADS-B: Receiver Installation and Configuration on Raspberry Pi<\/a> \/ Discover the secrets of installing and configuring your own ADS-B antenna on Raspberry Pi. Develop skills and track aircraft in real time.<\/li><li><a href=\"https:\/\/chochol.io\/en\/software\/traccar-docker-installation-guide-on-synology\/\">Traccar: A guide to installing on Synology with Docker<\/a> \/ Step-by-step guide: Installing Traccar on Synology using Docker. Effective vehicle tracking on your own server.<\/li><\/ul>\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Learn how to restore the true IP address showing of users in server logs using Nginx Proxy Manager and Cloudflare as reverse proxy.<\/p>\n","protected":false},"author":1,"featured_media":20321,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[110],"class_list":["post-20347","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer-networking","tag-nginx-proxy-manager"],"_links":{"self":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/20347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/comments?post=20347"}],"version-history":[{"count":0,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/20347\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media\/20321"}],"wp:attachment":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media?parent=20347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/categories?post=20347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/tags?post=20347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}