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
8085This home page public~/home-site · PM2
home · passes any other path through to :8081/8081The Long Game — diet board + API public~/diet-server · PM2
diet-wine-bet/diet808412 Shitheads (PnB) public~/pnb-site · PM2
pnb-site · rebuilt Tue 7a/pnb8087Guillotine Year 8 public~/guillotine · PM2
guillotine · DK standings import; live on Sundays/guillotine8088NBA Over/Under pool public~/overunder · PM2
overunder · ESPN records + FanDuel lines daily 7:05a/overunder8089DK Rideshare (NBA H2H) public~/dkrideshare · PM2
dkrideshare · DK standings import; live during slates/dkrideshare8080Finance pages — spend snapshot, net worth, personal tailnet~/ea-public ·
python3 -m http.server · re-rendered 6:55a / 7:10p100.106.158.125:80808090finance-mcp — Plaid MCP server (API only, bearer token) tailnet~/finance-mcp · LaunchAgent · Plaid sync 6:45a / 7p100.106.158.125:8090
3001ea-bot — WhatsApp send/triage endpoint (API only) tailnetClaude_Executive_Assistant/whatsapp-bot.js · PM2
ea-bot100.106.158.125:30015000, 7000AirPlay 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
| When | Job |
|---|---|
| 7:12a Mon–Fri | Morning triage |
| every 5 min | iMessage poll |
| :25 every hour | Apple Health rollup → diet board Health tab |
| 6:45a / 7p | Plaid sync; finance pages rebuilt 10 min later |
| 4:35p Mon–Fri | SPCX update |
| Sun/Tue/Thu 9a · Tue/Fri 8p · Sun 6p | Fantasy baseball → WhatsApp |
| Tue 7a | PnB site update |
| 11p | EA repo git commit |
| every 30 min | Funnel self-heal (re-asserts Tailscale serve if the public URL is down) |
| every 15 s | Tidbyt — renders + pushes 4 displays (alex, seffi, adam, sammy); ~/tidbyt, LaunchAgent com.alex.tidbyt.supervisor; bash ~/tidbyt/bin/healthcheck.sh |
| every minute | Tidbyt keepalive (cron restarts the supervisor if it dies) |