{"id":21174,"date":"2024-05-29T15:35:45","date_gmt":"2024-05-29T13:35:45","guid":{"rendered":"https:\/\/chochol.io\/smart-home\/synology-cloudflare-how-to-configure-a-wildcard-ssl-certificate\/"},"modified":"2025-12-29T15:09:30","modified_gmt":"2025-12-29T14:09:30","slug":"synology-cloudflare-how-to-configure-a-wildcard-ssl-certificate","status":"publish","type":"post","link":"https:\/\/chochol.io\/en\/computer-networking\/synology-cloudflare-how-to-configure-a-wildcard-ssl-certificate\/","title":{"rendered":"Synology &#038; Cloudflare: How to configure a Wildcard SSL certificate"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"21174\" class=\"elementor elementor-21174 elementor-21134\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2744363 e-flex e-con-boxed e-con e-parent\" data-id=\"2744363\" 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-a627378 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"a627378\" 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\">\r\n\t\t\t\t\t\t<div class=\"elementor-toc__header-title\">\r\n\t\t\t\tTable of Contents\t\t\t<\/div>\r\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__a627378\" 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>\r\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__a627378\" 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>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"elementor-toc__a627378\" class=\"elementor-toc__body\">\r\n\t\t\t<div class=\"elementor-toc__spinner-container\">\r\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>\r\n\t\t<\/div>\r\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-60d03bc elementor-widget elementor-widget-text-editor\" data-id=\"60d03bc\" 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><p>Today, online security and privacy are key aspects of running websites and managing data. SSL certificates play an important role in ensuring that communications between users and servers are encrypted. What\u2019s more, as one of the most popular NAS solutions, Synology offers flexibility and advanced configurability, making it the ideal tool for implementing such certificates.<\/p><p>In this article, I will show how to configure a Wildcard SSL certificate on a Synology server using Cloudflare and the ACME protocol. With this guide, you will learn how to effectively secure your domain and all its subdomains using the automation offered by the acme.sh tool.<\/p><h2>Introduction<\/h2><h3>What is Synology?<\/h3><p><img decoding=\"async\" class=\"alignleft\" src=\"https:\/\/cdn6.aptoide.com\/imgs\/e\/3\/2\/e329de5bc241b2d63080f5b056b2681f_icon.png\" alt=\"\" width=\"220\" height=\"220\" aria-hidden=\"false\"><strong>Synology<\/strong> is a company specializing in the production of network hardware and software for data storage and management. Their main products are NAS (Network Attached Storage) servers, which offer a wide range of functions such as file storage, media sharing, backup, and hosting network services.<\/p><p>Thanks to their flexibility, Synology devices are used both in home networks, where they serve as a central data storage and media server, and in businesses, where they are used to store and share files and run a variety of business applications, such as email servers, file servers, and project management platforms.<\/p><h3>What is Cloudflare?<\/h3><p><img decoding=\"async\" class=\" wp-image-20335 alignleft\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911.png\" sizes=\"(max-width: 200px) 100vw, 200px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/cloudflare-3628686-3029911.png 256w, https:\/\/chochol.io\/wp-content\/smush-webp\/2024\/04\/cloudflare-3628686-3029911-150x150.png.webp 150w, https:\/\/chochol.io\/wp-content\/smush-webp\/2024\/04\/cloudflare-3628686-3029911-60x60.png.webp 60w\" alt=\"Cloudflare, logo\" width=\"220\" height=\"220\" \/><\/p><div class=\"group\/conversation-turn relative flex w-full min-w-0 flex-col agent-turn\"><div class=\"flex-col gap-1 md:gap-3\"><div class=\"flex flex-grow flex-col max-w-full\"><div class=\"min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"4c617b55-c92e-4dc8-8a7a-a1c8ab04865e\"><div class=\"flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]\"><div class=\"markdown prose w-full break-words dark:prose-invert dark\"><p><strong>Cloudflare<\/strong> is a global technology company offering advanced web acceleration and security services. Above all, it provides CDN, protection against DDoS attacks, advanced DNS management, SSL\/TLS, web application firewall (WAF) and performance optimisation. With a distributed network of servers, Cloudflare reduces page load times, protects against threats and provides fast and secure access to content. As a result, it improves the user experience across the globe while enhancing the security and performance of websites.<\/p><p>Cloudflare services are easy to integrate and offer advanced analytics. They automate the processes of securing and speeding up sites, which is particularly beneficial for companies of all sizes. Cloudflare also makes it easy to deploy SSL\/TLS certificates, ensuring secure communications. This makes it a popular choice for site owners and network administrators.<\/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>Full domain name (FQDN) of Synology DSM: <code>https:\/\/dsm.xyz.com<\/code>,<\/li><\/ul><h3>What is Wildcard SSL?<\/h3><p><img decoding=\"async\" class=\"size-full wp-image-21162 alignright\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Projekt-bez-nazwy.png\" alt=\"Wildcard SSL, Example icon\" width=\"220\" height=\"220\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Projekt-bez-nazwy.png 220w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Projekt-bez-nazwy-150x150.png 150w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Projekt-bez-nazwy-60x60.png 60w\" sizes=\"(max-width: 220px) 100vw, 220px\" \/>Wildcard SSL is a type of SSL\/TLS certificate that allows you to secure not only one domain, but also all its sub-domains with a single certificate. This is an extremely convenient solution for companies and organisations that have multiple subdomains and want to ensure their protection with minimal certificate management.<\/p><h4>Example of use<\/h4><p>Suppose you have a <code>lovecats.com<\/code>website and you also want to secure its subdomains, such as <code>blog.lovecats.com<\/code> etc. Instead of issuing separate certificates for each of these subdomains, you can install a single Wildcard SSL certificate for <code>*.lovecats.com<\/code>, which will automatically cover all existing and future subdomains.<\/p><h4>How does Wildcard SSL work?<\/h4><p>Wildcard SSL uses a special \u2018*\u2019 (asterisk) character in the domain name when generating the certificate. This means that the certificate is valid for each subdomain at a given level. For example, the certificate for <code>*.lovecats.com<\/code> will protect <code>www.lovecats.com<\/code> etc.<\/p><p>Wildcard SSL is particularly useful for dynamic and growing websites, where new subdomains can be added regularly. With this solution, each new subdomain is automatically covered without the need for new certificates.<\/p><h3>What is ACME?<\/h3><div class=\"flex-shrink-0 flex flex-col relative items-end\"><div class=\"pt-0.5 juice:pt-0\"><div class=\"gizmo-bot-avatar flex h-6 w-6 items-center justify-center overflow-hidden rounded-full juice:h-8 juice:w-8\"><div class=\"relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8\">ACME (Automatic Certificate Management Environment) is a protocol developed by the Internet Security Research Group (ISRG) and commonly used by Let\u2019s Encrypt to automate SSL\/TLS certificate management. It allows SSL certificates to be automatically obtained, installed and renewed, eliminating the need for manual administrator intervention. This makes the process much simpler, faster and much less open to human error.<\/div><\/div><\/div><\/div><div class=\"group\/conversation-turn relative flex w-full min-w-0 flex-col agent-turn\"><div class=\"flex-col gap-1 md:gap-3\"><div class=\"flex flex-grow flex-col max-w-full\"><div class=\"min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"2b14fb36-ab2f-4082-aea4-b834071793d9\"><div class=\"flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]\"><div class=\"markdown prose w-full break-words dark:prose-invert dark\"><p>ACME is extremely useful for server administrators who want to ensure that their websites are always protected by up-to-date SSL\/TLS certificates. In addition, automating this process saves time and resources while enhancing the security and reliability of sites.<\/p><p>In addition, the use of ACME contributes to faster deployment of large-scale certificates, which is particularly important for high-traffic sites. What\u2019s more, with ACME, even those with limited technical knowledge can easily manage the security of their website.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><h3>Restrictions<\/h3><p>Since the introduction of Let\u2019s Encrypt support on Synology devices, many users have taken advantage of the opportunity to obtain free SSL certificates. However, there are some limitations that are worth taking into account.<\/p><ul><li>Many people avoid exposing ports 80\/443 to the Internet, which requires opening these ports on the router.<\/li><li>An alternative is to use the DNS-01 protocol.<\/li><li>Unfortunately, the current implementation of Let\u2019s Encrypt on Synology devices only supports the HTTP-01 method, which requires port 80 to be exposed to the Internet.<\/li><li>Additionally, if the domain of your NAS has an IPv6 AAAA record set, the implementation of Let\u2019s Encrypt on Synology devices will fail.<\/li><\/ul><p>Despite these limitations, there is a way around them. We can access the NAS via SSH and configure it to automatically renew certificates, bypassing the GUI panel.<\/p><p>In this guide, we will use the DNS-01 protocol using the Cloudflare API, where we host our domain. This allows us to manage certificates without having to issue ports on the router. Moreover, this way is safer and more flexible, especially for those who do not want to open additional ports on their network.<\/p><h2>Step 1 \u2013 Configuration in Synology<\/h2><h3>SSH<\/h3><p>If you do not already have SSH enabled on your Synology, follow the steps below:<\/p><ul><li>Go to the <strong>Control Panel<\/strong>, then under <strong>Connectivity<\/strong>, select <strong>Terminal and SNMP<\/strong>;<\/li><\/ul><p><strong><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-770 aligncenter\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.34.44.png\" sizes=\"(max-width: 532px) 100vw, 532px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.34.44.png 532w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.34.44-300x82.png 300w\" alt=\"\" width=\"532\" height=\"145\"><\/strong><\/p><ul><li>Click <strong>Enable SSH <\/strong> service and set any high port, e.g. <code>45000<\/code>.<\/li><\/ul><p><strong><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-769 aligncenter\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.35.38.png\" sizes=\"(max-width: 900px) 100vw, 900px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.35.38.png 900w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.35.38-300x106.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-24-at-15.35.38-768x272.png 768w\" alt=\"Synology SSH\" width=\"900\" height=\"319\" \/><\/strong><\/p><ul><li><strong>Save the settings<\/strong> and proceed to log in via SSH to our Synology.<\/li><\/ul><h3>Downloading files to a server<\/h3><p>For Microsoft Windows operating system I recommend <a href=\"https:\/\/www.putty.org\/\" target=\"_blank\" rel=\"noopener\">PuTTY<\/a>, while for Apple macOS operating systems I recommend <a href=\"https:\/\/termius.com\/\" target=\"_blank\" rel=\"noopener\">Termius<\/a>.<\/p><ul><li>I personally use macOS, thus I will use Termius.<\/li><li><strong>Log in as super user:<\/strong> start the terminal and type the command <code>sudo su<\/code> to switch to the super user account.<\/li><\/ul><\/div><\/div><\/div><\/div><\/div><\/div>\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-3a668a1 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"3a668a1\" 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-3a668a1\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo su<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_3a668a1 = 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_3a668a1();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_3a668a1 );\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-406e602 elementor-widget elementor-widget-text-editor\" data-id=\"406e602\" 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 \t<li><strong>Navigate to the home directory:<\/strong> Type <code>cd ~<\/code> to navigate to the current user\u2019s home directory.<\/li>\n<\/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-6659261 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"6659261\" 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-6659261\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd ~<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_6659261 = 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_6659261();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_6659261 );\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-cfb4666 elementor-widget elementor-widget-text-editor\" data-id=\"cfb4666\" 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 \t<li><strong>Download the acme.sh package:<\/strong> Use the <code>wget<\/code>command to download the acme.sh package. Type:<\/li>\n<\/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-2eb9691 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"2eb9691\" 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-2eb9691\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>wget https:\/\/github.com\/acmesh-official\/acme.sh\/archive\/master.tar.gz\n<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_2eb9691 = 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_2eb9691();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_2eb9691 );\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-32eea17 elementor-widget elementor-widget-text-editor\" data-id=\"32eea17\" 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><strong>Unzip the downloaded package: <\/strong> Use the <code>tar<\/code> command to unpack the downloaded package. Type:<\/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-c13bb11 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"c13bb11\" 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-c13bb11\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>tar xvf master.tar.gz<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_c13bb11 = 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_c13bb11();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_c13bb11 );\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-9713335 elementor-widget elementor-widget-text-editor\" data-id=\"9713335\" 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><strong>Go to the acme.sh-master directory:<\/strong> Go to the <code>acme.sh-master<\/code> directory that was created when the package was unpacked. Type:<\/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-90b8e36 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"90b8e36\" 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-90b8e36\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd acme.sh-master\/<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_90b8e36 = 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_90b8e36();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_90b8e36 );\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-4635810 elementor-widget elementor-widget-text-editor\" data-id=\"4635810\" 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><strong>Install acme.sh: <\/strong> Perform the <code>acme.sh<\/code> installation by specifying the installation path and entering your email address. Type:<\/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-a7c6a52 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"a7c6a52\" 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-a7c6a52\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>.\/acme.sh --install --nocron --home \/usr\/local\/share\/acme.sh --accountemail &quot;email-address@test.com&quot;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_a7c6a52 = 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_a7c6a52();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_a7c6a52 );\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-af5c447 elementor-widget elementor-widget-text-editor\" data-id=\"af5c447\" 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><strong>Load the user profile:<\/strong> To ensure that changes made during installation are taken into account, load the user profile. Type:<\/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-dc716ec elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"dc716ec\" 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-dc716ec\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>source ~\/.profile<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_dc716ec = 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_dc716ec();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_dc716ec );\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-7a96a65 elementor-widget elementor-widget-text-editor\" data-id=\"7a96a65\" 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>Do not close the terminal and disconnect the SSH connection to the Synology, we will come back to it in a moment.<\/li><\/ul><h2>Step 2 \u2013 Configure Cloudflare\u2019s DNS and obtain an API token<\/h2><p>Make sure your domain is registered and managed by Cloudflare. If you haven\u2019t already done so, add the domain to Cloudflare and configure its support. Next, configure DNS so that ACME can use the generated API token in Cloudflare to perform a DNS challenge when issuing a Let\u2019s Encrypt SSL certificate.<\/p><ul><li>Go to the menu for creating a user API Token in Cloudflare:<ul><li>Go to the <strong>home page<\/strong> and select your domain name,<\/li><li>In the domain management interface (Overview tab), on the right side, search and click <strong>Get your API Token<\/strong>,<\/li><\/ul><\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-898\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.40.39.png\" sizes=\"(max-width: 343px) 100vw, 343px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.40.39.png 343w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.40.39-292x300.png 292w\" alt=\"Cloudflare, API\" width=\"343\" height=\"352\" \/><\/p><ul><li style=\"list-style-type: none;\"><ul><li>In the list of your API Tokens, click <strong>Create Token<\/strong>,<\/li><li>In the API Token creation menu, click on <strong>Get Started<\/strong> next to Create Custom Token in the Custom Token section.<\/li><\/ul><\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-897\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.37.14.png\" sizes=\"(max-width: 601px) 100vw, 601px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.37.14.png 760w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.37.14-225x300.png 225w\" alt=\"Cloudflare, Create token\" width=\"601\" height=\"800\" \/><\/p><ul><li style=\"list-style-type: none;\"><ul><li>When you go to create Custom API Token, fill the form with the following values:<ul><li>Token name: e.g. <code>acme-xyzcom,<\/code><\/li><li>Permissions: Set as follows <code>Zone | DNS | Edit,<\/code><\/li><li>Zone Resources: Set as follows <code>Include | Specific zone | Your domain xyz.com,<\/code><\/li><li>Filtering client IP Address: <code>leave without filling in,<\/code><\/li><li>TTL: <code>leave without filling in.<\/code><\/li><\/ul><\/li><\/ul><\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-899\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.43.12-927x1024.png\" sizes=\"(max-width: 725px) 100vw, 725px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.43.12-927x1024.png 927w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.43.12-272x300.png 272w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.43.12-768x848.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.43.12.png 941w\" alt=\"Cloudflare, User API Tokens Create\" width=\"725\" height=\"800\" \/><\/p><ul><li style=\"list-style-type: none;\"><ul><li>During the final stage, a summary of the API Token creation will appear. If all the information is correct, click <strong>Create Token<\/strong>.<\/li><li>Once the API Token is created, you will receive detailed information about it, along with the option to test it in the terminal.<\/li><\/ul><\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-900\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.48.50-1024x483.png\" sizes=\"(max-width: 800px) 100vw, 800px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.48.50-1024x483.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.48.50-300x141.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.48.50-768x362.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-17.48.50.png 1058w\" alt=\"Cloudflare, Created API Token\" width=\"800\" height=\"377\" \/><\/p><ul><li>Save the copied API Token in a notepad, as you will need it when configuring the SSL certificate in ACME.<\/li><\/ul><h3>API export to ACME<\/h3><ul><li><strong>Set environment variables for Cloudflare:<\/strong> Export your sensitive data, such as your Cloudflare token and email address, as environment variables. Type:<ul><li>Make sure you replace <code>API_TOKEN<\/code> with your actual Cloudflare private token and <code>mail@gmail.com<\/code> with your email address assigned to your Cloudflare account.<\/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-0682c51 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"0682c51\" 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-0682c51\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>export CF_Token=&quot;API_TOKEN&quot;\nexport CF_Email=&quot;email@gmail.com&quot;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_0682c51 = 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_0682c51();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_0682c51 );\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-604868c elementor-widget elementor-widget-text-editor\" data-id=\"604868c\" 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<p>Setting these environment variables will enable acme.sh to authenticate using your Cloudflare account during the process of obtaining an SSL certificate.<\/p><h2>Step 3 \u2013 Certificate creation<\/h2><p>Now it is time to create a certificate for your domain. The following commands will create an SSL certificate for your domain with Let\u2019s Encrypt, using Cloudflare\u2019s DNS-01 verification method. Once this process is complete, you will be able to obtain a valid SSL certificate for your domain.<\/p><ul><li><strong>Moving to the acme.sh directory: <\/strong> we are still working in the same terminal where we performed the previous steps. Navigate to the directory where acme.sh is installed. Type:<\/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-4c826a4 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"4c826a4\" 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-4c826a4\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd \/usr\/local\/share\/acme.sh\n<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_4c826a4 = 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_4c826a4();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_4c826a4 );\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-11ee750 elementor-widget elementor-widget-text-editor\" data-id=\"11ee750\" 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><strong>Setting up your domain and DNS variables:<\/strong> Define the variables for your domain and the DNS service you are using (in this case Cloudflare). Type:<\/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-8ff112d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"8ff112d\" 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-8ff112d\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>#If you want Wildcard then:\nexport CERT_DOMAIN=&quot;*.where-is-my-money.pl&quot;\n#Or base domain:\nexport CERT_DOMAIN=&quot;where-is-my-money.pl&quot;\n#and then\nexport CERT_DNS=&quot;dns_cf&quot;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_8ff112d = 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_8ff112d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_8ff112d );\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-625435d elementor-widget elementor-widget-text-editor\" data-id=\"625435d\" 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 \t<li><strong>Generate a certificate: <\/strong> Now run the <code>acme.sh<\/code> command to generate a certificate for your domain. Type:<\/li>\n<\/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-aeb0d66 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"aeb0d66\" 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-aeb0d66\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>.\/acme.sh --issue --server letsencrypt --home . -d &quot;$CERT_DOMAIN&quot; --dns &quot;$CERT_DNS&quot;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_aeb0d66 = 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_aeb0d66();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_aeb0d66 );\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-fb033a9 elementor-widget elementor-widget-text-editor\" data-id=\"fb033a9\" 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>Step 4 \u2013 Implementation of the certificate<\/h2><p>To use an existing admin user, it is recommended to create a separate admin account dedicated exclusively to these operations. It is worth ensuring that the password for this account is strong and complex to increase the level of security. Avoid using the same admin account that you use for other operations, for security reasons.<\/p><p>Below you will find the steps to follow:<\/p><ul><li><strong>Create a separate administrator account:<\/strong> Go to the Synology control panel and create a new administrator account that is only for SSL certificate operations. Make sure the username is unique (e.g. <code>serviceaccount-ssl-acme<\/code>) and the password is complex and difficult to guess.<\/li><li><strong>Set environment variables: <\/strong> Once the administrator account has been created, export its username and password as environment variables. You can do this in the terminal by typing:<\/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-f45831d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"f45831d\" 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-f45831d\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>export SYNO_USERNAME=&#039;user_admin_account_for_acme&#039;\nexport SYNO_PASSWORD=&#039;babajaga-never-u2se-easy-pas3sword&#039;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_f45831d = 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_f45831d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_f45831d );\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-d872148 elementor-widget elementor-widget-text-editor\" data-id=\"d872148\" 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><strong>Set connection variables:<\/strong> Define the use of HTTPS and enter the current port number you use to log in to the Synology admin panel. To do this, type:\n<ul>\n<li>Also, if you are using the default port number, it is worth considering changing it for security reasons. Changing the default port number can help secure access to the administration panel.<\/li>\n<\/ul>\n<\/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-121ee29 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"121ee29\" 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-121ee29\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>export SYNO_LOCAL_HOSTNAME=1\nexport SYNO_SCHEME=&quot;https&quot;\nexport SYNO_PORT=&quot;5001&quot;\nexport SYNO_CREATE=1<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_121ee29 = 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_121ee29();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_121ee29 );\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-1ae7e64 elementor-widget elementor-widget-text-editor\" data-id=\"1ae7e64\" 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><strong>Start the certificate deployment:<\/strong> Type the following command.<\/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-318e86c elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"318e86c\" 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-318e86c\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>.\/acme.sh --deploy --insecure --home . -d &quot;$CERT_DOMAIN&quot; --deploy-hook synology_dsm\n#If you want a Wildcard, use:\n.\/acme.sh --deploy --insecure --home . -d &quot;$CERT_DOMAIN&quot; -d &quot;*.$CERT_DOMAIN&quot; --deploy-hook synology_dsm<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_318e86c = 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_318e86c();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_318e86c );\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-acd9609 elementor-widget elementor-widget-text-editor\" data-id=\"acd9609\" 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><strong>Done!<\/strong> Wait a moment for the configuration to be saved. <strong>\ud83d\ude80<\/strong><\/li><\/ul><h2>Step 5 \u2013 Setting up automatic certificate renewal<\/h2><p>To ensure the continued validity of the SSL certificate, it is recommended to configure automatic renewal.<\/p><p>On the Synology system, you can use the built-in tools to run the acme.sh script at regular intervals. To do this, you can create a task scheduler using the DSM control panel to execute the automatic certificate renewal script.<\/p><ul><li>Go to the <strong>Control Panel<\/strong>, then scroll down to find the <strong>Task Scheduler<\/strong>.<\/li><li>Click <strong>Create<\/strong> and select <strong>Run task <\/strong> \u2013 <strong>User-defined script<\/strong>,<\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-891 aligncenter\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-16.14.21.png\" sizes=\"(max-width: 513px) 100vw, 513px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-16.14.21.png 513w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-03-at-16.14.21-300x76.png 300w\" alt=\"Synology, Control Panel Task Scheduler\" width=\"513\" height=\"130\" \/><\/p><ul><li>On the <b>Edit task \u2013 General tab<\/b>, enter the following values:<ul><li>Task: <code> renew certificate ssl<\/code>,<\/li><li>User: <code>root<\/code>,<\/li><\/ul><\/li><li>On the <strong>Edit task \u2013 Schedule tab<\/strong>, enter the following values:<ul><li>Run on the following date: <code>today's date, Repeat monthly<\/code><\/li><\/ul><\/li><li>On the <strong>Edit task \u2013 Task Settings tab<\/strong>, enter the following values:<ul><li>Send launch details in an email: <code>Select and enter your e-mail address<\/code>,<\/li><li>Send launch details only if the script is unexpectedly terminated: <code>Check<\/code>,<\/li><li>Run the command: <code>Paste the following script into a text editor:<\/code><\/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-c5a8b7f elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"c5a8b7f\" 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-c5a8b7f\"\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-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>.\/acme.sh-master\/acme.sh --cron --home \/usr\/local\/share\/acme.sh --force --insecure<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_c5a8b7f = 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_c5a8b7f();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_c5a8b7f );\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-f6488e4 elementor-widget elementor-widget-text-editor\" data-id=\"f6488e4\" 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>After making these settings, click <strong>OK<\/strong> to save and activate the new scheduled task.<\/li><li>Now our script will run automatically every month.<\/li><\/ul><h2>Step 6 \u2013 Setting up certificates for individual applications in Synology DSM<\/h2><p>Now that you have a valid SSL certificate, you can assign it to individual applications on your Synology DSM to ensure secure connections. Here\u2019s how to do it:<\/p><ul><li><strong>Log in<\/strong> to DSM on your Synology device.<\/li><li>Go to the <strong>Control Panel<\/strong>, then to the <strong>Security \u2013 Certificate<\/strong> tab.<\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21146\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.41.09-1024x580.png\" alt=\"Synology DSM, Security panel\" width=\"750\" height=\"425\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.41.09-1024x580.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.41.09-300x170.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.41.09-768x435.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.41.09.png 1146w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p><ul><li>Click on <strong>Settings<\/strong> and go to the settings tab. All services\/applications and their corresponding applications will be displayed.<\/li><li>Click <strong>the current certificate of the target service<\/strong> and <strong>select the appropriate certificate from the drop-down menu<\/strong>.<\/li><li>Once the certificates have been configured, click <strong>OK<\/strong>.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-21148\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.47.25.png\" alt=\"Synology DSM, Security Certificates applications\" width=\"600\" height=\"419\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.47.25.png 600w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Screenshot-2024-05-29-at-14.47.25-300x210.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/li><li><strong>Done!<\/strong> <strong>\ud83d\ude80<\/strong><\/li><\/ul><p>If you have additional questions about the setup, <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 this guide for other users.<\/p><h2>Additional sources and information<\/h2><p>Thank you for reaching this point. 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>Synology, Certificate. <a href=\"https:\/\/kb.synology.com\/en-nz\/DSM\/help\/DSM\/AdminCenter\/connection_certificate?version=7\" target=\"_blank\" rel=\"noopener\">https:\/\/kb.synology.com\/en-nz\/DSM\/help\/DSM\/AdminCenter\/connection_certificate?version=7<\/a><\/li><li>ACME, Synology NAS Guide. <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/Synology-NAS-Guide\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/Synology-NAS-Guide<\/a><\/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-623d6ae elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-card-shadow-yes elementor-posts__hover-gradient elementor-widget elementor-widget-global elementor-global-20844 elementor-widget-posts\" data-id=\"623d6ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;cards_row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;cards_columns&quot;:&quot;3&quot;,&quot;cards_columns_tablet&quot;:&quot;2&quot;,&quot;cards_columns_mobile&quot;:&quot;1&quot;,&quot;cards_row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;cards_row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"posts.cards\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-posts-container elementor-posts elementor-posts--skin-cards elementor-grid\" role=\"list\">\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1162 post type-post status-publish format-standard has-post-thumbnail hentry category-hardware tag-docker tag-docker-compose tag-nginx-proxy-manager tag-portainer tag-synology\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/hardware\/synology-free-ports-80-443-for-nginx-proxy-manager\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_-300x169.png\" class=\"attachment-medium size-medium wp-image-1032\" alt=\"Synology Package Center screen with icons, including Advanced Media Extensions, two-server network, and Note Station\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Okladka-artykulow-Chochol.io_.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Hardware<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/hardware\/synology-free-ports-80-443-for-nginx-proxy-manager\/\">\r\n\t\t\t\tSynology: Free ports 80\/443 for Nginx Proxy Manager\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<p>Unblock the ports on the Synology and configure Nginx Proxy Manager. Przewodnik u\u0142atwi instalacj\u0119 serwera proxy, zapewniaj\u0105c proste zarz\u0105dzanie serwerem.<\/p>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1475 post type-post status-publish format-standard has-post-thumbnail hentry category-computer-networking tag-mikrotik\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-network-application-remote-adoption-of-an-access-point\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1-300x169.png\" class=\"attachment-medium size-medium wp-image-1455\" alt=\"Ubiquiti Network application interface with blue background and white download icon over system panels\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-2-1.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Computer networking<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-network-application-remote-adoption-of-an-access-point\/\">\r\n\t\t\t\tUniFi Network Application: Remote Adoption of an Access Point\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<p>Discover how to connect a device from Ubiquiti UniFi from another network to Network Application \u2013 using Mikrotik\u2019s IPSec tunnel as an example.<\/p>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1672 post type-post status-publish format-standard has-post-thumbnail hentry category-computer-networking tag-mikrotik\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-configure-a-leox-gpon-ont-module-on-a-mikrotik-router\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-300x169.png\" class=\"attachment-medium size-medium wp-image-1626\" alt=\"Network router with green and yellow Ethernet cables, server rack ports, and wireless icon overlay\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Computer networking<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-configure-a-leox-gpon-ont-module-on-a-mikrotik-router\/\">\r\n\t\t\t\tHow to configure a Leox GPON ONT module on a Mikrotik router\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<p>Step-by-step guide on how to configure Leox LXT-010S-H GPON ONT module on Mikrotik RB5009 router, instead of ONT module from Orange.<\/p>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-20420 post type-post status-publish format-standard has-post-thumbnail hentry category-software\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/software\/how-to-install-cp210x-uart-drivers-on-windows-10-11\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3-300x169.png\" class=\"attachment-medium size-medium wp-image-20388\" alt=\"Windows Device Manager category tree with Silicon Labs logo and centered text Silicon Labs\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-3.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Software<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/software\/how-to-install-cp210x-uart-drivers-on-windows-10-11\/\">\r\n\t\t\t\tHow to install CP210x UART drivers on Windows 10\/11\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<p>Here you will find step-by-step instructions for installing CP210x UART drivers on Windows 10 for Uniden scanners.<\/p>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-20347 post type-post status-publish format-standard has-post-thumbnail hentry category-computer-networking tag-nginx-proxy-manager\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/computer-networking\/nginx-proxy-cloudflare-how-to-restore-a-real-ip-address\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1-300x169.png\" class=\"attachment-medium size-medium wp-image-20321\" alt=\"Cloud icon with orange outline centered over blurred code editor text on dark background\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-1.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Computer networking<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/computer-networking\/nginx-proxy-cloudflare-how-to-restore-a-real-ip-address\/\">\r\n\t\t\t\tNginx Proxy and Cloudflare: How to restore a real IP address\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<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\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1916 post type-post status-publish format-standard has-post-thumbnail hentry category-software tag-authentik\" role=\"listitem\">\r\n\t\t\t<div class=\"elementor-post__card\">\r\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/software\/authentik-single-sign-on-configuration-for-cloudflare-zero-trust\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2-300x169.png\" class=\"attachment-medium size-medium wp-image-1879\" alt=\"Blurry ekran aplikacji z czerwonym ikonem katalogu i wstawionym wyszukiwaniem lub blokad\u0105 dost\u0119pu\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/02\/Okladka-artykulow-Chochol.io_-2.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\r\n\t\t\t\t<div class=\"elementor-post__badge\">Software<\/div>\r\n\t\t\t\t<div class=\"elementor-post__text\">\r\n\t\t\t\t<span class=\"elementor-post__title\">\r\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/software\/authentik-single-sign-on-configuration-for-cloudflare-zero-trust\/\">\r\n\t\t\t\tAuthentik: Single Sign-On Configuration for Cloudflare Zero Trust\t\t\t<\/a>\r\n\t\t<\/span>\r\n\t\t\t\t<div class=\"elementor-post__excerpt\">\r\n\t\t\t<p>Discover how to set up an Authentik connection with Cloudflare Zero Trust using OpenID Connect. Provide comfortable access to resources!<\/p>\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t\t\t<\/div>\r\n\t\t\r\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>How to configure a Wildcard SSL certificate on a Synology with Cloudflare. Step-by-step guide for data security and encryption.<\/p>\n","protected":false},"author":1,"featured_media":21137,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[121,121],"class_list":["post-21174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer-networking","tag-synology"],"_links":{"self":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/21174","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=21174"}],"version-history":[{"count":0,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/21174\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media\/21137"}],"wp:attachment":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media?parent=21174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/categories?post=21174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/tags?post=21174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}