<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vaultwarden on Homelab Journal</title><link>https://mareox.github.io/homelab-journal/topics/vaultwarden/</link><description>Recent content in Vaultwarden on Homelab Journal</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Mario</copyright><lastBuildDate>Sat, 31 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mareox.github.io/homelab-journal/topics/vaultwarden/index.xml" rel="self" type="application/rss+xml"/><item><title>Architecture: Vaultwarden Traffic Flow &amp; IP Header Strategy</title><link>https://mareox.github.io/homelab-journal/wiki/security/vaultwarden-traffic-flow/</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><guid>https://mareox.github.io/homelab-journal/wiki/security/vaultwarden-traffic-flow/</guid><description>&lt;h2 class="relative group">Overview
 &lt;div id="overview" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#overview" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>When running a self-hosted password manager like Vaultwarden, accurate client IP logging is critical for security alerts. The &amp;ldquo;New Device Login&amp;rdquo; email should show the actual IP address of whoever just accessed your vault—not your reverse proxy&amp;rsquo;s internal IP.&lt;/p>
&lt;p>This becomes tricky when you have multiple traffic paths: external users coming through Cloudflare Tunnel, and internal users coming through your local reverse proxy. Each path uses different mechanisms to communicate the real client IP.&lt;/p></description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mareox.github.io/homelab-journal/wiki/security/vaultwarden-traffic-flow/thumbnail.png"/></item><item><title>Protecting Vaultwarden Behind Caddy with Cloudflare Proxy</title><link>https://mareox.github.io/homelab-journal/tutorials/protecting-vaultwarden-cloudflare-proxy/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://mareox.github.io/homelab-journal/tutorials/protecting-vaultwarden-cloudflare-proxy/</guid><description>&lt;h2 class="relative group">Overview
 &lt;div id="overview" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#overview" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>Your password vault is arguably the most sensitive service in your homelab. Exposing Vaultwarden to the internet requires layered protection. This tutorial shows how to add Cloudflare Proxy (WAF, DDoS protection, bot management) in front of Vaultwarden while preserving real client IP logging.&lt;/p>
&lt;p>&lt;strong>What you&amp;rsquo;ll achieve:&lt;/strong>&lt;/p>
&lt;div class="highlight-wrapper">&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> Client (real IP)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cloudflare Edge (WAF, DDoS, Bot protection)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ CF-Connecting-IP header
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Your Firewall (geo-blocking, threat intel)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Caddy (extracts real IP, TLS termination)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ X-Real-IP header
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Vaultwarden (rate limiting, 2FA, logs real IP)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/div>

&lt;h2 class="relative group">Prerequisites
 &lt;div id="prerequisites" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prerequisites" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;ul>
&lt;li>Vaultwarden already running behind Caddy reverse proxy&lt;/li>
&lt;li>Domain managed by Cloudflare (DNS)&lt;/li>
&lt;li>Caddy with valid TLS certificates (Let&amp;rsquo;s Encrypt/ACME)&lt;/li>
&lt;li>Basic understanding of reverse proxies&lt;/li>
&lt;/ul>

&lt;h2 class="relative group">The Problem
 &lt;div id="the-problem" class="anchor">&lt;/div>
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem" aria-label="Anchor">#&lt;/a>
 &lt;/span>
 
&lt;/h2>
&lt;p>When you enable Cloudflare Proxy (orange cloud), traffic flows through Cloudflare&amp;rsquo;s edge servers before reaching your origin. This provides excellent protection, but introduces two challenges:&lt;/p></description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mareox.github.io/homelab-journal/tutorials/protecting-vaultwarden-cloudflare-proxy/thumbnail.svg"/></item></channel></rss>