[{"data":1,"prerenderedAt":514},["ShallowReactive",2],{"navigation_docs":3,"-interface-courts-integrations-unifi-access-vpn":224,"-interface-courts-integrations-unifi-access-vpn-surround":509},[4,157,184],{"title":5,"path":6,"stem":7,"children":8,"page":156},"Interface","\u002Finterface","1.interface",[9,53,61,68,75,82,90,97,104,111,132,139,145],{"title":10,"path":11,"stem":12,"children":13,"icon":15},"Courts","\u002Finterface\u002Fcourts","1.interface\u002F01.courts\u002F1.index",[14,16],{"title":10,"path":11,"stem":12,"icon":15},"sporty-court-sport",{"title":17,"path":18,"stem":19,"children":20,"icon":22},"Access control and lights","\u002Finterface\u002Fcourts\u002Fintegrations","1.interface\u002F01.courts\u002F5.integrations\u002F1.index",[21,23,28,33],{"title":17,"path":18,"stem":19,"icon":22},"sporty-toggle-large-on",{"title":24,"path":25,"stem":26,"icon":27},"Weblock","\u002Finterface\u002Fcourts\u002Fintegrations\u002Fweblock","1.interface\u002F01.courts\u002F5.integrations\u002F2.weblock","sporty-door-open",{"title":29,"path":30,"stem":31,"icon":32},"Shelly","\u002Finterface\u002Fcourts\u002Fintegrations\u002Fshelly","1.interface\u002F01.courts\u002F5.integrations\u002F3.shelly","sporty-bolt",{"title":34,"path":35,"stem":36,"children":37,"icon":27},"UniFi Access","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F1.index",[38,40,44,49],{"title":39,"path":35,"stem":36,"icon":27},"Overview",{"title":41,"path":42,"stem":43,"icon":22},"Connect the VPN","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fvpn","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F2.vpn",{"title":45,"path":46,"stem":47,"icon":48},"Create an API token","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fapi-token","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F3.api-token","sporty-gear",{"title":50,"path":51,"stem":52,"icon":15},"Set it up in Club Admin","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fclub-admin","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F4.club-admin",{"title":54,"path":55,"stem":56,"children":57,"icon":60},"Members","\u002Finterface\u002Fmembers","1.interface\u002F02.members\u002F1.index",[58],{"title":59,"path":55,"stem":56,"icon":60},"Member management","sporty-user-group",{"title":62,"path":63,"stem":64,"children":65,"icon":67},"Memberships","\u002Finterface\u002Fmemberships","1.interface\u002F03.memberships\u002F1.index",[66],{"title":62,"path":63,"stem":64,"icon":67},"sporty-id-card",{"title":69,"path":70,"stem":71,"children":72,"icon":74},"Leagues","\u002Finterface\u002Fleagues","1.interface\u002F04.leagues\u002F1.index",[73],{"title":69,"path":70,"stem":71,"icon":74},"sporty-ranking-star",{"title":76,"path":77,"stem":78,"children":79,"icon":81},"Tournaments","\u002Finterface\u002Ftournaments","1.interface\u002F05.tournaments\u002F1.index",[80],{"title":76,"path":77,"stem":78,"icon":81},"sporty-trophy",{"title":83,"path":84,"stem":85,"children":86,"icon":89},"Payments and subscriptions","\u002Finterface\u002Fpayments","1.interface\u002F06.payments\u002F1.index",[87],{"title":88,"path":84,"stem":85,"icon":89},"Payments","sporty-credit-card",{"title":91,"path":92,"stem":93,"children":94,"icon":96},"Shop","\u002Finterface\u002Fshop","1.interface\u002F07.shop\u002F1.index",[95],{"title":91,"path":92,"stem":93,"icon":96},"sporty-bag-shopping",{"title":98,"path":99,"stem":100,"children":101,"icon":103},"Schools and coaches","\u002Finterface\u002Fschools","1.interface\u002F08.schools\u002F1.index",[102],{"title":98,"path":99,"stem":100,"icon":103},"sporty-graduation-cap",{"title":105,"path":106,"stem":107,"children":108,"icon":110},"Emails","\u002Finterface\u002Femails","1.interface\u002F09.emails\u002F1.index",[109],{"title":105,"path":106,"stem":107,"icon":110},"sporty-envelope",{"title":112,"path":113,"stem":114,"children":115,"icon":117},"Video and cameras","\u002Finterface\u002Fvideo","1.interface\u002F10.video\u002F1.index",[116,118,122,127],{"title":112,"path":113,"stem":114,"icon":117},"sporty-camera-cctv",{"title":119,"path":120,"stem":121,"icon":117},"Dahua cameras","\u002Finterface\u002Fvideo\u002Fdahua","1.interface\u002F10.video\u002F2.dahua",{"title":123,"path":124,"stem":125,"icon":126},"Other RTMP cameras","\u002Finterface\u002Fvideo\u002Frtmp","1.interface\u002F10.video\u002F3.rtmp","sporty-video",{"title":128,"path":129,"stem":130,"icon":131},"Match analytics","\u002Finterface\u002Fvideo\u002Fanalytics","1.interface\u002F10.video\u002F4.analytics","sporty-chart-simple",{"title":133,"path":134,"stem":135,"children":136,"icon":138},"Reports","\u002Finterface\u002Freports","1.interface\u002F11.reports\u002F1.index",[137],{"title":133,"path":134,"stem":135,"icon":138},"sporty-chart-mixed",{"title":140,"path":141,"stem":142,"children":143,"icon":48},"Settings","\u002Finterface\u002Fsettings","1.interface\u002F12.settings\u002F1.index",[144],{"title":140,"path":141,"stem":142,"icon":48},{"title":146,"path":147,"stem":148,"children":149,"icon":151},"Social publishing","\u002Finterface\u002Fsocial","1.interface\u002F13.social\u002F1.index",[150,152],{"title":146,"path":147,"stem":148,"icon":151},"sporty-newspaper",{"title":153,"path":154,"stem":155,"icon":22},"Connecting channels","\u002Finterface\u002Fsocial\u002Fchannels","1.interface\u002F13.social\u002F2.channels",false,{"title":158,"path":159,"stem":160,"children":161,"icon":164},"Website","\u002Fwebsite","2.website\u002F1.index",[162,165,170,174,179],{"title":163,"path":159,"stem":160,"icon":164},"Website builder","sporty-browser",{"title":166,"path":167,"stem":168,"icon":169},"Pages, hero and footer","\u002Fwebsite\u002Fpages","2.website\u002F2.pages","sporty-file-lines",{"title":171,"path":172,"stem":173,"icon":151},"News and events","\u002Fwebsite\u002Fnews-and-events","2.website\u002F3.news-and-events",{"title":175,"path":176,"stem":177,"icon":178},"Coaches and gallery","\u002Fwebsite\u002Fcoaches-and-gallery","2.website\u002F4.coaches-and-gallery","sporty-images",{"title":180,"path":181,"stem":182,"icon":183},"FAQ and sponsors","\u002Fwebsite\u002Ffaq-and-sponsors","2.website\u002F5.faq-and-sponsors","sporty-circle-question",{"title":185,"path":186,"stem":187,"children":188,"icon":190},"OAuth & Sign in with Sporty","\u002Foauth","4.oauth\u002F1.index",[189,191,195,199,203,207,211,215,219],{"title":185,"path":186,"stem":187,"icon":190},"sporty-brackets-curly",{"title":192,"path":193,"stem":194,"icon":190},"Registering an application","\u002Foauth\u002Fclients","4.oauth\u002F2.clients",{"title":196,"path":197,"stem":198,"icon":190},"The authorization code flow","\u002Foauth\u002Fauthorization-code","4.oauth\u002F3.authorization-code",{"title":200,"path":201,"stem":202,"icon":190},"Scopes","\u002Foauth\u002Fscopes","4.oauth\u002F4.scopes",{"title":204,"path":205,"stem":206,"icon":190},"Sign in with Sporty","\u002Foauth\u002Fsign-in-with-sporty","4.oauth\u002F5.sign-in-with-sporty",{"title":208,"path":209,"stem":210,"icon":190},"The partner API","\u002Foauth\u002Fpartner-api","4.oauth\u002F6.partner-api",{"title":212,"path":213,"stem":214,"icon":190},"Syncing bookings","\u002Foauth\u002Fbooking-sync","4.oauth\u002F7.booking-sync",{"title":216,"path":217,"stem":218,"icon":190},"MCP and AI clients","\u002Foauth\u002Fmcp-and-ai-clients","4.oauth\u002F8.mcp-and-ai-clients",{"title":220,"path":221,"stem":222,"icon":223},"Agent checkout","\u002Foauth\u002Fagent-checkout","4.oauth\u002F9.agent-checkout","sporty-cart-shopping",{"id":225,"title":41,"body":226,"description":501,"extension":502,"links":503,"meta":504,"navigation":505,"path":42,"seo":506,"stem":43,"__hash__":508},"docs\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F2.vpn.md",{"type":227,"value":228,"toc":493},"minimark",[229,238,241,246,274,285,288,292,298,332,338,364,378,382,388,394,461,468,479,483],[230,231,232,233,237],"p",{},"Your console connects ",[234,235,236],"strong",{},"out"," to SportyPlus over WireGuard. You don't forward any ports or change\nyour internet router. This works even when the console sits behind another router, as it often\ndoes when the internet provider supplies the main router.",[230,239,240],{},"This page has three steps: downloading your club's file from Club Admin, importing it on the\nconsole, and one firewall rule. Your club's own network stays as it is: we never route to it, so it doesn't matter what\naddress range it uses, or whether another club uses the same one.",[242,243,245],"h2",{"id":244},"_1-download-your-clubs-wireguard-file","1. Download your club's WireGuard file",[230,247,248,249,252,253,256,257,260,261,265,266,269,270,273],{},"In ",[234,250,251],{},"Club Admin → Business → Integrations → UniFi Access",", press ",[234,254,255],{},"Create VPN connection"," under\n",[234,258,259],{},"VPN connection",". Your browser downloads a WireGuard configuration file (",[262,263,264],"code",{},".conf",") made for your\nclub, and the card shows your console's ",[234,267,268],{},"tunnel address",", for example ",[262,271,272],{},"10.200.0.3",". The console\naddress further down the page is filled in with it for you.",[230,275,276,277,280,281,284],{},"The file holds your club's private key, so ",[234,278,279],{},"treat it like a password",": don't forward it or post\nit anywhere. SportyPlus doesn't keep a copy, so you can download it only this once. If you lose it,\npress ",[234,282,283],{},"Download a new file",". That issues new keys, and the old file stops working within a\nminute.",[230,286,287],{},"The file only sends traffic for SportyPlus's own tunnel address through the tunnel. The rest of\nyour club's internet traffic keeps going out as it does today.",[242,289,291],{"id":290},"_2-import-it-on-the-console","2. Import it on the console",[230,293,248,294,297],{},[234,295,296],{},"UniFi Network"," on your console:",[299,300,301,313,323,329],"ol",{},[302,303,304,305,308,309,312],"li",{},"Open ",[234,306,307],{},"Settings → VPN → VPN Client",", and choose ",[234,310,311],{},"Create New",".",[302,314,315,316,319,320,312],{},"Pick ",[234,317,318],{},"WireGuard"," as the type and give it a name, for example ",[262,321,322],{},"SportyPlus",[302,324,325,326,328],{},"Upload the ",[262,327,264],{}," file we sent you, or paste its contents.",[302,330,331],{},"Save, and make sure the client is turned on.",[230,333,334,337],{},[234,335,336],{},"Don't"," create a traffic route or a policy route for this client. SportyPlus doesn't need any of\nyour traffic sent through it.",[339,340,341,348,349,352,353,356,357,359,360,363],"warning",{},[234,342,343,344,347],{},"\"Invalid DNS in ",[345,346,5],"span",{},". Use: DNS = IP Address\""," — UniFi won't import a WireGuard file\nwithout a ",[262,350,351],{},"DNS"," line, even though this tunnel doesn't use one. The files we send already contain\n",[262,354,355],{},"DNS = 1.1.1.1",". If you see this message, the file was edited or is an old one. Add the line\n",[262,358,355],{}," under ",[262,361,362],{},"[Interface]"," and upload it again, or ask us for a fresh file. A hostname or\nan empty value is rejected the same way.",[230,365,366,367,369,370,373,374,377],{},"Once it's saved, the console connects within a minute or two. The ",[234,368,259],{}," card in Club\nAdmin then shows ",[234,371,372],{},"Connected"," and when the console last made contact. Press ",[234,375,376],{},"Check again"," to\nrefresh it.",[242,379,381],{"id":380},"_3-allow-sportyplus-through-to-unifi-access","3. Allow SportyPlus through to UniFi Access",[230,383,384,385,312],{},"By default the console blocks traffic arriving through a VPN client, so this rule is required.\nWithout it SportyPlus reports that it ",[234,386,387],{},"could not reach the console",[230,389,248,390,393],{},[234,391,392],{},"UniFi Network → Settings → Security → Firewall",", add a rule:",[395,396,397,410],"table",{},[398,399,400],"thead",{},[401,402,403,407],"tr",{},[404,405,406],"th",{},"Setting",[404,408,409],{},"Value",[411,412,413,424,438,450],"tbody",{},[401,414,415,419],{},[416,417,418],"td",{},"Action",[416,420,421],{},[234,422,423],{},"Allow",[401,425,426,429],{},[416,427,428],{},"Source",[416,430,431,432,434,435],{},"the ",[234,433,322],{}," WireGuard VPN client, address ",[262,436,437],{},"10.200.0.1",[401,439,440,443],{},[416,441,442],{},"Destination",[416,444,445,446,449],{},"the console itself (",[234,447,448],{},"Gateway",")",[401,451,452,455],{},[416,453,454],{},"Protocol \u002F port",[416,456,457,460],{},[234,458,459],{},"TCP 12445"," only",[230,462,463,464,467],{},"Port ",[234,465,466],{},"12445"," is UniFi Access's API. Don't allow more than that: SportyPlus needs nothing else on\nyour network.",[469,470,471,472,475,476,478],"note",{},"The firewall screens differ between UniFi Network versions. On newer versions, rules are set\nbetween ",[234,473,474],{},"zones",": allow from the VPN zone to the Gateway zone. Whatever the screen looks like,\nthe rule is the same: from ",[262,477,437],{},", to the console itself, TCP 12445, allow.",[242,480,482],{"id":481},"when-its-done","When it's done",[230,484,485,486,488,489,312],{},"Once the card shows ",[234,487,372],{}," and the rule is in place,\n",[490,491,492],"a",{"href":46},"create the API token",{"title":494,"searchDepth":495,"depth":495,"links":496},"",2,[497,498,499,500],{"id":244,"depth":495,"text":245},{"id":290,"depth":495,"text":291},{"id":380,"depth":495,"text":381},{"id":481,"depth":495,"text":482},"Let your UniFi console open a WireGuard tunnel to SportyPlus, and allow SportyPlus through to UniFi Access","md",null,{},{"icon":22},{"title":507,"description":501},"UniFi Access — connect the VPN","OPMFTBQtZciyvK7UpX5bvREw1G2q7zFtm1XWzO6xSxc",[510,512],{"title":39,"path":35,"stem":36,"description":511,"icon":27,"children":-1},"Connect a UniFi Access door system to SportyPlus, so booked players get in with their own PIN",{"title":45,"path":46,"stem":47,"description":513,"icon":48,"children":-1},"The UniFi Access API token SportyPlus needs, and the permissions to give it",1790691909306]