OOTP+ Online League Setup Crest
TURNKEY ONLINE LEAGUE ONBOARDINGOOTP 25 • 26 • 27$0 R2 EGRESSMANAGED FTPS :2121

Getting Started: Setting Up Your OOTP+ Online League

Replace disconnected FTP web hosts, static forum screenshots, and manual export spreadsheets in under 5 minutes. Follow this interactive walkthrough to provision your multi-tenant /l/continental-bba workspace, wire OOTP's in-game Online League settings, compile your first read-only SQLite WAL snapshot, and onboard up to 60 human General Managers.

Checklist Progress: 1/6 Steps (17%)
STEP 01 • MULTI-TENANT CONTROL PLANE (~45 SEC)

Provision Your League Workspace & Commissioner Sync Key

Every online league receives a dedicated URL slug (/l/continental-bba), a chrooted virtual FTPS account (continental-bba_gm@ftp.ootpplus.com), and a SHA-256 Commissioner Sync API Key.

STEP 02 • OOTP 25 / 26 / 27 CLIENT SETTINGS (~90 SEC)

Configure OOTP In-Game “Online League” & Database Export Settings

Open your league in OOTP as Commissioner and navigate to Game → Game Settings → Online League and Game Settings → Database. Copy and paste the exact values below:

Select Team Export Collection Pathway:
OOTP In-Game FieldExact Value to PasteAction
FTP Server Hostnameftp.ootpplus.com
FTP Port & Mode2121 (Explicit FTPS / Passive Mode)
FTP Usernamecontinental-bba_gm
Remote Team Exports Directory/exports/continental-bba/incoming
League File Download URL (HTTP)https://files.ootpplus.com/continental-bba/cycles/latest/continental-bba.lg.tar.gz
1. CSV Data Dump
Enable `import_export/csv`

Under Database Settings, enable Dump data to CSV files for Online League exports so wRC+, FIP, WAR, and Marcel projections compile.

2. Pitch-by-Play Statcast
Export At-Bat & Batted Balls

Include players_at_bat_batting_stats.csv to power 3D Ballpark Spray Charts, Exit Velocity, and “Would It Dong?” overlays.

3. BNN HTML Reports
Include `news/html/`

Enable online league HTML report generation to populate the XSS-sanitized BNN Almanac Portal alongside the synthesized Chronicle Gazette.

STEP 03 • ATOMIC SNAPSHOT & R2 COMPILER (~30 SEC)

Publish Sim Cycle #1 & Master `.lg.tar.gz` Archive

Each time you advance your league in OOTP, push your update via the Web Sync Companion or the headless post-sim script below. OOTP+ compiles an immutable continental-bba_c1.db (?mode=ro) snapshot and resets all 30 GM export indicators.

Test Presigned Cloudflare R2 Master Archive Initiation
Calls POST /api/v1/leagues/continental-bba/sims/initiate to issue a 30-minute SigV4 PUT URL.
Launch Uploader →
Automated Post-Sim CLI Script
# 1. Package OOTP CSV dumps & BNN HTML reports after advancing the sim
Compress-Archive -Path "./import_export/csv/*", "./news/html/*" -DestinationPath "./sim_export.zip" -Force

# 2. Initiate Sim Cycle & obtain presigned Cloudflare R2 PUT URL for master .lg.tar.gz
$init = Invoke-RestMethod -Method Post \
  -Uri "https://ootpplus.com/api/v1/leagues/continental-bba/sims/initiate" \
  -Headers @{ "X-League-Sync-Key" = "ootp_sync_continental-bba_9f8a2b4c1d7e" }

# 3. Upload master league file directly to Cloudflare R2 ($0 egress)
Invoke-RestMethod -Method Put -Uri $init.presignedMasterUploadUrl -InFile "./continental-bba.lg.tar.gz"

# 4. Stream CSV + BNN .zip to compile immutable continental-bba_cN.db & reset 30-team export grid
curl.exe -X POST "https://ootpplus.com/api/v1/leagues/continental-bba/sims/upload?wait=true" \
  -H "X-League-Sync-Key: ootp_sync_continental-bba_9f8a2b4c1d7e" \
  -F "file=@sim_export.zip"
STEP 04 • SIGNALR LEAGUEOPSHUB & FTPS RECEIPTS (~30 SEC)

Verify the Real-Time 30-Team GM Export Grid & Discord Webhooks

When any GM clicks Export Team via FTP inside OOTP, the chrooted FTPS gateway verifies team_<id>.ootp, computes its SHA-256 digest, and broadcasts ExportReceived over SignalR in under 1 second.

Simulate Live FTPS `team_1.ootp` Receipt & SignalR Push
Test end-to-end verification and inspect the live 30-team grid.
Open GM Export Grid →
STEP 05 • TOKENIZED RBAC & RECRUITING (~60 SEC)

Onboard Front Office GMs & Open Recruiting Seats

Bind each human GM to their exact OOTP team_id using 1-click /invite/[token] claim links, or publish vacant franchises to /recruiting with automatic SQLite payroll, farm rank, and Pythagorean contention metrics.

Manage All GMs →
STEP 06 • 14 ANALYTICAL HUBS & SMART-EMBEDS (~30 SEC)

Launch Your 14 Broadcast Hubs & Publish Frozen Smart-Embed Lore

Your online league is ready for Opening Day! Every post in your League Lore Stream can freeze live SQLite cards to the exact sim cycle so historical trade recaps never suffer screenshot rot.

@player[1001]
Savant Player Dossier

xwOBA percentiles, WAR & 20-80 scouting bars.

#team[1]
Franchise Club Card

W-L record, Pythagorean diff, payroll & wRC+.

/spray[player=1001,year=2026]
3D Ballpark Spray Chart

Polar Statcast BBE vectors & wall dimensions.

/boxscore[game=5001]
Linescore & Replay

R/H/E box score + 1-click pitch-by-pitch replay.