Skip to main content

14 posts tagged with "selfhosting"

View All Tags

Migrating a Production Cluster Off ingress-nginx to Traefik v3

· 8 min read

Short answer: Traefik v3.7's kubernetesIngressNGINX provider reads Ingresses on the ingress-nginx class and translates its annotations, so the cutover itself is a load balancer IP handover — no annotation rewrite across your Ingresses, no dual-IngressClass trick. What it does not cover is the ingress-nginx controller configuration: TLS redirect, global error pages, the default certificate, auth annotations after you switch class. Those you port by hand.

We moved a production cluster on 23 August 2026: many Ingresses, multi-tenant, customer apps. Here is what we did and what it cost.

What Is beacon.min.js? Cloudflare's Auto-Injected Analytics, and How to Turn It Off (2026)

· 9 min read

Short answer: beacon.min.js is Cloudflare's Real User Measurement script. If your domain is on a free Cloudflare plan and proxied through them (the orange cloud), Cloudflare has been injecting it into your HTML by default since September 2025 — you did not add it, it is not in your repo, and it arrives before your page reaches the browser. Paid plans are opt-in only. You turn it off in Analytics & Logs → Web Analytics → Manage Site → Advanced Options → JS Snippet injection.

Two things are worth separating here, because the thread that put this on the front page of Hacker News this week mixed them together:

  1. The GDPR panic is mostly overstated. The default configuration excludes EU visitor data. Cloudflare's own words, from the thread: "we will not collect any RUM metrics from traffic that passes through our European and UK data centers."
  2. The consent problem is real anyway, and it is a different problem. The beacon is injected at the edge, so it lands on the page before your consent management platform gets to run. There is nothing for your CMP to gate. That is true regardless of who the visitor is.

I run a hosting company, so treat me accordingly — I have an obvious interest in you thinking hard about what your platform does to your bytes. That is exactly why I want to be careful with the facts rather than loud about them.

PostgreSQL Benchmark: AWS RDS vs Hostim vs Self-Hosted on Hetzner (2026)

· 9 min read

Short answer first: at the same size (2 vCPU / 4 GB, PostgreSQL 16), Hostim had the fastest writes, about 2.5× the write throughput of AWS RDS db.t4g.medium and 2.1× a default self-hosted Postgres on Hetzner. Hetzner had the fastest reads, on raw per-core CPU speed. RDS was slowest or near-slowest on both, and its listed price is the smallest part of the real bill.

This post shows every number, the exact commands to reproduce them, and (because it changes the conclusion) what high availability actually costs on each platform.

Supabase vs PostgreSQL: What Supabase Adds and When to Skip It (2026)

· 10 min read

Supabase is PostgreSQL with a backend bolted on. Every Supabase project is a real Postgres database; the difference is the layers around it — authentication, realtime websockets, file storage, edge functions and a web dashboard with an auto-generated API. Plain PostgreSQL is the database on its own.

So use Supabase if you want Postgres plus auth, realtime, storage, and a dashboard as one managed bundle. Self-host Postgres – or use a managed Postgres – if you mostly need a database and your app already handles its own auth and logic. The choice is not really "Postgres vs Supabase". It's whether you need the extra layers Supabase puts on top of Postgres.

This post gives you a clear way to decide, a side-by-side table, and the cases where each option is the right one.

Which Database Should You Self-Host? SQLite vs MySQL vs PostgreSQL vs Redis

· 6 min read

When you're deploying your own app, the database choice matters more than most people think. It affects performance, ops complexity, backups, and how much memory your server needs.

There are four options you'll run into most often: SQLite, MySQL, PostgreSQL, and Redis. They're not all the same kind of database – and that's the point. Here's when each one makes sense.

How to Self-Host n8n with Docker Compose (2026 Guide)

· 7 min read

To self-host n8n with Docker Compose you need one docker-compose.yml with the n8nio/n8n image, a named volume mounted at /home/node/.n8n, and the N8N_HOST, WEBHOOK_URL and GENERIC_TIMEZONE environment variables set — then docker compose up -d. The default setup stores everything in SQLite and speaks plain HTTP on port 5678, so this guide also covers the four things that bare file leaves out: PostgreSQL, restarting after a reboot, HTTPS, and doing it all without Traefik.

n8n is a popular open-source automation tool – like Zapier, but self-hosted. Here's how to run it on your own VPS using Docker Compose, and expose it securely over HTTPS using Caddy as the ingress proxy.

If you want a broader primer, check out How to Self-Host a Docker Compose App. But you don't need to read it first – this guide is self-contained.

🗓️ Last updated: August 2026. Tested with the latest n8nio/n8n image on Ubuntu 24.04.

Caddy vs HAProxy vs Nginx vs Traefik: Which Reverse Proxy to Pick (2026)

· 7 min read

Short answer: HAProxy is the fastest, Caddy is the easiest, Traefik is the best fit for containers, and Nginx is the safest default. All four terminate TLS and reverse proxy well; the choice comes down to how your services change and how much config you want to own. Below: each proxy in detail, every head-to-head pairing, and a performance ranking.