Mateusz

Hi, I'm Mateusz

Software developer, currently untangling networks.

I build web apps with Next.js, React and Laravel. Lately I've been learning what runs underneath them: routing, BGP, WireGuard tunnels and a homelab that finds a new way to break every week.

Now learning BGP, IPv6, and MikroTik

eth0internethomelab$ ping 10.0.0.1Request timed out.Request timed out.Request timed out.plug me in!

Stuff I've built

Apps I wrote and still keep running. Each one taught me something about the servers underneath.

  • ~/project-one

    Project one

    What this project does, who it's for and the most interesting problem you solved while building it.

    • Framework
    • Database
    • Hosting
  • ~/project-two

    Project two

    What this project does and what you learned building it.

    • Framework
    • Database
  • ~/project-three

    Project three

    What this project does and what you learned building it.

    • Framework
    • Database

Lessons from the lab

The networking side, in the order I learned it. Every one of these started with something not working.

  1. Level 1

    My first homelab

    What broke
    Every reboot meant logging in and starting things by hand.
    What I did
    Each service got its own systemd unit, so the whole box comes back on its own.
  2. Level 2

    The MTU mystery

    What broke
    New containers could ping anything, but HTTP requests just hung.
    What I did
    The packets were too big for the tunnel. MTU 1420 on the bridge and every page loaded.
  3. Level 3

    WireGuard only

    What broke
    The tunnel worked from home and silently failed over LTE.
    What I did
    My upstream filters UDP on port 443. Moving WireGuard to 51820 fixed it.
  4. Level 4

    BGP over GRE

    What broke
    I wanted my own IP addresses, but my router sits behind NAT.
    What I did
    A GRE tunnel to the provider, a BGP session inside it, and my own IPv4 and IPv6 space announced.
  5. Level 5

    A backup upstream

    What broke
    One upstream meant one single point of failure for IPv6.
    What I did
    A second transit with AS-path prepending, so it only carries traffic when the first one is down.
  6. Level 6

    In progress

    Next level: MikroTik

    What broke
    My UniFi gateway hides too much of what it's doing.
    What I'm doing
    Swapping it for a MikroTik and learning RouterOS from scratch.

My toolbox

Two drawers: one for writing code, one for the cables it runs on.

Code drawer

What I build apps with.

  • Next.js
  • React
  • TypeScript
  • Laravel
  • PHP
  • Tailwind CSS
  • Vite
  • Cassandra
  • SQLite

Cable drawer

What I'm learning to run them on.

  • Linux
  • Proxmox
  • WireGuard
  • MikroTik
  • UniFi
  • BGP
  • IPv6
  • nftables
  • systemd

Psst, these stickers peel off. Drag them around.

Got something to build? Send me a packet.

Need a web app built, or want to compare notes on a homelab? My inbox is open.