Blue Folder

INSTALL GUIDE · MAC

Blue Folder Mail on a Mac

A Mac mini tucked on a shelf makes a lovely always-on mail box. Run it with Docker Desktop, or with Node directly. Great for trying it on your laptop first, too.

Good fit (Mac mini)
An always-on Mac mini is a tidy home server. On a laptop it's perfect for evaluating; for real mail you want a machine that stays awake and online.

Route A — Docker Desktop

  1. Install Docker Desktop From docker.com — it includes Compose. Start it and wait for the whale icon.
  2. Install Blue Folder Mail
    curl -fsSL https://raw.githubusercontent.com/gordonvividtone/bluefolder-mail/main/install.sh | bash

    Or clone, cp .env.example .env, set INBOUND_SECRET + RESEND_API_KEY, then docker compose up -d.

  3. Open it

    Go to http://localhost:8080, generate your key and save the backup password, then add your domains in Settings.

Data persists in the bfm-data volume. Same as the Docker guide.

Route B — Node directly (no Docker)

Requires Node 20+ (install via brew install node). Node 22.5+ uses the built-in node:sqlite; otherwise better-sqlite3 builds automatically.

git clone https://github.com/gordonvividtone/bluefolder-mail.git
cd bluefolder-mail
npm install
cp .env.example .env        # edit it
npm start                   # -> http://localhost:8080

Verify the full seal → store → decrypt path with npm run smoke. To keep it running, use a launchd agent (the macOS equivalent of the systemd unit in the VPS guide).

Storage & sending

Receiving mail & making it reachable

Recommended — webhook

A Mac at home has no public IP you'd want to expose. Put it behind a Cloudflare Tunnel or Tailscale Funnel to get a stable HTTPS URL, then point a provider (Mailgun, SendGrid, Postal, Resend inbound) at https://your-tunnel/_inbound with the secret as the x-inbound-secret header or ?secret=….

Don't run the built-in SMTP MTA on a home/residential connection: port 25 is almost always blocked, the IP is dynamic and blocklisted, and there's no rDNS you control. The webhook is the only sane path here.

HTTPS & the front door

A Cloudflare Tunnel or Tailscale gives you HTTPS without opening ports. Keep the app bound to localhost:8080 and add a login with BASIC_AUTH_USER / BASIC_AUTH_PASS. Also stop the Mac from sleeping — System Settings → Energy, or caffeinate.

Blue Folder Mail on a Mac mini — your own quiet, encrypted mail box at home. Full reference: DEPLOY.md. Other platforms →