mac-mini

Home page for everything running on the Mini. public links work from anywhere; tailnet links only work on a device signed into the Tailscale network.

Pages

The Long Game passphraseAlex's diet board — Phase 2 ledger, weigh-ins, Health & Trends tabs (asks for the passphrase once per device)diet.alexstein.app Food log passphraseQuick-add entries to the diet boarddiet.alexstein.app/log Site traffic tailnetViews and visitors per site, last 30 days (from the Caddy access log, refreshed every 10 min)home.alexstein.app/traffic alexstein.app publicAlex's personal website (GitHub Pages at the root of the domain)alexstein.app Guillotine Year 8 publicDraftKings guillotine league — standings, cut line, every week per playerguillotine.alexstein.app NBA Over/Under 2026-27 publicWin-total pool — standings vs the FanDuel line, picks grid, scenarios, skins (updated daily 7:05 AM)overunder.alexstein.app DK Rideshare publicNBA head-to-head DFS league — weekly scores, standings, matchups, schedule, playoff bracketdkrideshare.alexstein.app 12 Shitheads (PnB) publicFantasy league site — league onlypnb.alexstein.app Spend Snapshot familyHousehold spending & monthly budget, rebuilt from Plaid twice a day (family password)family.alexstein.app Net Worth tailnetBalances, holdings, liabilities100.106.158.125:8080/net-worth.html Alex — personal tailnetPersonal finance page100.106.158.125:8080/alex-personal.html

What's on which port

8085
This home page public~/home-site · PM2 home · passes any other path through to :8081/
8081
The Long Game — diet board + API public~/diet-server · PM2 diet-wine-bet/diet
8084
12 Shitheads (PnB) public~/pnb-site · PM2 pnb-site · rebuilt Tue 7a/pnb
8087
Guillotine Year 8 public~/guillotine · PM2 guillotine · DK standings import; live on Sundays/guillotine
8088
NBA Over/Under pool public~/overunder · PM2 overunder · ESPN records + FanDuel lines daily 7:05a/overunder
8089
DK Rideshare (NBA H2H) public~/dkrideshare · PM2 dkrideshare · DK standings import; live during slates/dkrideshare
8080
Finance pages — spend snapshot, net worth, personal tailnet~/ea-public · python3 -m http.server · re-rendered 6:55a / 7:10p100.106.158.125:8080
8090
finance-mcp — Plaid MCP server (API only, bearer token) tailnet~/finance-mcp · LaunchAgent · Plaid sync 6:45a / 7p100.106.158.125:8090
3001
ea-bot — WhatsApp send/triage endpoint (API only) tailnetClaude_Executive_Assistant/whatsapp-bot.js · PM2 ea-bot100.106.158.125:3001
5000, 7000
AirPlay receiver (macOS Control Center) LANsystemLAN

Public = alexstein.app subdomains (Cloudflare tunnel → Caddy); the old https://mac-mini.tail1156d9.ts.net/… paths also work when Tailscale Funnel is up. Tailnet fallback for the whole site: http://100.106.158.125:8000/. Tailnet = 100.106.158.125 (or mac-mini.local on the home LAN).

Scheduled jobs on the Mini
WhenJob
7:12a Mon–FriMorning triage
every 5 miniMessage poll
:25 every hourApple Health rollup → diet board Health tab
6:45a / 7pPlaid sync; finance pages rebuilt 10 min later
4:35p Mon–FriSPCX update
Sun/Tue/Thu 9a · Tue/Fri 8p · Sun 6pFantasy baseball → WhatsApp
Tue 7aPnB site update
11pEA repo git commit
every 30 minFunnel self-heal (re-asserts Tailscale serve if the public URL is down)
every 15 sTidbyt — renders + pushes 4 displays (alex, seffi, adam, sammy); ~/tidbyt, LaunchAgent com.alex.tidbyt.supervisor; bash ~/tidbyt/bin/healthcheck.sh
every minuteTidbyt keepalive (cron restarts the supervisor if it dies)