From Docker Compose to k3s: Migrating a Full-Stack App with Jenkins CI/CD

⏱ 13 min read

Six months ago, my app was running on Coolify behind a Cloudflare Tunnel. Deploys were automatic — every push to my self-hosted Gitea triggered a webhook, Coolify picked it up, rebuilt the Docker Compose stack, and shipped it. It worked. But there was no staging environment, no test gate before production, and no visibility into …

Read more

The Ultimate Self-Hosting Architecture: Cloudflare, Tailscale & Proxmox (Without Breaking Things)

⏱ 3 min read

Self-hosting doesn’t usually fail because of bad software. It fails because everything is forced through the wrong network path. I learned this the hard way—first with Immich uploads, then with Nextcloud sync issues, and finally with Jellyfin buffering that made Netflix look fast. This post is the architecture I ended up with after fixing all …

Read more

Jellyfin, Cloudflare, and Tailscale: Stop Buffering and Streaming Headaches

⏱ 3 min read

This post is part of the Self-Hosting Without Pain seriesA real-world guide to running Immich, Nextcloud, Jellyfin, and more using Cloudflare, Tailscale, and Proxmox — without broken uploads, buffering, or exposed ports. I love Jellyfin. Self-hosted streaming is amazing — no subscriptions, no corporate “features,” just your media, your rules. But the first time I …

Read more