<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Cloudflare on homelab</title>
    <link>https://homelab.nbkelley.com/tags/cloudflare/</link>
    <description>Recent content in Cloudflare on homelab</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://homelab.nbkelley.com/tags/cloudflare/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cloudflare Access Setup for Protected Sections</title>
      <link>https://homelab.nbkelley.com/docs/security/cloudflare-access-setup/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/security/cloudflare-access-setup/</guid>
      <description>&lt;h1 id=&#34;cloudflare-access-setup-for-protected-sections&#34;&gt;Cloudflare Access Setup for Protected Sections&lt;a class=&#34;anchor&#34; href=&#34;#cloudflare-access-setup-for-protected-sections&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Methodology for securing specific website paths or subdomains using Cloudflare Zero Trust Access.&lt;/li&gt;&#xA;&lt;li&gt;Authentication bypasses traditional &lt;code&gt;.htaccess&lt;/code&gt; or server-side auth; Cloudflare handles it at the edge.&lt;/li&gt;&#xA;&lt;li&gt;Prerequisites: Cloudflare domain, Paid/Zero Trust plan (free tier supports up to 50 users).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Identity Provider Choice&lt;/strong&gt;: One-time PIN (OTP) recommended for simplicity and shared access without managing user lists. Alternatives include Google/GitHub or specific email allowlists.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Policy Structure&lt;/strong&gt;: &amp;ldquo;Allow Authenticated Users&amp;rdquo; policy with wildcard email matching (&lt;code&gt;*&lt;/code&gt;) or specific domain matching (&lt;code&gt;*@domain.com&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Edge-Based Protection&lt;/strong&gt;: No server-side configuration changes required; protection occurs before requests hit the origin server.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pattern established but not yet applied to specific homelab services.&lt;/li&gt;&#xA;&lt;li&gt;Relevant to Nginx Proxy Manager (192.168.1.222) or Proxmox (192.168.1.69) admin interfaces if routed through Cloudflare.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversation date: 2025-11-24.&lt;/li&gt;&#xA;&lt;li&gt;Focuses on the Cloudflare Zero Trust dashboard workflow for self-hosted applications.&lt;/li&gt;&#xA;&lt;li&gt;No changes to existing Cloudflare SSL/DNS integration patterns.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Which homelab services will leverage Cloudflare Access for admin/protected paths?&lt;/li&gt;&#xA;&lt;li&gt;Will static IP bypass policies be implemented for homelab admin access?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/security/cloudflare_integration/&#34;&gt;Cloudflare Integration: SSL &amp;amp; DNS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/hinterflix-help-site/&#34;&gt;Hinterflix Help Site - Cloudflare Deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/proxy-management/&#34;&gt;Proxy Management &amp;amp; Cloudflare Tunnels&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/117-Setting Up Cloudflare Access for Website Protection.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek conversation: 2025-11-24 (Setting Up Cloudflare Access for Website Protection)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Hinterflix Help Site - Cloudflare Deployment</title>
      <link>https://homelab.nbkelley.com/docs/services/hinterflix-help-site/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/hinterflix-help-site/</guid>
      <description>&lt;h1 id=&#34;hinterflix-help-site---cloudflare-deployment&#34;&gt;Hinterflix Help Site - Cloudflare Deployment&lt;a class=&#34;anchor&#34; href=&#34;#hinterflix-help-site---cloudflare-deployment&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The Hinterflix help site (&lt;code&gt;help.hinterflix.com&lt;/code&gt;) is deployed as a static Hugo site on Cloudflare Workers. The domain is managed within the same Cloudflare account.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: Cloudflare Workers Pages (static hosting).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Domain&lt;/strong&gt;: &lt;code&gt;help.hinterflix.com&lt;/code&gt; (root subdomain of &lt;code&gt;hinterflix.com&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DNS&lt;/strong&gt;: CNAME record pointing to the Cloudflare Workers subdomain (&lt;code&gt;*.workers.dev&lt;/code&gt;). Proxy status set to &lt;strong&gt;Proxied&lt;/strong&gt; (orange cloud).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SSL/TLS&lt;/strong&gt;: Automatically provisioned by Cloudflare. &amp;ldquo;Always Use HTTPS&amp;rdquo; enabled in SSL/TLS settings.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuration-steps&#34;&gt;Configuration Steps&lt;a class=&#34;anchor&#34; href=&#34;#configuration-steps&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Cloudflare DNS Setup&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo Deployment to Cloudflare Pages - Troubleshooting</title>
      <link>https://homelab.nbkelley.com/docs/services/hugo-cloudflare-pages/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/hugo-cloudflare-pages/</guid>
      <description>&lt;h1 id=&#34;hugo-deployment-to-cloudflare-pages---troubleshooting&#34;&gt;Hugo Deployment to Cloudflare Pages - Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#hugo-deployment-to-cloudflare-pages---troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Patterns for resolving missing assets (favicons, CSS, styling) and build failures when deploying Hugo-generated static sites to Cloudflare Pages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Build Configuration&lt;/strong&gt;: Set build command to &lt;code&gt;hugo&lt;/code&gt;, output directory to &lt;code&gt;public&lt;/code&gt;, and explicitly match the local Hugo version in Cloudflare Pages settings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static Asset Placement&lt;/strong&gt;: Ensure all static files (e.g., &lt;code&gt;favicon.ico&lt;/code&gt;, CSS) reside in the &lt;code&gt;static/&lt;/code&gt; directory root or theme-specific static folders.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rebuild Enforcement&lt;/strong&gt;: Use &lt;code&gt;hugo --cleanDestinationDir&lt;/code&gt; or manually remove the &lt;code&gt;public/&lt;/code&gt; directory to force Hugo to regenerate all assets and detect changes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cache Management&lt;/strong&gt;: Clear both Cloudflare Pages deployment cache and browser cache to prevent stale asset delivery.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verification Workflow&lt;/strong&gt;: Validate locally via &lt;code&gt;hugo server&lt;/code&gt;, inspect the generated &lt;code&gt;public/&lt;/code&gt; directory, review Cloudflare deployment logs, and confirm full Git commits.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Build Command&lt;/strong&gt;: &lt;code&gt;hugo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Output Directory&lt;/strong&gt;: &lt;code&gt;public&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Static Directory&lt;/strong&gt;: &lt;code&gt;static/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Config File&lt;/strong&gt;: &lt;code&gt;config.toml&lt;/code&gt; / &lt;code&gt;config.yaml&lt;/code&gt; (verify &lt;code&gt;baseURL&lt;/code&gt; matches target domain)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;obsidian-integration-for-hugo-date-format&#34;&gt;Obsidian Integration for Hugo Date Format&lt;a class=&#34;anchor&#34; href=&#34;#obsidian-integration-for-hugo-date-format&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hugo expects ISO 8601 dates with timezone offset: &lt;code&gt;2025-11-22T23:11:12-05:00&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxy Management &amp; Cloudflare Tunnels</title>
      <link>https://homelab.nbkelley.com/docs/networking/proxy-management/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/networking/proxy-management/</guid>
      <description>&lt;h1 id=&#34;proxy-management--cloudflare-tunnels&#34;&gt;Proxy Management &amp;amp; Cloudflare Tunnels&lt;a class=&#34;anchor&#34; href=&#34;#proxy-management--cloudflare-tunnels&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There are multiple layers of proxying available in the homelab, ranging from edge protection (Cloudflare) to local routing (OPNsense/Nginx Proxy Manager).&lt;/p&gt;&#xA;&lt;h2 id=&#34;nginx-proxy-manager-npm-troubleshooting&#34;&gt;Nginx Proxy Manager (NPM) Troubleshooting&lt;a class=&#34;anchor&#34; href=&#34;#nginx-proxy-manager-npm-troubleshooting&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Redirect Loops &amp;amp; Timeouts&lt;/strong&gt;: Often caused by misconfigured upstream servers or aggressive timeout settings in NPM&amp;rsquo;s web UI. Resolving a redirect loop may expose underlying connectivity issues that manifest as timeouts.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Docker Compose Pattern&lt;/strong&gt;: NPM is deployed with &lt;code&gt;network_mode: host&lt;/code&gt; to bind directly to host ports (80, 443, 81), bypassing Docker&amp;rsquo;s NAT for direct host network access.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Verification Steps&lt;/strong&gt;:&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Check container health: &lt;code&gt;docker ps | grep nginx-proxy-manager&lt;/code&gt; (ensure &lt;code&gt;healthy&lt;/code&gt; status).&lt;/li&gt;&#xA;&lt;li&gt;Verify port bindings: &lt;code&gt;sudo netstat -tulpn | grep :80&lt;/code&gt; / &lt;code&gt;:443&lt;/code&gt; (requires &lt;code&gt;net-tools&lt;/code&gt; package).&lt;/li&gt;&#xA;&lt;li&gt;Inspect NPM Web UI: Access at &lt;code&gt;http://&amp;lt;host-ip&amp;gt;:81&lt;/code&gt; to review Proxy Host settings, specifically timeout values and upstream server addresses.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Port Conflicts&lt;/strong&gt;: Use &lt;code&gt;netstat&lt;/code&gt; to identify which container owns a specific port (e.g., &lt;code&gt;docker-proxy&lt;/code&gt; vs &lt;code&gt;nginx: master&lt;/code&gt;). In this setup, port 8000 was observed bound to &lt;code&gt;docker-proxy&lt;/code&gt;, indicating another service in the compose stack.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Co-located Services&lt;/strong&gt;: The same Docker Compose stack hosts &lt;code&gt;cloudflare-ddns&lt;/code&gt; (for dynamic IP updates) and &lt;code&gt;netbird&lt;/code&gt; (for mesh networking), requiring careful port management to avoid conflicts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use &lt;code&gt;network_mode: host&lt;/code&gt; for NPM to simplify port mapping and ensure direct access to host network interfaces.&lt;/li&gt;&#xA;&lt;li&gt;Rely on &lt;code&gt;net-tools&lt;/code&gt; (&lt;code&gt;netstat&lt;/code&gt;) for quick port binding verification in host-networked Docker containers.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Docker Host&lt;/strong&gt;: &lt;code&gt;iluvatar@proxy&lt;/code&gt; (192.168.1.208)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;NPM Web UI&lt;/strong&gt;: &lt;code&gt;http://192.168.1.208:81&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ports&lt;/strong&gt;: 80 (HTTP), 443 (HTTPS), 81 (NPM Admin UI)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Troubleshooting session from 2025-11-17 resolved a redirect loop that subsequently turned into a timeout issue.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;net-tools&lt;/code&gt; installation was required to diagnose port bindings on the host.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Specific timeout values configured in NPM for upstream services.&lt;/li&gt;&#xA;&lt;li&gt;Whether &lt;code&gt;netbird&lt;/code&gt; or &lt;code&gt;cloudflare-ddns&lt;/code&gt; requires dedicated port exposure or can share the host network.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/security/cloudflare_integration/&#34;&gt;Cloudflare Integration: SSL &amp;amp; DNS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/networking/opnsense_dmz_iot_firewall/&#34;&gt;OPNsense DMZ Firewall Rules for IoT&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Docker Host Configuration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/uptime-kuma/&#34;&gt;Uptime Kuma - Configuration &amp;amp; Integrations&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare Integration: SSL &amp; DNS</title>
      <link>https://homelab.nbkelley.com/docs/security/cloudflare_integration/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/security/cloudflare_integration/</guid>
      <description>&lt;h1 id=&#34;cloudflare-integration-ssl--dns&#34;&gt;Cloudflare Integration: SSL &amp;amp; DNS&lt;a class=&#34;anchor&#34; href=&#34;#cloudflare-integration-ssl--dns&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Methodology for securing OPNsense and Proxmox web interfaces using Cloudflare&amp;rsquo;s Origin CA certificates and protecting the WAN via Cloudflare-specific firewall rules.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;SSL Mode&lt;/strong&gt;: Cloudflare SSL/TLS setting must be set to &lt;strong&gt;Full (Strict)&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Security Pattern&lt;/strong&gt;: Use &lt;strong&gt;Cloudflare IP Aliases&lt;/strong&gt; on OPNsense to restrict WAN HTTPS (Port 443) access exclusively to Cloudflare&amp;rsquo;s IP ranges.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DNS Strategy&lt;/strong&gt;: Use A records with &lt;strong&gt;Proxy (Orange Cloud)&lt;/strong&gt; enabled for web services to leverage DDoS protection.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;cloudflare-origin-ssl-opnsense&#34;&gt;Cloudflare Origin SSL (OPNsense)&lt;a class=&#34;anchor&#34; href=&#34;#cloudflare-origin-ssl-opnsense&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Generate Cert&lt;/strong&gt;: In Cloudflare, go to &lt;code&gt;SSL/TLS → Origin Server&lt;/code&gt; and create a certificate for the domain.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Import to OPNsense&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;System → Trust → Certificates&lt;/code&gt; → &lt;strong&gt;Import existing Certificate&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Paste PEM (Cert) and Private Key.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Assign to WebUI&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;System → Settings → Administration&lt;/code&gt; → Set &lt;strong&gt;SSL Certificate&lt;/strong&gt; to the imported Cloudflare cert.&lt;/li&gt;&#xA;&lt;li&gt;Restart WebGUI: &lt;code&gt;configctl webgui restart&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;wan-hardening-opnsense&#34;&gt;WAN Hardening (OPNsense)&lt;a class=&#34;anchor&#34; href=&#34;#wan-hardening-opnsense&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Create Alias&lt;/strong&gt;: &lt;code&gt;Firewall → Aliases&lt;/code&gt; → &lt;strong&gt;URL Table Alias&lt;/strong&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Name: &lt;code&gt;Cloudflare_IPs&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;URL: &lt;code&gt;https://www.cloudflare.com/ips-v4&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Firewall Rule&lt;/strong&gt;: &lt;code&gt;Firewall → Rules → WAN&lt;/code&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: &lt;code&gt;Pass&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;code&gt;Cloudflare_IPs&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Destination Port&lt;/strong&gt;: &lt;code&gt;443&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Block Rule&lt;/strong&gt;: Add a block rule for port 443 from all other sources at the bottom of the WAN list.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Note: If the browser shows &amp;ldquo;Not Secure&amp;rdquo; after import, ensure the &lt;strong&gt;Cloudflare Origin CA Root Certificate&lt;/strong&gt; is also imported into OPNsense &lt;code&gt;System → Trust → Authorities&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
