Howdy!
Most people rely on spreadsheets, wedding planners, or endless email chains to organize their big day. I… used my homelab.
Yes, the same rack that usually runs Docker containers, test VMs, and questionable “this will only take 5 minutes” experiments is now co-organizing my wedding. And honestly? It’s been one of the most fun and rewarding uses of my setup so far.
Here’s how my homelab ended up wearing a bow tie and helping me run the most important event of my life.
Hosting the wedding websites
The wedding website is the first thing guests see—so I wanted something better than a generic template or a “free” page full of ads. I also wanted full customization, multi-language support, and integrations with the rest of my wedding ecosystem. So I built it using what’s my forte: Laravel.
The site runs on a dedicated VM inside my Proxmox cluster, giving me isolation and flexibility. Laravel handles the frontend, translations, route logic, and all the small customizations that make the site truly ours.
But the VM only hosts the application itself. To keep things modular and efficient:
- The database lives on a separate server, running my MySQL cluster
- The cache and session store run on Redis, also outside the VM
- Static assets are built and deployed via CI/CD, so updates are quick and clean
This separation gives the site more resilience and lets me scale things independently—like cranking up Redis if the RSVP load spikes, without touching the main VM. And I mean, flexing my basics infra skills!
For external access, instead of exposing ports directly or relying on Traefik, I’m using Cloudflared Tunnels. This lets me keep the entire homelab fully closed from the outside world while still making the website globally accessible through Cloudflare’s edge network, with just a few clicks.
Benefits of using Cloudflared Tunnels:
- No open ports on my router
- Automatic HTTPS
- DDOS protection
- Super low-latency global routing
- Zero trust access rules if needed
The end result is a self-hosted wedding website that loads fast, stays secure, and feels completely personal—while still being robust enough to handle the tech enthusiasts, relatives, and curious coworkers who will inevitably click through it.
A custom RSVP platform (because why use Google Forms?)
Instead of relying on Google Forms or some cookie-cutter RSVP tool, I built our RSVP system as a dedicated module inside the main Laravel website. This way everything stays in one codebase, one design system, one deployment pipeline—and I can shape the guest experience exactly as we want it.
To manage the backoffice, I used Filament, which turned out to be a lifesaver. Filament’s admin panel let me spin up resources, manage data entry, and customize models with incredible speed. Honestly, once I created the Filament resource for guests and filled in their info, it took no time at all to build a fully custom RSVP form tailored for every individual guest.
Each guest receives a magic link, unique to them, preloaded with the right options—whether they’re a plus one, a family member, someone with dietary restrictions, or part of a multilingual subset of our invite list. No logins, no confusion, just a clean form that speaks directly to their situation.
Behind the scenes, I even tied RSVP submissions to a small ntfy container running in my homelab. This sends me real-time push notifications whenever someone confirms (or declines) their attendance.
Is this strictly necessary? Absolutely not. But look—on your wedding day, you gather every possible point in the “good husband material” category. So if I can build a slightly over-engineered RSVP system that proves my commitment and lets me keep track of guests in real time… well, I’d say that’s a justified use of compute resources.
Also, it gives my fiancée one more reason to say “yes” - and hopefully never ask, “why do we need Redis for this?”
Streaming the ceremony with Owncast + VPN
From many clusters comes great responsibility. And nothing brings out that responsibility more than livestreaming your own wedding.
This is the part of the project where I get to flex the homelab to its absolute limit. No third-party platforms, no unpredictable compression, no “your stream will begin shortly” placeholders. Just pure, self-hosted video streaming for the people who can’t be there in person.
To make this happen, I’m running an Owncast instance right inside the homelab. Owncast is perfect: lightweight, reliable, customizable, and—most importantly—fully under my control. Guests get a clean, ad-free, distraction-free video stream that looks exactly how I want it.
But here’s the tricky part: I didn’t want to expose an RTMP port publicly to ingest the video feed from the venue. And trying to make it work through a Cloudflared Tunnel is… well… the kind of headache you only experience once before deciding you love yourself more than that.
So I went with the simplest, cleanest, most homelab-approved solution: my trusted Tailscale mesh VPN.
The camera/encoder at the venue pushes the stream over Tailscale straight to the Owncast server in my homelab. Yes, it’s an extra hop in the journey of every video packet. But in exchange, I get:
- None of Cloudflare’s RTMP quirks
- No Traefik hustle
- And a calmer version of me on my wedding day
This part is still a WIP, since I’ll need to tune the streaming settings, test upload capacity at the venue, and tweak quality/bitrate to avoid buffering surprises. (And yes, I fully expect to run late-night test streams featuring me drunk in a bikini.)
But once it all comes together, our wedding will be livestreamed—not by Big Tech—but by the servers that have been faithfully running in my house for years. And honestly, that feels perfect.
Dumbdrop for guest photo & video uploads
We all know guests take hundreds of photos—but collecting them is usually a nightmare of shared albums, WhatsApp compression, AirDropping chaos, and “I’ll send them later” promises.
So I deployed Dumbdrop, a wonderfully simple, user-friendly file drop service.
Guests just scan a QR code or click a link → upload photos/videos → done. No login, no app, no account, no compression.
Behind the scenes, the homelab stores everything neatly organized in my NAS, ready for us to enjoy after the wedding.
The real magic: A wedding powered by passion
Sure, most people wouldn’t trust their homelab with part of their wedding day. But for me, it adds something special: our celebration reflects who we are.
The same curiosity and creativity that made me build a homelab is now helping me craft an experience that is personal, custom, and meaningful.
Plus, everything runs locally, securely, privately, and exactly the way I want it to.
Not because it’s the easiest solution. But because it’s my solution.
In the end…
I’m not just getting married. I’m getting married with the help of a bunch of servers, containers, virtual networks, and an embarrassingly over-engineered monitoring dashboard.
And honestly?
I wouldn’t have it any other way.
Happy building ⚒