Mark Anthony Brown

Under the hood

Yes, this runs on a Raspberry Pi.

No cloud server and no hosting bill. Every page you've clicked, every simulation you've sent to the Pi, and my résumé PDF all come from a Raspberry Pi 3 sitting at home.

Cloudflare sits out front, Tailscale lets me get in from anywhere, and my router doesn't have a single port open. It's my favorite way to learn systems stuff: if something breaks, it's my problem to fix.

Right now on the Pi

checking in… · updates every 10 seconds

Up for
–
Site up for
–
Load (1/5/15 min)
–
CPU temperature
–
Memory in use
–
Python
–

How you got here

Loading this page took four hops. The Pi only ever makes outbound connections, which is the whole trick.

01

You

Your browser

You ask for markanthonybrown.com. Fonts and Tailwind come from CDNs, so the Pi only has to send HTML, JSON and a few small files.

02

Cloudflare

DNS, HTTPS, caching

Handles the secure connection, keeps static files cached for a week, and filters out most of the bot traffic.

03

cloudflared

The tunnel

A connection the Pi opens out to Cloudflare. Nothing comes in through my router, and my home IP stays private.

04

Raspberry Pi 3

Gunicorn + Flask

A quad-core 1.2 GHz board with 1 GB of RAM. Two Gunicorn workers run the Flask app and the Python simulation code.

The back door

Tailscale

When I need to SSH in or push an update, I go through a private Tailscale network, so SSH never faces the open internet.

Why I set it up this way

Let the browser do the work

A Pi 3 is not a supercomputer. The simulator runs in your browser by default, and the Python version only takes one job at a time, capped at 200k steps.

Keep it light

Just Flask and the standard library. No numpy, no database, no build step. I draw the charts by hand on <canvas>, and my headshot is a 24 KB WebP.

Zero open ports

Public traffic comes through the tunnel and my own access goes through Tailscale. With nothing exposed on the router, there's a lot less to worry about.

Python 3 Flask Gunicorn Jinja2 Tailwind CSS Vanilla JS Canvas API Raspberry Pi OS systemd Cloudflare Tunnel Tailscale SMTP email