CINXE.COM

Custom OIDC providers · Tailscale Docs

<!DOCTYPE html><html lang="en" class="__className_943d4e"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/d3470cfc68a51edd-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/425118351a398cbb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/9ea45c8bb7328bdd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9309a5f1832f1a93.js"/><script src="/_next/static/chunks/fd9d1056-482290aea9828141.js" async=""></script><script src="/_next/static/chunks/7023-337611230f8b70ed.js" async=""></script><script src="/_next/static/chunks/main-app-490330e0be22d2d6.js" async=""></script><script src="/_next/static/chunks/231-07416b1f957d0db7.js" async=""></script><script src="/_next/static/chunks/app/kb/%5B%5B...params%5D%5D/error-d79b6b3fc14d36f0.js" async=""></script><script src="/_next/static/chunks/app/layout-253fffffc2b8aa63.js" async=""></script><script src="/_next/static/chunks/5828-bdbd767bd529f5f9.js" async=""></script><script src="/_next/static/chunks/6257-dab7659271d81024.js" async=""></script><script src="/_next/static/chunks/919-6a91dc6f9f17ec66.js" async=""></script><script src="/_next/static/chunks/app/kb/layout-fda2441131486605.js" async=""></script><script src="/_next/static/chunks/1850-dd5ed91b5253b88f.js" async=""></script><script src="/_next/static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js" async=""></script><meta name="theme-color" content="#fff"/><title>Custom OIDC providers · Tailscale Docs</title><meta name="description" content="Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale."/><link rel="canonical" href="https://tailscale.com/kb/1240/sso-custom-oidc"/><meta property="og:title" content="Custom OIDC providers · Tailscale Docs"/><meta property="og:description" content="Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale."/><meta property="og:url" content="https://tailscale.com/kb/1240/sso-custom-oidc"/><meta property="og:site_name" content="Tailscale"/><meta property="og:image" content="https://tailscale.com/files/images/og-image.png"/><meta property="og:type" content="article"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@tailscale"/><meta name="twitter:title" content="Custom OIDC providers"/><meta name="twitter:description" content="Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale."/><meta name="twitter:image" content="https://tailscale.com/files/images/og-image.png"/><link rel="icon" href="/favicon.png" type="image/png"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body><header class="left-0 right-0 top-0 z-[100] h-[60px] transition-colors duration-300 lg:h-[66px] sticky bg-transparent"><div class="is-wide container flex items-center justify-between py-4 lg:py-3"><div class="flex gap-[35px]"><a class="w-[110px] transition-colors duration-200 text-heading-black" title="Homepage" href="/"><svg class="transition-colors duration-200 " width="100%" height="100%" viewBox="0 0 110 20" fill="none" xmlns="http://www.w3.org/2000/svg"><ellipse cx="2.44719" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="9.79094" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="2.44719" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="17.1269" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="9.79094" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="17.1269" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="2.44719" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="9.79094" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="17.1269" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><path d="M34.3979 18.458C35.0907 18.458 35.6536 18.3933 36.3248 18.2637V15.7584C35.9134 15.9096 35.4588 15.9528 35.0258 15.9528C33.965 15.9528 33.5753 15.4344 33.5753 14.441V9.34402H36.3248V6.83875H33.5753V3.12403H30.5443V6.83875H28.5742V9.34402H30.5443V14.7217C30.5443 17.0974 31.8 18.458 34.3979 18.458Z" fill="#242424"></path><path d="M41.2747 18.458C42.8984 18.458 43.9809 17.9181 44.5222 17.0758C44.5655 17.443 44.6954 17.9397 44.8686 18.2421H47.5964C47.4449 17.7237 47.3366 16.903 47.3366 16.3631V10.4455C47.3366 8.005 45.583 6.62277 42.617 6.62277C40.3654 6.62277 38.6118 7.46507 37.6376 8.69611L39.3696 10.4023C40.149 9.5384 41.1448 9.08486 42.3572 9.08486C43.8294 9.08486 44.4789 9.58159 44.4789 10.3159C44.4789 10.9422 44.0459 11.3742 41.7077 11.3742C39.4562 11.3742 37.183 12.3028 37.183 14.8945C37.183 17.2918 38.9149 18.458 41.2747 18.458ZM41.8809 16.1687C40.7118 16.1687 40.1706 15.672 40.1706 14.7865C40.1706 14.009 40.8201 13.4907 41.9026 13.4907C43.6345 13.4907 44.1108 13.3827 44.4789 13.0155V13.9442C44.4789 15.1753 43.4397 16.1687 41.8809 16.1687Z" fill="#242424"></path><path d="M49.3069 5.39173H52.4677V2.5625H49.3069V5.39173ZM49.3718 18.2421H52.4028V6.83875H49.3718V18.2421Z" fill="#242424"></path><path d="M54.6109 18.2421H57.6418V2.90805H54.6109V18.2421Z" fill="#242424"></path><path d="M63.9416 18.458C67.2757 18.458 68.986 16.7087 68.986 14.8729C68.986 13.2099 68.1417 11.9789 65.3705 11.4821C63.4221 11.1366 62.2097 10.7046 62.2097 10.0351C62.2097 9.45201 62.9025 9.04166 64.0715 9.04166C65.1107 9.04166 65.9767 9.38722 66.6262 10.1431L68.553 8.52333C67.5788 7.31389 65.9767 6.62277 64.0715 6.62277C61.1489 6.62277 59.3303 8.17777 59.3303 10.0783C59.3303 12.1517 61.2354 13.0803 63.2922 13.4475C65.0025 13.7499 65.9551 14.0738 65.9551 14.8081C65.9551 15.4344 65.2839 15.9528 64.0066 15.9528C62.7509 15.9528 61.7767 15.3696 61.322 14.5058L58.7674 15.7152C59.3952 17.2702 61.5385 18.458 63.9416 18.458Z" fill="#242424"></path><path d="M75.7621 18.458C77.9271 18.458 79.4859 17.5942 80.6549 15.6504L78.2302 14.4194C77.7755 15.3265 77.0395 15.9528 75.7621 15.9528C73.8353 15.9528 72.7961 14.3978 72.7961 12.5188C72.7961 10.6399 73.9003 9.12805 75.7621 9.12805C76.9312 9.12805 77.7106 9.75437 78.1652 10.7046L80.6116 9.40882C79.7889 7.61625 78.1652 6.62277 75.7621 6.62277C71.8003 6.62277 69.7652 9.5168 69.7652 12.5188C69.7652 15.78 72.2333 18.458 75.7621 18.458Z" fill="#242424"></path><path d="M85.4829 18.458C87.1067 18.458 88.1891 17.9181 88.7304 17.0758C88.7737 17.443 88.9036 17.9397 89.0768 18.2421H91.8046C91.6531 17.7237 91.5448 16.903 91.5448 16.3631V10.4455C91.5448 8.005 89.7912 6.62277 86.8252 6.62277C84.5737 6.62277 82.8201 7.46507 81.8458 8.69611L83.5778 10.4023C84.3572 9.5384 85.353 9.08486 86.5654 9.08486C88.0376 9.08486 88.6871 9.58159 88.6871 10.3159C88.6871 10.9422 88.2541 11.3742 85.9159 11.3742C83.6644 11.3742 81.3912 12.3028 81.3912 14.8945C81.3912 17.2918 83.1231 18.458 85.4829 18.458ZM86.0891 16.1687C84.9201 16.1687 84.3788 15.672 84.3788 14.7865C84.3788 14.009 85.0283 13.4907 86.1108 13.4907C87.8427 13.4907 88.319 13.3827 88.6871 13.0155V13.9442C88.6871 15.1753 87.6479 16.1687 86.0891 16.1687Z" fill="#242424"></path><path d="M93.3263 18.2421H96.3573V2.90805H93.3263V18.2421Z" fill="#242424"></path><path d="M103.631 18.458C105.861 18.458 107.658 17.5726 108.654 15.996L106.359 14.5274C105.753 15.4776 104.952 15.996 103.631 15.996C102.138 15.996 101.055 15.1753 100.774 13.5771H109.39V12.5188C109.39 9.5168 107.55 6.62277 103.61 6.62277C99.8643 6.62277 97.8293 9.5384 97.8293 12.5404C97.8293 16.8167 101.055 18.458 103.631 18.458ZM100.882 11.2014C101.358 9.75437 102.354 9.08486 103.675 9.08486C105.168 9.08486 106.078 9.97034 106.381 11.2014H100.882Z" fill="#242424"></path></svg></a><nav class="relative hidden lg:flex lg:gap-6"><div class="fixed bottom-0 left-0 right-0 z-[90] h-screen w-full transition duration-200 pointer-events-none opacity-0 top-[120px] bg-transparent"></div><div role="button" aria-haspopup="true" tabindex="0" class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Product&quot;}"><span>Product</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></div><div role="button" aria-haspopup="true" tabindex="0" class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Solutions&quot;}"><span>Solutions</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></div><a class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Enterprise&quot;}" href="/enterprise"><span>Enterprise</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></a><a class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Customers&quot;}" href="/customers"><span>Customers</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></a><a class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Docs&quot;}" href="/kb/1017/install"><span>Docs</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></a><a class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Blog&quot;}" href="/blog"><span>Blog</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></a><a class="group relative text-[14px] font-medium leading-normal tracking-[-0.28px] transition-colors duration-300 text-heading-black/80 hover:text-heading-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Pricing&quot;}" href="/pricing"><span>Pricing</span><div class="absolute bottom-[-6px] left-[25%] right-0 z-[100] flex h-[3px] w-[50%] items-center justify-center rounded-[5px] opacity-0 group-hover:opacity-100 bg-heading-black/80"></div></a></nav></div><div class="hidden lg:flex lg:items-center lg:gap-[25px]"><a class="t-14 font-medium opacity-80 transition-colors duration-300 text-heading-black/80 hover:text-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Download&quot;}" href="/download">Download</a><a class="t-14 font-medium opacity-80 transition-colors duration-300 text-heading-black/80 hover:text-black/100" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Log in&quot;}" href="https://login.tailscale.com/welcome">Log in</a><a data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Get started&quot;}" href="https://login.tailscale.com/start"><div class="inline-flex shrink-0 border transition-colors duration-200 w-full xs:w-auto items-center justify-center text-center relative focus:outline-none group transition-all overflow-hidden font-body font-medium rounded-lg group gap-[11px] py-2 px-[17px] leading-[1.46] tracking-[-0.16px] transition-colors duration-300 bg-heading-black border-heading-black text-white hover:bg-black-4 hover:border-black-4 "><div>Get started</div></div></a></div><button type="button" aria-label="Open Menu" class="flex lg:hidden"><svg width="55" height="30" viewBox="0 0 55 30" fill="none" xmlns="http://www.w3.org/2000/svg"><rect class="fill-black-4" x="0.5" y="0.5" width="54" height="29" rx="5.5"></rect><line class="origin-center transition duration-300 rotate-0" x1="17" y1="11.5" x2="38" y2="11.5" stroke="white"></line><line class="origin-center transition duration-300 rotate-0" x1="17" y1="17.5" x2="38" y2="17.5" stroke="white"></line><rect x="0.5" y="0.5" width="54" height="29" rx="5.5" stroke="#242424"></rect></svg></button></div></header><div class="fixed inset-0 z-[90] h-full w-full overflow-auto bg-white px-5 pb-20 pt-24 transition-opacity duration-200 will-change-[opacity] lg:hidden pointer-events-none opacity-0"><div class="space-y-[22px]"><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><div class="t-20 flex w-full items-center justify-between font-medium "><span>Product</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 rotate-90 bg-black-4 text-white"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></div><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><div class="t-14 relative z-[10] mb-2 text-[#706E6D] lg:mb-[15px] lg:ml-3">Meet Tailscale</div><ul><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;How it works&quot;}" href="/blog/how-tailscale-works"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">How it works</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Why Tailscale&quot;}" href="/why-tailscale"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Why Tailscale</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;WireGuard® for Enterprises&quot;}" href="/wireguard-vpn"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">WireGuard® for Enterprises</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Bring Tailscale to Work&quot;}" href="/bring-tailscale-to-work"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Bring Tailscale to Work</div></div></a></li></ul></div><div class="flex-1 lg:min-w-[266px]"><div class="t-14 relative z-[10] mb-2 text-[#706E6D] lg:mb-[15px] lg:ml-3">Explore</div><ul><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Integrations&quot;}" href="/integrations"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Integrations</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Features&quot;}" href="/features"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Features</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Compare Tailscale&quot;}" href="/compare"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Compare Tailscale</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Partnerships&quot;}" href="/partnerships"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Partnerships</div></div></a></li></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><div class="t-20 flex w-full items-center justify-between font-medium "><span>Solutions</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 rotate-90 bg-black-4 text-white"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></div><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><div class="t-14 relative z-[10] mb-2 text-[#706E6D] lg:mb-[15px] lg:ml-3">By use-case</div><ul><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Remote Access&quot;}" href="/use-cases/remote-access"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Remote Access</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Site-to-site Networking&quot;}" href="/use-cases/site-to-site-networking"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Site-to-site Networking</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Multi-Cloud Networking&quot;}" href="/use-cases/multi-cloud-networking"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Multi-Cloud Networking</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Kubernetes Networking&quot;}" href="/use-cases/kubernetes"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Kubernetes Networking</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Edge &amp; IoT Deployments&quot;}" href="/use-cases/iot"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Edge &amp; IoT Deployments</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Zero Trust Networking&quot;}" href="/use-cases/zero-trust-networking"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Zero Trust Networking</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;AI Workloads&quot;}" href="/use-cases/ai"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">AI Workloads</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Secure SaaS&quot;}" href="/use-cases/secure-saas"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Secure SaaS</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Business VPN&quot;}" href="/use-cases/business-vpn"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Business VPN</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Homelab&quot;}" href="/use-cases/homelab"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Homelab</div></div></a></li></ul></div><div class="flex-1 lg:min-w-[266px]"><div class="t-14 relative z-[10] mb-2 text-[#706E6D] lg:mb-[15px] lg:ml-3">By role</div><ul><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;DevOps&quot;}" href="/solutions/devops"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">DevOps</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;IT&quot;}" href="/solutions/it"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">IT</div></div></a></li><li class="group relative whitespace-nowrap"><a class="relative z-[10] inline-block w-full rounded-lg px-1 py-2 hover:bg-[#F9F7F6] lg:p-[12px]" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Security&quot;}" href="/solutions/security"><div class="flex items-center gap-2"><div class="t-16 relative z-[10] text-heading-black">Security</div></div></a></li></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/enterprise"><span>Enterprise</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><ul></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/customers"><span>Customers</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><ul></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/kb/1017/install"><span>Docs</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><ul></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/blog"><span>Blog</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><ul></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/pricing"><span>Pricing</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"><div class="left-[-110px] top-[57px] z-[100] flex flex-col justify-between gap-8 rounded-2xl bg-white py-[30px] will-change-transform lg:absolute lg:flex-row lg:gap-[50px] lg:border lg:px-[30px] xl:left-[-40px]" style="opacity:0"><div class="flex-1 lg:min-w-[266px]"><ul></ul></div></div></div></div><div class="relative overflow-hidden border-b border-stroke-grey pb-6 "><a class="t-20 flex w-full items-center justify-between font-medium " href="/download"><span>Download</span><span class="flex h-[22px] w-[22px] items-center justify-center rounded-full text-black transition-transform duration-300 -rotate-0 bg-grey-2"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.83344 7.82482L8.83656 4.99835L5.83344 2.17188L5.24469 2.72658L7.24156 4.60599H1.16406V5.3907H7.24156L5.24469 7.27011L5.83344 7.82482Z" fill="currentColor"></path></svg></span></a><div class="flex flex-col transition duration-300 will-change-[height] h-0 opacity-0"></div></div></div><a class="mt-[42px] block" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Get started&quot;}" href="https://login.tailscale.com/start"><div class="inline-flex shrink-0 border transition-colors duration-200 w-full xs:w-auto items-center justify-center text-center relative focus:outline-none group transition-all overflow-hidden font-body font-medium rounded-lg group gap-[11px] py-2 px-[17px] leading-[1.46] tracking-[-0.16px] !w-full py-3 bg-heading-black border-heading-black text-white hover:bg-black-4 hover:border-black-4 "><div>Get started</div></div></a><a class="mt-[15px] block" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Login&quot;}" href="https://login.tailscale.com/welcome"><div class="inline-flex shrink-0 border transition-colors duration-200 w-full xs:w-auto items-center justify-center text-center relative focus:outline-none group transition-all overflow-hidden font-body font-medium rounded-lg group gap-[11px] py-2 px-[17px] leading-[1.46] tracking-[-0.16px] !w-full py-3 bg-grey-3 border-grey-3 text-heading-black"><div>Login</div></div></a><div class="t-14 mx-auto mt-[55px] max-w-[264px] text-center text-black-4/60"></div><div class="mt-[35px] flex flex-wrap justify-center gap-[14px]"></div><div class="mt-[60px] flex items-center justify-center gap-[8px]"><span class="scale-[1.1] text-heading-black transition-colors duration-300 hover:text-red-1"><svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.988281" width="28" height="28" rx="14" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.03169 9L13.0509 15.0672L8 20H9.13675L13.5587 15.6812L17.1317 20H21L15.6985 13.5916L20.3997 9H19.263L15.1906 12.9775L11.9001 9H8.03169ZM9.70337 9.75698H11.4805L19.3281 19.2429H17.551L9.70337 9.75698Z" fill="white"></path></svg></span><span class="scale-[1.1] text-heading-black transition-colors duration-300 hover:text-red-1"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.21875" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M12.434 19.6598L12.4179 14.8081H10.3008V12.7289H12.4179V11.3427C12.4179 9.47188 13.5974 8.57031 15.2966 8.57031C16.1106 8.57031 16.8101 8.62983 17.014 8.65643V10.6115L15.8355 10.612C14.9114 10.612 14.7324 11.0433 14.7324 11.6762V12.7289H17.3577L16.652 14.8081H14.7324V19.6598H12.434Z" fill="#fff"></path></svg></span><span class="scale-[1.1] text-heading-black transition-colors duration-300 hover:text-red-1"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.439453" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.68685 18.6518H10.8825V11.5871H8.68685V18.6518Z" fill="white"></path><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.50195 9.34036C8.50195 10.0352 9.07976 10.6143 9.77312 10.6143C10.4896 10.6143 11.0443 10.0584 11.0443 9.34036C11.0443 8.64547 10.4665 8.06641 9.77312 8.06641C9.07976 8.06641 8.50195 8.64547 8.50195 9.34036Z" fill="white"></path><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M16.8917 18.6518H19.0873V14.7836C19.0873 12.8843 18.6713 11.425 16.4525 11.425C15.3894 11.425 14.6729 12.0041 14.3724 12.56H14.3493V11.5871H12.2461V18.6518H14.4418V15.1542C14.4418 14.2509 14.6267 13.3475 15.7592 13.3475C16.8686 13.3475 16.8917 14.413 16.8917 15.2237V18.6518Z" fill="white"></path></svg></span><span class="scale-[1.1] text-heading-black transition-colors duration-300 hover:text-red-1"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.658203" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M19.6754 11.46C19.5368 10.5863 19.121 9.98138 18.1506 9.84696C16.6258 9.57813 14.2693 9.57812 14.2693 9.57812C14.2693 9.57812 11.9128 9.57813 10.388 9.84696C9.4177 9.98138 8.93254 10.5863 8.86323 11.46C8.72461 12.3337 8.72461 13.6106 8.72461 13.6106C8.72461 13.6106 8.72461 14.8876 8.86323 15.7613C9.00185 16.635 9.4177 17.2399 10.388 17.3743C11.9128 17.6432 14.2693 17.6432 14.2693 17.6432C14.2693 17.6432 16.6258 17.6432 18.1506 17.3743C19.121 17.1727 19.5368 16.635 19.6754 15.7613C19.814 14.8876 19.814 13.6106 19.814 13.6106C19.814 13.6106 19.814 12.3337 19.6754 11.46ZM12.8831 15.6269V11.5944L16.3486 13.6106L12.8831 15.6269Z" fill="white"></path></svg></span></div><div class="t-14 mx-auto mt-10 max-w-[264px] text-center text-black-4/60"> <!-- -->© <!-- -->2024<!-- --> </div></div><main class="scope-kb is-wide container"><div class="grid grid-cols-10 gap-x-8 pt-4 md:pt-8"><aside class="js-docHighlight col-span-10 md:col-span-3 md:row-span-2 xl:col-span-2"><div class="relative hidden h-full md:block"><div class="sticky top-[68px] -mt-2 px-1"><div class="absolute inset-x-0 h-4 w-full from-white top-0 bg-gradient-to-b"></div><ul class="flex max-h-[90vh] flex-col gap-1 overflow-y-auto pb-4 pt-2 text-sm"><li data-slug="start"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1346/start">Start</a><ul class="flex flex-col gap-0.5"><li data-slug="install" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1017/install"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Quickstart</span></a></li><li data-slug="installation" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1347/installation"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Install Tailscale</span></a></li><li data-slug="quick-guides" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1415/quick-guides"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Quick guides</span></a></li><li data-slug="sso-providers" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1013/sso-providers"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg> <span>Set up an identity provider</span></a><ul class="flex flex-col gap-0.5"><li data-slug="sso-google" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1199/sso-google"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Google</span></a></li><li data-slug="sso-microsoft" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1285/sso-microsoft"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Microsoft Entra ID</span></a></li><li data-slug="sso-okta" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1066/sso-okta"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Okta</span></a></li><li data-slug="sso-github" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1284/sso-github"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>GitHub</span></a></li><li data-slug="sso-apple" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1283/sso-apple"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Apple</span></a></li><li data-slug="sso-onelogin" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1070/sso-onelogin"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>OneLogin</span></a></li><li data-slug="user-group-provisioning" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1290/user-group-provisioning"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>User &amp; group provisioning</span></a></li><li data-slug="sso-custom-oidc" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 bg-stone-100 hover:bg-stone-200" href="/kb/1240/sso-custom-oidc"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg> <span>Custom OIDC providers</span></a></li><li data-slug="multifactor-auth" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1075/multifactor-auth"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Enable 2FA and MFA</span></a></li></ul></li><li data-slug="what-is-tailscale" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1151/what-is-tailscale"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>What is Tailscale?</span></a></li></ul></li><li data-slug="guides"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1348/guides">How-to Guides</a><ul class="flex flex-col gap-0.5"><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1350/manage">Manage Access</a><ul class="flex flex-col gap-0.5"><li data-slug="access-control" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1393/access-control"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage access control</span></a></li><li data-slug="manage-devices" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1372/manage-devices"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage devices</span></a></li><li data-slug="manage-users" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1373/manage-users"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage users</span></a></li><li data-slug="tailnet-lock" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1226/tailnet-lock"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailnet lock</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1351/route">Route Traffic</a><ul class="flex flex-col gap-0.5"><li data-slug="subnets" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1019/subnets"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up a subnet router</span></a></li><li data-slug="exit-nodes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1103/exit-nodes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up an exit node</span></a></li><li data-slug="app-connectors" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1281/app-connectors"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up an app connector</span></a></li><li data-slug="dns" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1054/dns"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use DNS</span></a></li><li data-slug="magicdns" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1081/magicdns"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up MagicDNS</span></a></li><li data-slug="high-availability" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1115/high-availability"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up high availability</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1352/servers">Set Up Servers</a><ul class="flex flex-col gap-0.5"><li data-slug="set-up-servers" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1245/set-up-servers"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up a server</span></a></li><li data-slug="tags" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1068/tags"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use tags</span></a></li><li data-slug="cloud-init" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1293/cloud-init"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Install Tailscale with cloud-init</span></a></li><li data-slug="auth-keys" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1085/auth-keys"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use auth keys</span></a></li><li data-slug="tailscale-ssh" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1193/tailscale-ssh"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use Tailscale SSH</span></a></li><li data-slug="enabling-https" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1153/enabling-https"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up HTTPS certificates</span></a></li><li data-slug="ephemeral-nodes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1111/ephemeral-nodes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run an ephemeral node</span></a></li><li data-slug="run-unattended" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1088/run-unattended"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run unattended</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1354/share">Access &amp; Share Services</a><ul class="flex flex-col gap-0.5"><li data-slug="services" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1100/services"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>View services</span></a></li><li data-slug="sharing" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1084/sharing"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Share nodes</span></a></li><li data-slug="taildrop" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1106/taildrop"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use Taildrop</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1353/share-web-server">Share a web server</a><ul class="flex flex-col gap-0.5"><li data-slug="funnel" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1223/funnel"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailscale Funnel</span></a></li><li data-slug="serve" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1312/serve"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailscale Serve</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1355/solutions">Solutions</a><ul class="flex flex-col gap-0.5"><li data-slug="vscode-ipad" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1166/vscode-ipad"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Code from your iPad</span></a></li><li data-slug="secure-server-ubuntu" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1077/secure-server-ubuntu"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Lock down a server</span></a></li><li data-slug="pikvm" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1292/pikvm"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Access a PiKVM</span></a></li><li data-slug="pi-hole" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1114/pi-hole"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run a Pi-hole</span></a></li><li data-slug="ip-blocklist-relays" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1059/ip-blocklist-relays"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Secure external services</span></a></li><li data-slug="just-in-time-access" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1443/just-in-time-access"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Just-in-time access</span></a></li><li data-slug="ondemand-access" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1374/ondemand-access"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>On-demand access</span></a></li><li data-slug="automations" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1430/automations"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Automation</span></a></li></ul></li></ul></li><li data-slug="integrations"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1356/integrations">Integrations</a><ul class="flex flex-col gap-0.5"><li data-slug="cloud-server" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/integrations/cloud-server"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Cloud servers</span></a></li><li data-slug="containers-and-virtualization" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1358/containers-and-virtualization"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Containers and virtualization</span></a></li><li data-slug="serverless" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1364/serverless"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Serverless apps</span></a></li><li data-slug="database" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1359/database"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Databases</span></a></li><li data-slug="remote-code" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1363/remote-code"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Remote environments</span></a></li><li data-slug="developer-tools" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1360/developer-tools"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Developer tools</span></a></li><li data-slug="firewall" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1361/firewall"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Firewalls</span></a></li><li data-slug="webserver" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1365/webserver"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Web servers</span></a></li><li data-slug="nas" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1307/nas"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>NAS</span></a></li></ul></li><li data-slug="faq"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1366/faq">FAQ</a></li><li data-slug="log-events"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1349/log-events">Logging, Streaming, and Events</a><ul class="flex flex-col gap-0.5"><li data-slug="log-mesh-traffic" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1011/log-mesh-traffic"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Logging overview</span></a></li><li data-slug="audit-logging" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1203/audit-logging"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Configuration audit logging</span></a></li><li data-slug="network-flow-logs" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1219/network-flow-logs"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Network flow logs</span></a></li><li data-slug="log-streaming" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1255/log-streaming"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Log streaming</span></a></li><li data-slug="tailscale-ssh-session-recording" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1246/tailscale-ssh-session-recording"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>SSH session recording</span></a></li><li data-slug="webhooks" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1213/webhooks"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Webhooks</span></a></li></ul></li><li data-slug="manage-account"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1431/manage-account">Manage Your Organization</a><ul class="flex flex-col gap-0.5"><li data-slug="contract-preferences" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1224/contract-preferences"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Contact preferences</span></a></li><li data-slug="pb-lp" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1375/pb-lp"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Pricing and billing</span></a></li><li data-slug="tailnet-name" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1217/tailnet-name"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailnet name</span></a></li><li data-slug="domain-ownership" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1259/domain-ownership"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Domain ownership</span></a></li></ul></li><li data-slug="reference"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1367/reference">Reference</a><ul class="flex flex-col gap-0.5"><li data-slug="acl-syntax" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1337/acl-syntax"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>ACL syntax</span></a></li><li data-slug="acl-samples" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1192/acl-samples"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>ACL samples</span></a></li><li data-slug="cli" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1080/cli"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>CLI</span></a></li><li data-slug="api" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1101/api"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>API</span></a></li><li data-slug="key-prefixes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1277/key-prefixes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Key prefixes</span></a></li><li data-slug="production-best-practices" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1300/production-best-practices"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Production best practices</span></a></li><li data-slug="shared-responsibility" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1212/shared-responsibility"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Shared responsibility</span></a></li><li data-slug="tech-overviews" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1376/tech-overviews"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Technical overviews</span></a></li><li data-slug="terminology-and-concepts" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1155/terminology-and-concepts"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Terminology and concepts</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="https://github.com/tailscale/tailscale"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>GitHub ↗</span></a></li></ul></li><li data-slug="get-support"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1432/get-support">Get Support</a><ul class="flex flex-col gap-0.5"><li data-slug="troubleshooting" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1023/troubleshooting"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Troubleshooting</span></a></li><li data-slug="support-options" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1250/support-options"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Support options</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/contact/support"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Contact support ↗</span></a></li><li data-slug="bug-report" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1227/bug-report"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Generate a bug report</span></a></li></ul></li><li data-slug="resources"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1368/resources">Resources</a><ul class="flex flex-col gap-0.5"><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/changelog"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Changelog ↗</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/compare"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Comparisons ↗</span></a></li><li data-slug="release-stages" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1167/release-stages"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Release stages</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/security"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Security ↗</span></a></li><li data-slug="versions" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1168/versions"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Versions</span></a></li><li data-slug="use-cases" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1377/use-cases"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use cases</span></a></li><li data-slug="invite-only-feature" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1222/invite-only-feature"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Invite only features</span></a></li></ul></li></ul><div class="absolute inset-x-0 h-4 w-full from-white bottom-0 bg-gradient-to-t"></div></div></div><div class="relative pb-6 md:hidden"><div class="flex items-center gap-4"><button type="button" class="text-gray-600 hover:text-gray-800" aria-label="Open docs navigation" aria-expanded="false" aria-controls="drawer"><svg class="icon block stroke-gray-800 stroke-2"><use href="/files/images/marketing/icons.svg#list"></use></svg></button><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Docs","item":"/kb"},{"@type":"ListItem","position":2,"name":"Start","item":"/kb/1346/start"},{"@type":"ListItem","position":3,"name":"Set up an identity provider","item":"/kb/1013/sso-providers"},{"@type":"ListItem","position":4,"name":"Custom OIDC providers","item":"/kb/1240/sso-custom-oidc"}]}</script><nav class="flex min-w-0 items-center gap-2 whitespace-nowrap text-sm font-medium"><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb">Docs</a><span class="select-none text-gray-500">›</span><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb/1346/start">Start</a><span class="select-none text-gray-500">›</span><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb/1013/sso-providers">Set up an identity provider</a><span class="select-none text-gray-500">›</span><span class="text-gray-800">Custom OIDC providers</span></nav></div><div id="drawer" role="dialog" aria-labelledby="dialog-label" class="left-0 top-0 z-[101] flex h-screen flex-col gap-8 bg-white p-4 shadow-md hidden"><div class="flex items-center justify-between"><h3 id="dialog-label" class="p-2 text-xl font-semibold">Documentation</h3><button type="button" class="text-gray-600 hover:text-gray-800" data-docs-menu="toggle" aria-expanded="false" aria-controls="drawer" aria-label="Close docs navigation"><svg class="icon block h-11 w-11 p-2"><use href="/files/images/marketing/icons.svg#x"></use></svg></button></div><div class="sticky top-[68px] -mt-2 px-1"><div class="absolute inset-x-0 h-4 w-full from-white top-0 bg-gradient-to-b"></div><ul class="flex max-h-[90vh] flex-col gap-1 overflow-y-auto pb-4 pt-2 text-sm"><li data-slug="start"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1346/start">Start</a><ul class="flex flex-col gap-0.5"><li data-slug="install" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1017/install"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Quickstart</span></a></li><li data-slug="installation" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1347/installation"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Install Tailscale</span></a></li><li data-slug="quick-guides" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1415/quick-guides"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Quick guides</span></a></li><li data-slug="sso-providers" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1013/sso-providers"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg> <span>Set up an identity provider</span></a><ul class="flex flex-col gap-0.5"><li data-slug="sso-google" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1199/sso-google"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Google</span></a></li><li data-slug="sso-microsoft" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1285/sso-microsoft"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Microsoft Entra ID</span></a></li><li data-slug="sso-okta" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1066/sso-okta"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Okta</span></a></li><li data-slug="sso-github" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1284/sso-github"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>GitHub</span></a></li><li data-slug="sso-apple" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1283/sso-apple"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Apple</span></a></li><li data-slug="sso-onelogin" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1070/sso-onelogin"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>OneLogin</span></a></li><li data-slug="user-group-provisioning" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1290/user-group-provisioning"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>User &amp; group provisioning</span></a></li><li data-slug="sso-custom-oidc" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 bg-stone-100 hover:bg-stone-200" href="/kb/1240/sso-custom-oidc"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"></polyline></svg> <span>Custom OIDC providers</span></a></li><li data-slug="multifactor-auth" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-6 hover:bg-stone-100" href="/kb/1075/multifactor-auth"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Enable 2FA and MFA</span></a></li></ul></li><li data-slug="what-is-tailscale" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1151/what-is-tailscale"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>What is Tailscale?</span></a></li></ul></li><li data-slug="guides"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1348/guides">How-to Guides</a><ul class="flex flex-col gap-0.5"><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1350/manage">Manage Access</a><ul class="flex flex-col gap-0.5"><li data-slug="access-control" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1393/access-control"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage access control</span></a></li><li data-slug="manage-devices" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1372/manage-devices"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage devices</span></a></li><li data-slug="manage-users" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1373/manage-users"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Manage users</span></a></li><li data-slug="tailnet-lock" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1226/tailnet-lock"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailnet lock</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1351/route">Route Traffic</a><ul class="flex flex-col gap-0.5"><li data-slug="subnets" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1019/subnets"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up a subnet router</span></a></li><li data-slug="exit-nodes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1103/exit-nodes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up an exit node</span></a></li><li data-slug="app-connectors" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1281/app-connectors"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up an app connector</span></a></li><li data-slug="dns" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1054/dns"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use DNS</span></a></li><li data-slug="magicdns" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1081/magicdns"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up MagicDNS</span></a></li><li data-slug="high-availability" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1115/high-availability"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up high availability</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1352/servers">Set Up Servers</a><ul class="flex flex-col gap-0.5"><li data-slug="set-up-servers" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1245/set-up-servers"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up a server</span></a></li><li data-slug="tags" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1068/tags"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use tags</span></a></li><li data-slug="cloud-init" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1293/cloud-init"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Install Tailscale with cloud-init</span></a></li><li data-slug="auth-keys" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1085/auth-keys"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use auth keys</span></a></li><li data-slug="tailscale-ssh" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1193/tailscale-ssh"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use Tailscale SSH</span></a></li><li data-slug="enabling-https" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1153/enabling-https"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Set up HTTPS certificates</span></a></li><li data-slug="ephemeral-nodes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1111/ephemeral-nodes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run an ephemeral node</span></a></li><li data-slug="run-unattended" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1088/run-unattended"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run unattended</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1354/share">Access &amp; Share Services</a><ul class="flex flex-col gap-0.5"><li data-slug="services" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1100/services"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>View services</span></a></li><li data-slug="sharing" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1084/sharing"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Share nodes</span></a></li><li data-slug="taildrop" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1106/taildrop"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use Taildrop</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1353/share-web-server">Share a web server</a><ul class="flex flex-col gap-0.5"><li data-slug="funnel" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1223/funnel"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailscale Funnel</span></a></li><li data-slug="serve" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1312/serve"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailscale Serve</span></a></li></ul></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 block pl-4 font-semibold hover:bg-stone-100" href="/kb/1355/solutions">Solutions</a><ul class="flex flex-col gap-0.5"><li data-slug="vscode-ipad" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1166/vscode-ipad"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Code from your iPad</span></a></li><li data-slug="secure-server-ubuntu" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1077/secure-server-ubuntu"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Lock down a server</span></a></li><li data-slug="pikvm" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1292/pikvm"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Access a PiKVM</span></a></li><li data-slug="pi-hole" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1114/pi-hole"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Run a Pi-hole</span></a></li><li data-slug="ip-blocklist-relays" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1059/ip-blocklist-relays"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Secure external services</span></a></li><li data-slug="just-in-time-access" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1443/just-in-time-access"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Just-in-time access</span></a></li><li data-slug="ondemand-access" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1374/ondemand-access"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>On-demand access</span></a></li><li data-slug="automations" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1430/automations"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Automation</span></a></li></ul></li></ul></li><li data-slug="integrations"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1356/integrations">Integrations</a><ul class="flex flex-col gap-0.5"><li data-slug="cloud-server" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/integrations/cloud-server"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Cloud servers</span></a></li><li data-slug="containers-and-virtualization" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1358/containers-and-virtualization"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Containers and virtualization</span></a></li><li data-slug="serverless" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1364/serverless"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Serverless apps</span></a></li><li data-slug="database" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1359/database"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Databases</span></a></li><li data-slug="remote-code" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1363/remote-code"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Remote environments</span></a></li><li data-slug="developer-tools" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1360/developer-tools"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Developer tools</span></a></li><li data-slug="firewall" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1361/firewall"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Firewalls</span></a></li><li data-slug="webserver" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1365/webserver"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Web servers</span></a></li><li data-slug="nas" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1307/nas"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>NAS</span></a></li></ul></li><li data-slug="faq"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1366/faq">FAQ</a></li><li data-slug="log-events"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1349/log-events">Logging, Streaming, and Events</a><ul class="flex flex-col gap-0.5"><li data-slug="log-mesh-traffic" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1011/log-mesh-traffic"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Logging overview</span></a></li><li data-slug="audit-logging" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1203/audit-logging"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Configuration audit logging</span></a></li><li data-slug="network-flow-logs" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1219/network-flow-logs"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Network flow logs</span></a></li><li data-slug="log-streaming" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1255/log-streaming"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Log streaming</span></a></li><li data-slug="tailscale-ssh-session-recording" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1246/tailscale-ssh-session-recording"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>SSH session recording</span></a></li><li data-slug="webhooks" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1213/webhooks"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Webhooks</span></a></li></ul></li><li data-slug="manage-account"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1431/manage-account">Manage Your Organization</a><ul class="flex flex-col gap-0.5"><li data-slug="contract-preferences" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1224/contract-preferences"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Contact preferences</span></a></li><li data-slug="pb-lp" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1375/pb-lp"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Pricing and billing</span></a></li><li data-slug="tailnet-name" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1217/tailnet-name"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Tailnet name</span></a></li><li data-slug="domain-ownership" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1259/domain-ownership"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Domain ownership</span></a></li></ul></li><li data-slug="reference"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1367/reference">Reference</a><ul class="flex flex-col gap-0.5"><li data-slug="acl-syntax" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1337/acl-syntax"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>ACL syntax</span></a></li><li data-slug="acl-samples" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1192/acl-samples"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>ACL samples</span></a></li><li data-slug="cli" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1080/cli"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>CLI</span></a></li><li data-slug="api" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1101/api"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>API</span></a></li><li data-slug="key-prefixes" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1277/key-prefixes"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Key prefixes</span></a></li><li data-slug="production-best-practices" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1300/production-best-practices"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Production best practices</span></a></li><li data-slug="shared-responsibility" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1212/shared-responsibility"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Shared responsibility</span></a></li><li data-slug="tech-overviews" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1376/tech-overviews"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Technical overviews</span></a></li><li data-slug="terminology-and-concepts" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1155/terminology-and-concepts"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Terminology and concepts</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="https://github.com/tailscale/tailscale"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>GitHub ↗</span></a></li></ul></li><li data-slug="get-support"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1432/get-support">Get Support</a><ul class="flex flex-col gap-0.5"><li data-slug="troubleshooting" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1023/troubleshooting"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Troubleshooting</span></a></li><li data-slug="support-options" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1250/support-options"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Support options</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/contact/support"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Contact support ↗</span></a></li><li data-slug="bug-report" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1227/bug-report"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Generate a bug report</span></a></li></ul></li><li data-slug="resources"><a class="rounded py-1 text-stone-800 hover:text-stone-900 mt-2 mb-0.5 block pl-2 font-semibold hover:bg-stone-100" href="/kb/1368/resources">Resources</a><ul class="flex flex-col gap-0.5"><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/changelog"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Changelog ↗</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/compare"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Comparisons ↗</span></a></li><li data-slug="release-stages" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1167/release-stages"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Release stages</span></a></li><li class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/security"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Security ↗</span></a></li><li data-slug="versions" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1168/versions"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Versions</span></a></li><li data-slug="use-cases" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1377/use-cases"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Use cases</span></a></li><li data-slug="invite-only-feature" class="flex flex-col gap-0.5"><a class="rounded py-1 text-stone-800 hover:text-stone-900 flex w-full items-start gap-1 pr-2 pl-4 hover:bg-stone-100" href="/kb/1222/invite-only-feature"><svg class="icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500 invisible relative top-1" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"></polyline></svg> <span>Invite only features</span></a></li></ul></li></ul><div class="absolute inset-x-0 h-4 w-full from-white bottom-0 bg-gradient-to-t"></div></div></div></div></aside><div class="col-span-10 mb-8 md:col-span-7 xl:col-span-6"><div class="max-w-3xl xl:mx-auto"><div class="pb-8"><!--$--><div class="relative md:max-w-lg"><form class="relative flex" autoComplete="off" autoCapitalize="off" autoCorrect="off" action="/kb"><input class="input hide-search-ui flex-shrink-0 flex-grow" type="search" placeholder="Search..." aria-label="Search" name="q" value=""/></form></div><!--/$--></div><article id="main-content" class="prism markdown-content js-docHighlight"><header class="mb-2 hidden md:flex"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Docs","item":"/kb"},{"@type":"ListItem","position":2,"name":"Start","item":"/kb/1346/start"},{"@type":"ListItem","position":3,"name":"Set up an identity provider","item":"/kb/1013/sso-providers"},{"@type":"ListItem","position":4,"name":"Custom OIDC providers","item":"/kb/1240/sso-custom-oidc"}]}</script><nav class="flex min-w-0 items-center gap-2 whitespace-nowrap text-sm font-medium"><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb">Docs</a><span class="select-none text-gray-500">›</span><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb/1346/start">Start</a><span class="select-none text-gray-500">›</span><a class="transition-color text-gray-600 hover:text-gray-800" href="/kb/1013/sso-providers">Set up an identity provider</a><span class="select-none text-gray-500">›</span><span class="text-gray-800">Custom OIDC providers</span></nav></header><h1 class="mb-4 text-4xl font-medium tracking-tight">Custom OIDC providers</h1><div class="ts-prose"><!--$--><p>Tailscale can integrate with identity providers that support OpenID Connect (OIDC). The steps provided in this article are required only for initial creation of a tailnet. After the signup process is completed, Tailscale will work like any other supported identity provider. For more information about OIDC, see <a href="https://openid.net/connect">Welcome to OpenID Connect</a>.</p> <h2 id="requirements"><a class="group flex items-center gap-2" href="#requirements"><span id="inner-text">Requirements</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <ul> <li>Proof of domain ownership and OIDC discovery using WebFinger.</li> <li>An identity provider with SSO via OIDC, that uses <code>openid</code>, <code>profile</code>, and <code>email</code> scopes, and provides for a callback URL.</li> <li>The OIDC provider must use either ES256 or RSA signatures; the minimum RSA key size is 2048 bits.</li> </ul> <h2 id="webfinger-setup"><a class="group flex items-center gap-2" href="#webfinger-setup"><span id="inner-text">WebFinger setup</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <p>To use a custom OIDC provider with Tailscale, you must set up a WebFinger endpoint on your domain. WebFinger verifies that you have administrative control over a domain and issuer URL discovery. For more detailed information about using WebFinger with OIDC issuer discovery, see <a href="https://www.rfc-editor.org/rfc/rfc7033#section-3.1">RFC 7033</a>.</p> <p>The WebFinger endpoint must be served at <code>https://${domain}/.well-known/webfinger</code> and must include the issuer URL within the JRD in the response. For example:</p> <div class="group relative overflow-hidden"><div class="absolute right-[5px] top-[21px] flex h-10 w-10 items-center justify-center rounded bg-grey-3 text-black opacity-0 transition-opacity duration-200 group-hover:opacity-100"><button type="button" aria-label="copy"><svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.8333 9.91667H14.0833C15.0038 9.91667 15.75 9.1705 15.75 8.25V2.41667C15.75 1.49619 15.0038 0.75 14.0833 0.75H8.25C7.3295 0.75 6.58333 1.49619 6.58333 2.41667V3.66667M2.41667 6.58333H8.25C9.1705 6.58333 9.91667 7.3295 9.91667 8.25V14.0833C9.91667 15.0038 9.1705 15.75 8.25 15.75H2.41667C1.49619 15.75 0.75 15.0038 0.75 14.0833V8.25C0.75 7.3295 1.49619 6.58333 2.41667 6.58333Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div><pre class="refractor language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">&quot;subject&quot;</span><span class="token operator">:</span> <span class="token string">&quot;acct:${email}&quot;</span><span class="token punctuation">,</span> <span class="token property">&quot;links&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">&quot;rel&quot;</span><span class="token operator">:</span> <span class="token string">&quot;http://openid.net/specs/connect/1.0/issuer&quot;</span><span class="token punctuation">,</span> <span class="token property">&quot;href&quot;</span><span class="token operator">:</span> <span class="token string">&quot;${issuer URL}&quot;</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> </code></pre></div> <p>The WebFinger endpoint must be hosted at the domain of the email address provided during setup. The issuer URL specified in your JRD must exactly match the issuer URL in your <code>/.well-known/openid-configuration</code>. For more information, refer to the <a href="https://www.rfc-editor.org/rfc/rfc7033#section-3.1">Identity Provider Discovery for OpenID Connect</a> section in the RFC 7033: WebFinger specification.</p> <p>To verify your WebFinger endpoint:</p> <ol> <li>In your browser, open the <a href="https://webfinger.net/lookup">WebFinger Lookup tool</a>.</li> <li>In the <strong>Lookup WebFinger</strong> search box, enter the user&#x27;s email address.</li> <li>Select the search icon.</li> <li>Examine the results to see if your endpoint is valid.</li> </ol> <div class="note border-grey-200 relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm"><span class="absolute left-3 top-3 inline-block h-[18px] w-[18px]"><svg xmlns="http://www.w3.org/2000/svg" width="18px" height="18px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg></span><p>Tailscale uses the issuer value from your WebFinger endpoint <em>only</em> during the initial setup. After you have started using a custom OIDC provider with Tailscale, to use a new issuer, update the issue in your WebFinger endpoint and then <a href="/contact/support">contact support</a> so we can finalize your integration with the new issuer.</p></div> <h2 id="identity-provider-setup"><a class="group flex items-center gap-2" href="#identity-provider-setup"><span id="inner-text">Identity provider setup</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <p>The identity provider used for your custom OIDC setup must comply with the OIDC specification and the Tailscale requirements.</p> <p><strong>Tailscale</strong> requires you to provide the following:</p> <ul> <li>Issuer URL retrieved from the WebFinger endpoint, described in the <a href="#webfinger-setup">previous section</a>.</li> <li>Client ID.</li> <li>Client secret from your identity provider.</li> </ul> <p><strong>Scopes</strong> specify the required information to include in the authentication request. The required scopes are <code>openid</code>, <code>profile</code>, and <code>email</code>. Tailscale requests the minimum number scopes required to operate, and the information on how we use your data can be found in our <a href="/privacy-policy">privacy policy</a>.</p> <p><strong>Prompts</strong> specify the requirements and behavior on the authentication page for the user. Prompts are optional, and the supported values within the Tailscale setup UI are <code>none</code>, <code>consent</code> (the default), <code>login</code>, and <code>select_account</code>. Note that individual identity providers or identity provider configuration may not support any or all of these values. For more information, refer to the OIDC <a href="https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest">Authentication Request</a> specification.</p> <p><strong>Callback URL</strong> must be configured in your identity provider settings, with the following URL:</p> <p><code>https://login.tailscale.com/a/oauth_response</code></p> <h3 id="additional-provider-configurations"><a class="group flex items-center gap-2" href="#additional-provider-configurations"><span id="inner-text">Additional provider configurations</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h3> <p>Specific identity providers may require additional configurations:</p> <table><tr><th><strong>Identity provider</strong></th><th><strong>Additional configurations needed</strong></th></tr><tr><td>Auth0</td><td>None</td></tr><tr><td>Authelia</td><td>Refer to the instructions in the <a href="https://www.authelia.com/integration/openid-connect/tailscale/">Authelia topic about Tailscale</a>.</td></tr><tr><td>Authentik</td><td>Use an <code>RS256</code> signing token as the signing key.</td></tr><tr><td>AWS Cognito</td><td>None</td></tr><tr><td>Codeberg</td><td>None</td></tr><tr><td>Dex</td><td>None</td></tr><tr><td>Duo</td><td>None</td></tr><tr><td>Gitea</td><td>None</td></tr><tr><td>GitLab</td><td>You must have an active GitLab session in your browser when signing up or in.</td></tr><tr><td>GitLab self-managed</td><td>You must have an active GitLab session in your browser when signing up or in.</td></tr><tr><td>JumpCloud</td><td>Service Provider Attribute Name for <code>email</code> and <code>name</code> mapped to <code>email</code> and <code>fullname</code> as a JumpCloud Attribute Name, and Client Authentication Type set to Client Secret Basic.</td></tr><tr><td>Keycloak</td><td>None</td></tr><tr><td>Ory Network</td><td>None</td></tr><tr><td>Ory self-hosted</td><td>None</td></tr><tr><td>Ping Identity</td><td>None</td></tr><tr><td>ZITADEL Cloud</td><td>None</td></tr><tr><td>ZITADEL Open Source</td><td>None</td></tr><tr><td>Zoho</td><td>You must set up a Server-based Applications client type. The Issuer URL for your application must match the data center region the application was created in. As examples, US-based applications must use <code><a href="https://accounts.zoho.com">https://accounts.zoho.com</a></code> whereas Canada-based applications must use <code><a href="https://accounts.zohocloud.ca">https://accounts.zohocloud.ca</a></code>. Your Zoho region is the domain you navigate to in order to view your Zoho Dashboard. If you have users based in different Zoho regions, you must check the <b>Use the same OAuth credentials for all data centers</b> box under the <b>Settings</b> tab for the application.</td></tr></table> <h2 id="tailscale-setup"><a class="group flex items-center gap-2" href="#tailscale-setup"><span id="inner-text">Tailscale setup</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <ol> <li> <p>Go to the <a href="https://login.tailscale.com/start/oidc"><strong>Sign up with OIDC</strong></a> page of the admin console.</p> <p>Or, when <a href="https://login.tailscale.com/start">signing up for your Tailscale account</a>, select <strong>Sign up with OIDC</strong>.</p> <figure class="bordered"><img alt="Select OIDC when signing up to Tailscale" loading="lazy" width="450" height="483" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsign-up-oidc.b699a417.png&amp;w=640&amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsign-up-oidc.b699a417.png&amp;w=1080&amp;q=75 2x" src="/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsign-up-oidc.b699a417.png&amp;w=1080&amp;q=75"/></figure> </li> <li> <p>In the <strong>Email address</strong> field, enter the administrator’s full email address. The domain in the email address must match the domain where the WebFinger endpoint is served, and the domain you will use for Tailscale.</p> </li> <li> <p>Select <strong>Get OIDC Issuer</strong>. If Tailscale is able to retrieve an issuer from your WebFinger endpoint, it will be displayed in the <strong>Issuer</strong> field.</p> </li> <li> <p>In the <strong>Client ID</strong> field, enter the ID that is generated for Tailscale by your OIDC provider.</p> </li> <li> <p>In the <strong>Client secret</strong> field, enter the client secret generated for Tailscale by your OIDC provider.</p> </li> <li> <p>(Optional) In the <strong>Prompts</strong> field, select one or more prompts to use for the user authentication flow. Note that you are not required to pick a value. These values are defined in the OIDC <a href="https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest">Authentication Request</a> specification. If you select <code>none</code>, you cannot select any other prompt.</p> </li> <li> <p>Select <strong>Sign up with OIDC</strong>. You will be redirected to your provider for authentication.</p> </li> <li> <p>Log in to your provider using the email you entered in step 2. Upon authentication, you will be redirected to the Tailscale admin console.</p> </li> </ol> <p>The user that configures OIDC for Tailscale becomes the first user in the <a href="/kb/1155/terminology-and-concepts#tailnet">tailnet</a> and <a class="!font-medium !text-blue-500 underline decoration-blue-50 underline-offset-4 hover:!text-blue-700 hover:!decoration-blue-500 focus-visible:no-underline" href="/kb/1138/user-roles">Owner</a> of the tailnet.</p> <h2 id="additional-tailnet-users"><a class="group flex items-center gap-2" href="#additional-tailnet-users"><span id="inner-text">Additional tailnet users</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <p>When additional users from the same domain log in to Tailscale, they can enter their email, and will be redirected for authentication to the recognized identity provider.</p> <h2 id="migrate-an-existing-tailnet"><a class="group flex items-center gap-2" href="#migrate-an-existing-tailnet"><span id="inner-text">Migrate an existing tailnet</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <p>If you have an existing tailnet, <a href="/contact/support">contact support</a> to migrate to a custom OIDC provider. You must have a WebFinger endpoint correctly configured on your domain.</p> <div class="note border-grey-200 relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm"><span class="absolute left-3 top-3 inline-block h-[18px] w-[18px]"><svg xmlns="http://www.w3.org/2000/svg" width="18px" height="18px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg></span><p>We can only migrate a Tailscale account that uses a custom domain to a custom OIDC provider. For example, @yourcustomdomain.com can be migrated, while non-custom domains such as @gmail.com cannot be migrated.</p></div> <h2 id="notes"><a class="group flex items-center gap-2" href="#notes"><span id="inner-text">Notes</span><span aria-hidden="true" class="inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link-2"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></span></a></h2> <ul> <li>Self-hosted identity providers must be publicly accessible on the internet. IP block listing may interfere with the ability to sign up or authenticate to your tailnet.</li> <li>User and group provisioning is not supported for custom OIDC provider setups.</li> <li>All users connecting to a tailnet from the same domain must use the same identity provider.</li> <li>When a user logs out of Tailscale, they are not logged out of their identity provider automatically. If users do not log out of the identity provider, then when they reconnect to Tailscale, they will not need to reauthenticate.</li> </ul><!--/$--></div></article><p class="mt-6 text-sm leading-snug text-gray-600">Last updated <!-- -->Aug 16, 2024</p></div></div><aside class="js-docHighlight col-span-10 h-full pb-8 md:col-span-8 md:col-start-4 xl:col-span-2 xl:col-start-auto"><div class="sticky top-16 flex flex-col gap-8"><div class="flex flex-col gap-2"><div class="tracking-wider text-xs font-semibold uppercase">On this page</div><ul class="flex flex-col gap-1 pt-1 leading-tight"><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#requirements">Requirements</a></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#webfinger-setup">WebFinger setup</a></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#identity-provider-setup">Identity provider setup</a><ul class="flex flex-col gap-1 pt-1 leading-tight pl-4"><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#additional-provider-configurations">Additional provider configurations</a></li></ul></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#tailscale-setup">Tailscale setup</a></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#additional-tailnet-users">Additional tailnet users</a></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#migrate-an-existing-tailnet">Migrate an existing tailnet</a></li><li><a class="text-sm !text-gray-500 transition-colors hover:!text-gray-900" href="#notes">Notes</a></li></ul></div></div></aside></div></main><footer class=" pb-16 md:pb-28 md:pt-20 "><div class="container grid gap-x-4 gap-y-8 pb-8 xxs:grid-cols-2 sm:grid-cols-3 sm:gap-5 md:pb-[110px] lg:grid-cols-6"><div><p class="t-16 !leading-[1.05] text-heading-black">Product</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/blog/how-tailscale-works">How it works</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/pricing">Pricing</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/integrations">Integrations</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/features">Features</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/compare">Compare Tailscale</a></div></div><div><p class="t-16 !leading-[1.05] text-heading-black">Use Cases</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/use-cases/business-vpn">Business VPN</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/use-cases/remote-access">Remote Access</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/use-cases/site-to-site-networking">Site-to-Site Networking</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/use-cases/homelab">Homelab</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/enterprise">Enterprise</a></div></div><div><p class="t-16 !leading-[1.05] text-heading-black">Resources</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/blog">Blog</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/events-webinars">Events & Webinars</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/partnerships">Partnerships</a></div></div><div><p class="t-16 !leading-[1.05] text-heading-black">Company</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/company">Company</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/careers">Careers</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/press">Press</a></div></div><div><p class="t-16 !leading-[1.05] text-heading-black">Help &amp; Support</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/contact/support">Support</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/contact/sales">Sales</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/security">Security</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/legal">Legal</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/opensource">Open Source</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/changelog">Changelog</a></div></div><div><p class="t-16 !leading-[1.05] text-heading-black">Learn</p><div class="mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4"><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/generate-ssh-keys">SSH keys</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/ssh-into-docker-container">Docker SSH</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/devsecops">DevSecOps</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/multicloud">Multicloud</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/blog/how-nat-traversal-works">NAT Traversal</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/blog/2021-09-private-dns-with-magicdns">MagicDNS</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/privileged-access-management">PAM</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn/principle-of-least-privilege">PoLP</a><a class="text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100" href="/learn">All articles</a></div></div></div><div class="container"><div class="grid grid-cols-1 gap-x-5 gap-y-8 border-t border-stroke-grey pt-8 xxs:grid-cols-2 md:grid-cols-12 md:pt-[70px] lg:gap-y-[60px]"><div class="xxs:col-span-2 md:col-span-4"><a class="block w-[160px]" title="Homepage" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer logo&quot;}" href="/"><svg class="transition-colors duration-200 " width="100%" height="100%" viewBox="0 0 110 20" fill="none" xmlns="http://www.w3.org/2000/svg"><ellipse cx="2.44719" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="9.79094" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="2.44719" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="17.1269" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="9.79094" cy="17.5077" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse cx="17.1269" cy="10.1796" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="2.44719" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="9.79094" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><ellipse opacity="0.2" cx="17.1269" cy="2.85924" rx="2.44719" ry="2.44128" fill="#242424"></ellipse><path d="M34.3979 18.458C35.0907 18.458 35.6536 18.3933 36.3248 18.2637V15.7584C35.9134 15.9096 35.4588 15.9528 35.0258 15.9528C33.965 15.9528 33.5753 15.4344 33.5753 14.441V9.34402H36.3248V6.83875H33.5753V3.12403H30.5443V6.83875H28.5742V9.34402H30.5443V14.7217C30.5443 17.0974 31.8 18.458 34.3979 18.458Z" fill="#242424"></path><path d="M41.2747 18.458C42.8984 18.458 43.9809 17.9181 44.5222 17.0758C44.5655 17.443 44.6954 17.9397 44.8686 18.2421H47.5964C47.4449 17.7237 47.3366 16.903 47.3366 16.3631V10.4455C47.3366 8.005 45.583 6.62277 42.617 6.62277C40.3654 6.62277 38.6118 7.46507 37.6376 8.69611L39.3696 10.4023C40.149 9.5384 41.1448 9.08486 42.3572 9.08486C43.8294 9.08486 44.4789 9.58159 44.4789 10.3159C44.4789 10.9422 44.0459 11.3742 41.7077 11.3742C39.4562 11.3742 37.183 12.3028 37.183 14.8945C37.183 17.2918 38.9149 18.458 41.2747 18.458ZM41.8809 16.1687C40.7118 16.1687 40.1706 15.672 40.1706 14.7865C40.1706 14.009 40.8201 13.4907 41.9026 13.4907C43.6345 13.4907 44.1108 13.3827 44.4789 13.0155V13.9442C44.4789 15.1753 43.4397 16.1687 41.8809 16.1687Z" fill="#242424"></path><path d="M49.3069 5.39173H52.4677V2.5625H49.3069V5.39173ZM49.3718 18.2421H52.4028V6.83875H49.3718V18.2421Z" fill="#242424"></path><path d="M54.6109 18.2421H57.6418V2.90805H54.6109V18.2421Z" fill="#242424"></path><path d="M63.9416 18.458C67.2757 18.458 68.986 16.7087 68.986 14.8729C68.986 13.2099 68.1417 11.9789 65.3705 11.4821C63.4221 11.1366 62.2097 10.7046 62.2097 10.0351C62.2097 9.45201 62.9025 9.04166 64.0715 9.04166C65.1107 9.04166 65.9767 9.38722 66.6262 10.1431L68.553 8.52333C67.5788 7.31389 65.9767 6.62277 64.0715 6.62277C61.1489 6.62277 59.3303 8.17777 59.3303 10.0783C59.3303 12.1517 61.2354 13.0803 63.2922 13.4475C65.0025 13.7499 65.9551 14.0738 65.9551 14.8081C65.9551 15.4344 65.2839 15.9528 64.0066 15.9528C62.7509 15.9528 61.7767 15.3696 61.322 14.5058L58.7674 15.7152C59.3952 17.2702 61.5385 18.458 63.9416 18.458Z" fill="#242424"></path><path d="M75.7621 18.458C77.9271 18.458 79.4859 17.5942 80.6549 15.6504L78.2302 14.4194C77.7755 15.3265 77.0395 15.9528 75.7621 15.9528C73.8353 15.9528 72.7961 14.3978 72.7961 12.5188C72.7961 10.6399 73.9003 9.12805 75.7621 9.12805C76.9312 9.12805 77.7106 9.75437 78.1652 10.7046L80.6116 9.40882C79.7889 7.61625 78.1652 6.62277 75.7621 6.62277C71.8003 6.62277 69.7652 9.5168 69.7652 12.5188C69.7652 15.78 72.2333 18.458 75.7621 18.458Z" fill="#242424"></path><path d="M85.4829 18.458C87.1067 18.458 88.1891 17.9181 88.7304 17.0758C88.7737 17.443 88.9036 17.9397 89.0768 18.2421H91.8046C91.6531 17.7237 91.5448 16.903 91.5448 16.3631V10.4455C91.5448 8.005 89.7912 6.62277 86.8252 6.62277C84.5737 6.62277 82.8201 7.46507 81.8458 8.69611L83.5778 10.4023C84.3572 9.5384 85.353 9.08486 86.5654 9.08486C88.0376 9.08486 88.6871 9.58159 88.6871 10.3159C88.6871 10.9422 88.2541 11.3742 85.9159 11.3742C83.6644 11.3742 81.3912 12.3028 81.3912 14.8945C81.3912 17.2918 83.1231 18.458 85.4829 18.458ZM86.0891 16.1687C84.9201 16.1687 84.3788 15.672 84.3788 14.7865C84.3788 14.009 85.0283 13.4907 86.1108 13.4907C87.8427 13.4907 88.319 13.3827 88.6871 13.0155V13.9442C88.6871 15.1753 87.6479 16.1687 86.0891 16.1687Z" fill="#242424"></path><path d="M93.3263 18.2421H96.3573V2.90805H93.3263V18.2421Z" fill="#242424"></path><path d="M103.631 18.458C105.861 18.458 107.658 17.5726 108.654 15.996L106.359 14.5274C105.753 15.4776 104.952 15.996 103.631 15.996C102.138 15.996 101.055 15.1753 100.774 13.5771H109.39V12.5188C109.39 9.5168 107.55 6.62277 103.61 6.62277C99.8643 6.62277 97.8293 9.5384 97.8293 12.5404C97.8293 16.8167 101.055 18.458 103.631 18.458ZM100.882 11.2014C101.358 9.75437 102.354 9.08486 103.675 9.08486C105.168 9.08486 106.078 9.97034 106.381 11.2014H100.882Z" fill="#242424"></path></svg></a></div><div class="flex flex-col gap-[14px] md:col-span-2"><a class="t-14 !leading-[1.05] underline transition-colors duration-300 text-heading-black/60 hover:text-black/100" href="/terms">Terms of Service</a><a class="t-14 !leading-[1.05] underline transition-colors duration-300 text-heading-black/60 hover:text-black/100" href="/privacy-policy">Privacy Policy</a></div><div class="md:col-span-3"><div class="t-14 max-w-[250px] !leading-[1.35] text-heading-black/60 ">WireGuard is a registered trademark of Jason A. Donenfeld.</div></div><div class="flex gap-[6px] xxs:col-span-2 md:col-span-3 md:flex md:justify-end"><a target="_blank" class="group transition-colors duration-300 text-heading-black hover:text-grey-3" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer Twitter logo&quot;}" href="https://twitter.com/tailscale"><svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.988281" width="28" height="28" rx="14" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.03169 9L13.0509 15.0672L8 20H9.13675L13.5587 15.6812L17.1317 20H21L15.6985 13.5916L20.3997 9H19.263L15.1906 12.9775L11.9001 9H8.03169ZM9.70337 9.75698H11.4805L19.3281 19.2429H17.551L9.70337 9.75698Z" fill="white"></path></svg></a><a target="_blank" class="group transition-colors duration-300 text-heading-black hover:text-grey-3" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer Facebook logo&quot;}" href="https://www.facebook.com/tailscale/"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.21875" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M12.434 19.6598L12.4179 14.8081H10.3008V12.7289H12.4179V11.3427C12.4179 9.47188 13.5974 8.57031 15.2966 8.57031C16.1106 8.57031 16.8101 8.62983 17.014 8.65643V10.6115L15.8355 10.612C14.9114 10.612 14.7324 11.0433 14.7324 11.6762V12.7289H17.3577L16.652 14.8081H14.7324V19.6598H12.434Z" fill="#fff"></path></svg></a><a target="_blank" class="group transition-colors duration-300 text-heading-black hover:text-grey-3" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer LinkedIn logo&quot;}" href="https://www.linkedin.com/company/tailscale"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.439453" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.68685 18.6518H10.8825V11.5871H8.68685V18.6518Z" fill="white"></path><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M8.50195 9.34036C8.50195 10.0352 9.07976 10.6143 9.77312 10.6143C10.4896 10.6143 11.0443 10.0584 11.0443 9.34036C11.0443 8.64547 10.4665 8.06641 9.77312 8.06641C9.07976 8.06641 8.50195 8.64547 8.50195 9.34036Z" fill="white"></path><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M16.8917 18.6518H19.0873V14.7836C19.0873 12.8843 18.6713 11.425 16.4525 11.425C15.3894 11.425 14.6729 12.0041 14.3724 12.56H14.3493V11.5871H12.2461V18.6518H14.4418V15.1542C14.4418 14.2509 14.6267 13.3475 15.7592 13.3475C16.8686 13.3475 16.8917 14.413 16.8917 15.2237V18.6518Z" fill="white"></path></svg></a><a target="_blank" rel="me" class="group transition-colors duration-300 text-heading-black hover:text-grey-3" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer Mastodon logo&quot;}" href="https://hachyderm.io/@tailscale"><svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.988281" width="28" height="28" rx="14" fill="currentColor"></rect><path class="transition-colors duration-300 group-hover:fill-heading-black" fill="white" d="M19.9516 10.8781C19.7667 9.48128 18.5693 8.38051 17.1498 8.16721C16.9104 8.13117 16.003 8 13.9011 8H13.8854C11.7829 8 11.3319 8.13117 11.0924 8.16721C9.71243 8.3746 8.45223 9.3637 8.14648 10.777C7.99942 11.4731 7.98373 12.2447 8.01105 12.9526C8.04999 13.9677 8.05755 14.981 8.14823 15.992C8.21091 16.6635 8.32027 17.3297 8.47548 17.9855C8.76612 19.1968 9.94262 20.2048 11.0953 20.616C12.3294 21.0449 13.6566 21.1161 14.9282 20.8216C15.0681 20.7886 15.2065 20.7502 15.3432 20.7064C15.6519 20.6066 16.014 20.4949 16.2803 20.2987C16.2839 20.296 16.2869 20.2924 16.289 20.2883C16.2911 20.2842 16.2923 20.2797 16.2925 20.2751V19.2955C16.2924 19.2911 16.2914 19.2869 16.2895 19.283C16.2876 19.2791 16.2849 19.2758 16.2815 19.2731C16.2782 19.2704 16.2743 19.2686 16.2702 19.2676C16.266 19.2667 16.2617 19.2667 16.2576 19.2677C15.4429 19.4655 14.608 19.5647 13.7703 19.5631C12.3288 19.5631 11.941 18.8677 11.83 18.5782C11.7408 18.3279 11.6841 18.0669 11.6614 17.8018C11.6612 17.7973 11.662 17.7929 11.6638 17.7888C11.6656 17.7847 11.6683 17.7811 11.6717 17.7783C11.6751 17.7755 11.6791 17.7735 11.6834 17.7726C11.6876 17.7716 11.6921 17.7717 11.6963 17.7728C12.4975 17.9693 13.3188 18.0685 14.1429 18.0682C14.3411 18.0682 14.5387 18.0682 14.737 18.0629C15.5659 18.0393 16.4395 17.9962 17.255 17.8343C17.2754 17.8301 17.2957 17.8266 17.3132 17.8213C18.5995 17.5701 19.8237 16.7819 19.9481 14.786C19.9527 14.7074 19.9644 13.963 19.9644 13.8814C19.965 13.6043 20.0521 11.9156 19.9516 10.8781ZM17.9718 15.8584H16.6191V12.4905C16.6191 11.7815 16.3285 11.4199 15.7373 11.4199C15.0875 11.4199 14.762 11.8477 14.762 12.6926V14.5361H13.4175V12.6926C13.4175 11.8477 13.0914 11.4199 12.4415 11.4199C11.8538 11.4199 11.5603 11.7815 11.5597 12.4905V15.8584H10.2083V12.3883C10.2083 11.6793 10.3863 11.116 10.7425 10.6985C11.1098 10.2819 11.5917 10.068 12.1898 10.068C12.8821 10.068 13.4053 10.3386 13.754 10.8793L14.0906 11.4536L14.4277 10.8793C14.7765 10.3386 15.2996 10.068 15.9908 10.068C16.5883 10.068 17.0702 10.2819 17.4387 10.6985C17.7949 11.1156 17.9729 11.6789 17.9729 12.3883L17.9718 15.8584Z"></path></svg></a><a target="_blank" class="group transition-colors duration-300 text-heading-black hover:text-grey-3" data-track="Link Clicked" data-track-properties="{&quot;label&quot;: &quot;Footer Youtube logo&quot;}" href="https://www.youtube.com/@Tailscale"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.658203" width="27.2195" height="27.2195" rx="13.6098" fill="currentColor"></rect><path class=" transition-colors duration-300 group-hover:fill-heading-black" d="M19.6754 11.46C19.5368 10.5863 19.121 9.98138 18.1506 9.84696C16.6258 9.57813 14.2693 9.57812 14.2693 9.57812C14.2693 9.57812 11.9128 9.57813 10.388 9.84696C9.4177 9.98138 8.93254 10.5863 8.86323 11.46C8.72461 12.3337 8.72461 13.6106 8.72461 13.6106C8.72461 13.6106 8.72461 14.8876 8.86323 15.7613C9.00185 16.635 9.4177 17.2399 10.388 17.3743C11.9128 17.6432 14.2693 17.6432 14.2693 17.6432C14.2693 17.6432 16.6258 17.6432 18.1506 17.3743C19.121 17.1727 19.5368 16.635 19.6754 15.7613C19.814 14.8876 19.814 13.6106 19.814 13.6106C19.814 13.6106 19.814 12.3337 19.6754 11.46ZM12.8831 15.6269V11.5944L16.3486 13.6106L12.8831 15.6269Z" fill="white"></path></svg></a></div><div class="t-14 flex flex-wrap tracking-[0.07px] xxs:col-span-2 md:col-span-12 text-heading-black/60 ">© <!-- -->2024<!-- --> <!-- -->Tailscale Inc. All rights reserved. Tailscale is a registered trademark of Tailscale Inc.</div></div></div></footer><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9309a5f1832f1a93.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/503dd21c3e9aa947-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/59aafc96071162d7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/6190d09d67eb8e2d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/6267f766bc823bf8-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/ce17880c21b59d21-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/d3470cfc68a51edd-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/css/425118351a398cbb.css\",\"style\"]\n8:HL[\"/_next/static/css/9ea45c8bb7328bdd.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"9:I[95751,[],\"\"]\nc:I[39275,[],\"\"]\ne:I[89611,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"9286\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/error-d79b6b3fc14d36f0.js\"],\"default\"]\nf:I[61343,[],\"\"]\n12:I[60165,[\"3185\",\"static/chunks/app/layout-253fffffc2b8aa63.js\"],\"default\"]\n14:I[76130,[],\"\"]\nd:[\"params\",\"1240/sso-custom-oidc\",\"oc\"]\n15:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/425118351a398cbb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/9ea45c8bb7328bdd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"buildId\":\"gTFGOso1H0uG7X82LelDA\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/kb/1240/sso-custom-oidc\",\"initialTree\":[\"\",{\"children\":[\"kb\",{\"children\":[[\"params\",\"1240/sso-custom-oidc\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"kb\",{\"children\":[[\"params\",\"1240/sso-custom-oidc\",\"oc\"],{\"children\":[\"__PAGE__\",{},[[\"$La\",\"$Lb\"],null],null]},[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"kb\",\"children\",\"$d\",\"children\"],\"error\":\"$e\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$L10\",\"notFoundStyles\":[],\"styles\":null}],null]},[\"$L11\",null],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__className_943d4e\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$L13\"],\"globalErrorComponent\":\"$14\",\"missingSlots\":\"$W15\"}]]\n"])</script><script>self.__next_f.push([1,"16:I[231,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"6257\",\"static/chunks/6257-dab7659271d81024.js\",\"919\",\"static/chunks/919-6a91dc6f9f17ec66.js\",\"7004\",\"static/chunks/app/kb/layout-fda2441131486605.js\"],\"\"]\n10:[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-lg py-14 md:py-16\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-medium md:text-4xl\",\"children\":\"Page not found\"}],[\"$\",\"h2\",null,{\"className\":\"mt-4 text-lg font-medium md:text-xl\",\"children\":\"Sorry, but the page you were looking for could not be found.\"}],[\"$\",\"p\",null,{\"className\":\"prose mt-4\",\"children\":[\"You can\",\" \",[\"$\",\"$L16\",null,{\"className\":\"link\",\"href\":\"/kb\",\"children\":\"return to our docs homepage\"}],\",\",\" \",[\"$\",\"$L16\",null,{\"className\":\"link\",\"href\":\"/\",\"children\":\"site homepage\"}],\", or\",\" \",[\"$\",\"$L16\",null,{\"className\":\"link\",\"href\":\"mailto:info@tailscale.com\",\"children\":\"get in touch\"}],\" \",\"if you can’t find what you’re looking for.\"]}]]}]\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#fff\"}],[\"$\",\"meta\",\"2\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"3\",{\"children\":\"Custom OIDC providers · Tailscale Docs\"}],[\"$\",\"meta\",\"4\",{\"name\":\"description\",\"content\":\"Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale.\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://tailscale.com/kb/1240/sso-custom-oidc\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Custom OIDC providers · Tailscale Docs\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://tailscale.com/kb/1240/sso-custom-oidc\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Tailscale\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://tailscale.com/files/images/og-image.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:creator\",\"content\":\"@tailscale\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"Custom OIDC providers\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Learn how to configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://tailscale.com/files/images/og-image.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.png\",\"type\":\"image/png\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"meta\",\"19\",{\"name\":\"next-size-adjust\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"17:I[32443,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"6257\",\"static/chunks/6257-dab7659271d81024.js\",\"919\",\"static/chunks/919-6a91dc6f9f17ec66.js\",\"7004\",\"static/chunks/app/kb/layout-fda2441131486605.js\"],\"CurrentUserProvider\"]\n18:I[1843,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"6257\",\"static/chunks/6257-dab7659271d81024.js\",\"919\",\"static/chunks/919-6a91dc6f9f17ec66.js\",\"7004\",\"static/chunks/app/kb/layout-fda2441131486605.js\"],\"default\"]\n19:T820,"])</script><script>self.__next_f.push([1,"M19.9516 10.8781C19.7667 9.48128 18.5693 8.38051 17.1498 8.16721C16.9104 8.13117 16.003 8 13.9011 8H13.8854C11.7829 8 11.3319 8.13117 11.0924 8.16721C9.71243 8.3746 8.45223 9.3637 8.14648 10.777C7.99942 11.4731 7.98373 12.2447 8.01105 12.9526C8.04999 13.9677 8.05755 14.981 8.14823 15.992C8.21091 16.6635 8.32027 17.3297 8.47548 17.9855C8.76612 19.1968 9.94262 20.2048 11.0953 20.616C12.3294 21.0449 13.6566 21.1161 14.9282 20.8216C15.0681 20.7886 15.2065 20.7502 15.3432 20.7064C15.6519 20.6066 16.014 20.4949 16.2803 20.2987C16.2839 20.296 16.2869 20.2924 16.289 20.2883C16.2911 20.2842 16.2923 20.2797 16.2925 20.2751V19.2955C16.2924 19.2911 16.2914 19.2869 16.2895 19.283C16.2876 19.2791 16.2849 19.2758 16.2815 19.2731C16.2782 19.2704 16.2743 19.2686 16.2702 19.2676C16.266 19.2667 16.2617 19.2667 16.2576 19.2677C15.4429 19.4655 14.608 19.5647 13.7703 19.5631C12.3288 19.5631 11.941 18.8677 11.83 18.5782C11.7408 18.3279 11.6841 18.0669 11.6614 17.8018C11.6612 17.7973 11.662 17.7929 11.6638 17.7888C11.6656 17.7847 11.6683 17.7811 11.6717 17.7783C11.6751 17.7755 11.6791 17.7735 11.6834 17.7726C11.6876 17.7716 11.6921 17.7717 11.6963 17.7728C12.4975 17.9693 13.3188 18.0685 14.1429 18.0682C14.3411 18.0682 14.5387 18.0682 14.737 18.0629C15.5659 18.0393 16.4395 17.9962 17.255 17.8343C17.2754 17.8301 17.2957 17.8266 17.3132 17.8213C18.5995 17.5701 19.8237 16.7819 19.9481 14.786C19.9527 14.7074 19.9644 13.963 19.9644 13.8814C19.965 13.6043 20.0521 11.9156 19.9516 10.8781ZM17.9718 15.8584H16.6191V12.4905C16.6191 11.7815 16.3285 11.4199 15.7373 11.4199C15.0875 11.4199 14.762 11.8477 14.762 12.6926V14.5361H13.4175V12.6926C13.4175 11.8477 13.0914 11.4199 12.4415 11.4199C11.8538 11.4199 11.5603 11.7815 11.5597 12.4905V15.8584H10.2083V12.3883C10.2083 11.6793 10.3863 11.116 10.7425 10.6985C11.1098 10.2819 11.5917 10.068 12.1898 10.068C12.8821 10.068 13.4053 10.3386 13.754 10.8793L14.0906 11.4536L14.4277 10.8793C14.7765 10.3386 15.2996 10.068 15.9908 10.068C16.5883 10.068 17.0702 10.2819 17.4387 10.6985C17.7949 11.1156 17.9729 11.6789 17.9729 12.3883L17.9718 15.8584Z"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$L18\",null,{\"menu\":[{\"submenu\":{\"submenuType\":\"product\",\"product\":{\"rightCol\":{\"nav\":{\"links\":[{\"link\":\"/integrations\",\"_key\":\"c653da519dfb\",\"title\":\"Integrations\"},{\"link\":\"/features\",\"_key\":\"a878da5fa54c\",\"title\":\"Features\"},{\"link\":\"/compare\",\"_key\":\"adda698ed879\",\"title\":\"Compare Tailscale\"},{\"link\":\"/partnerships\",\"_key\":\"b57369965809\",\"title\":\"Partnerships\"}],\"heading\":\"Explore\"}},\"leftCol\":{\"topNav\":{\"heading\":\"Meet Tailscale\",\"links\":[{\"_key\":\"5495d201056a\",\"title\":\"How it works\",\"icon\":{\"_type\":\"sanityImage\",\"alt\":\"icon\"},\"link\":\"/blog/how-tailscale-works/\"},{\"icon\":{\"_type\":\"sanityImage\",\"alt\":\"icon\"},\"link\":\"/why-tailscale\",\"_key\":\"dc9cde7ff83cb94cfc98ff29bdcd0997\",\"title\":\"Why Tailscale\"},{\"icon\":{\"_type\":\"sanityImage\",\"alt\":\"WireGuard®\"},\"link\":\"/wireguard-vpn\",\"_key\":\"5d88e3ffcc6b\",\"title\":\"WireGuard® for Enterprises\"},{\"icon\":{\"_type\":\"sanityImage\",\"alt\":\"Bring Tailscale to Work\"},\"link\":\"/bring-tailscale-to-work\",\"_key\":\"435de37ddd5f\",\"title\":\"Bring Tailscale to Work\"}]}}}},\"hasSubmenu\":true,\"_key\":\"95381f81d527\",\"title\":\"Product\"},{\"title\":\"Solutions\",\"submenu\":{\"product\":{\"rightCol\":{\"nav\":{\"heading\":\"By role\",\"links\":[{\"title\":\"DevOps\",\"link\":\"/solutions/devops\",\"_key\":\"502a00f49baf\"},{\"link\":\"/solutions/it\",\"_key\":\"0fe4c0d6fa83\",\"title\":\"IT\"},{\"link\":\"/solutions/security\",\"_key\":\"026f30b876a7\",\"title\":\"Security\"}]}},\"leftCol\":{\"topNav\":{\"heading\":\"By use-case\",\"links\":[{\"title\":\"Remote Access\",\"link\":\"/use-cases/remote-access\",\"_key\":\"193eaaa0cef8\"},{\"link\":\"/use-cases/site-to-site-networking\",\"_key\":\"05cadfcf3e65b04708a9d88060f68f9e\",\"title\":\"Site-to-site Networking\"},{\"link\":\"/use-cases/multi-cloud-networking\",\"_key\":\"fbd28dffeac0\",\"title\":\"Multi-Cloud Networking\"},{\"link\":\"/use-cases/kubernetes\",\"_key\":\"da202f1d966a\",\"title\":\"Kubernetes Networking\"},{\"title\":\"Edge \u0026 IoT Deployments\",\"link\":\"/use-cases/iot\",\"_key\":\"8c78e633c6b1\"},{\"link\":\"/use-cases/zero-trust-networking\",\"_key\":\"6a363d694952\",\"title\":\"Zero Trust Networking\"},{\"_key\":\"9c49b97d6b06\",\"title\":\"AI Workloads\",\"link\":\"/use-cases/ai\"},{\"link\":\"/use-cases/secure-saas\",\"_key\":\"2602b548bd52\",\"title\":\"Secure SaaS\"},{\"link\":\"/use-cases/business-vpn\",\"_key\":\"6fc65e9fe1c6\",\"title\":\"Business VPN\"},{\"_key\":\"d99d14013ab3\",\"title\":\"Homelab\",\"link\":\"/use-cases/homelab\"}]}}},\"submenuType\":\"product\"},\"hasSubmenu\":true,\"_key\":\"a7062f1924df\"},{\"_key\":\"fd055b16290df04c6012d0d33c2fad13\",\"title\":\"Enterprise\",\"submenu\":{\"submenuType\":\"product\"},\"link\":\"/enterprise\",\"hasSubmenu\":false},{\"_key\":\"b595975539c7407a7ed4510edd549223\",\"title\":\"Customers\",\"submenu\":{\"submenuType\":\"product\"},\"link\":\"/customers\",\"hasSubmenu\":false},{\"title\":\"Docs\",\"submenu\":{\"submenuType\":\"product\"},\"link\":\"/kb/1017/install/\",\"hasSubmenu\":false,\"_key\":\"f06fabeb084c\"},{\"_key\":\"f2537b6fa068\",\"title\":\"Blog\",\"submenu\":{\"submenuType\":\"product\"},\"link\":\"/blog\",\"hasSubmenu\":false},{\"submenu\":{\"submenuType\":\"product\"},\"link\":\"/pricing\",\"hasSubmenu\":false,\"_key\":\"e1b7b44dc091\",\"title\":\"Pricing\"}],\"footerData\":\"$undefined\",\"headerStyle\":\"dark\",\"button\":{\"_type\":\"button\",\"link\":{\"title\":\"Get started\",\"url\":\"https://login.tailscale.com/start\"},\"buttonOptions\":{\"color\":\"black\"}}}]}],[\"$\",\"main\",null,{\"className\":\"scope-kb is-wide container\",\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"kb\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}]}],[\"$\",\"footer\",null,{\"className\":\" pb-16 md:pb-28 md:pt-20 \",\"children\":[[\"$\",\"div\",null,{\"className\":\"container grid gap-x-4 gap-y-8 pb-8 xxs:grid-cols-2 sm:grid-cols-3 sm:gap-5 md:pb-[110px] lg:grid-cols-6\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Product\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Product/blog/how-tailscale-works/\",{\"href\":\"/blog/how-tailscale-works/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"How it works\"}}],[\"$\",\"$L16\",\"Product/pricing\",{\"href\":\"/pricing\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Pricing\"}}],[\"$\",\"$L16\",\"Product/integrations\",{\"href\":\"/integrations\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Integrations\"}}],[\"$\",\"$L16\",\"Product/features\",{\"href\":\"/features\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Features\"}}],[\"$\",\"$L16\",\"Product/compare\",{\"href\":\"/compare\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Compare Tailscale\"}}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Use Cases\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Use Cases/use-cases/business-vpn\",{\"href\":\"/use-cases/business-vpn\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Business VPN\"}}],[\"$\",\"$L16\",\"Use Cases/use-cases/remote-access\",{\"href\":\"/use-cases/remote-access\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Remote Access\"}}],[\"$\",\"$L16\",\"Use Cases/use-cases/site-to-site-networking\",{\"href\":\"/use-cases/site-to-site-networking\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Site-to-Site Networking\"}}],[\"$\",\"$L16\",\"Use Cases/use-cases/homelab\",{\"href\":\"/use-cases/homelab\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Homelab\"}}],[\"$\",\"$L16\",\"Use Cases/enterprise\",{\"href\":\"/enterprise\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Enterprise\"}}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Resources\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Resources/blog\",{\"href\":\"/blog\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Blog\"}}],[\"$\",\"$L16\",\"Resources/events-webinars\",{\"href\":\"/events-webinars\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Events \u0026 Webinars\"}}],[\"$\",\"$L16\",\"Resources/partnerships\",{\"href\":\"/partnerships\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Partnerships\"}}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Company\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Company/company\",{\"href\":\"/company\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Company\"}}],[\"$\",\"$L16\",\"Company/careers\",{\"href\":\"/careers\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Careers\"}}],[\"$\",\"$L16\",\"Company/press\",{\"href\":\"/press\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Press\"}}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Help \u0026 Support\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Help \u0026 Support/contact/support\",{\"href\":\"/contact/support\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Support\"}}],[\"$\",\"$L16\",\"Help \u0026 Support/contact/sales\",{\"href\":\"/contact/sales\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Sales\"}}],[\"$\",\"$L16\",\"Help \u0026 Support/security\",{\"href\":\"/security\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Security\"}}],[\"$\",\"$L16\",\"Help \u0026 Support/legal\",{\"href\":\"/legal\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Legal\"}}],[\"$\",\"$L16\",\"Help \u0026 Support/opensource\",{\"href\":\"/opensource\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Open Source\"}}],[\"$\",\"$L16\",\"Help \u0026 Support/changelog\",{\"href\":\"/changelog\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Changelog\"}}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"t-16 !leading-[1.05] text-heading-black\",\"children\":\"Learn\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex flex-col gap-3 lg:mt-8 lg:gap-4\",\"children\":[[\"$\",\"$L16\",\"Learn/learn/generate-ssh-keys/\",{\"href\":\"/learn/generate-ssh-keys/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"SSH keys\"}}],[\"$\",\"$L16\",\"Learn/learn/ssh-into-docker-container/\",{\"href\":\"/learn/ssh-into-docker-container/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Docker SSH\"}}],[\"$\",\"$L16\",\"Learn/learn/devsecops/\",{\"href\":\"/learn/devsecops/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"DevSecOps\"}}],[\"$\",\"$L16\",\"Learn/learn/multicloud/\",{\"href\":\"/learn/multicloud/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Multicloud\"}}],[\"$\",\"$L16\",\"Learn/blog/how-nat-traversal-works/\",{\"href\":\"/blog/how-nat-traversal-works/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"NAT Traversal\"}}],[\"$\",\"$L16\",\"Learn/blog/2021-09-private-dns-with-magicdns/\",{\"href\":\"/blog/2021-09-private-dns-with-magicdns/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"MagicDNS\"}}],[\"$\",\"$L16\",\"Learn/learn/privileged-access-management/\",{\"href\":\"/learn/privileged-access-management/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"PAM\"}}],[\"$\",\"$L16\",\"Learn/learn/principle-of-least-privilege/\",{\"href\":\"/learn/principle-of-least-privilege/\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"PoLP\"}}],[\"$\",\"$L16\",\"Learn/learn\",{\"href\":\"/learn\",\"className\":\"text-[14px] !leading-[1.05] !tracking-[0.08px] transition-colors duration-300 md:text-[16px] text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"All articles\"}}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"container\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-x-5 gap-y-8 border-t border-stroke-grey pt-8 xxs:grid-cols-2 md:grid-cols-12 md:pt-[70px] lg:gap-y-[60px]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"xxs:col-span-2 md:col-span-4\",\"children\":[\"$\",\"$L16\",null,{\"href\":\"/\",\"className\":\"block w-[160px]\",\"title\":\"Homepage\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"className\":\"transition-colors duration-200 \",\"width\":\"100%\",\"height\":\"100%\",\"viewBox\":\"0 0 110 20\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"ellipse\",null,{\"cx\":\"2.44719\",\"cy\":\"10.1796\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"cx\":\"9.79094\",\"cy\":\"10.1796\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"opacity\":\"0.2\",\"cx\":\"2.44719\",\"cy\":\"17.5077\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"opacity\":\"0.2\",\"cx\":\"17.1269\",\"cy\":\"17.5077\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"cx\":\"9.79094\",\"cy\":\"17.5077\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"cx\":\"17.1269\",\"cy\":\"10.1796\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"opacity\":\"0.2\",\"cx\":\"2.44719\",\"cy\":\"2.85924\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"opacity\":\"0.2\",\"cx\":\"9.79094\",\"cy\":\"2.85924\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"ellipse\",null,{\"opacity\":\"0.2\",\"cx\":\"17.1269\",\"cy\":\"2.85924\",\"rx\":\"2.44719\",\"ry\":\"2.44128\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M34.3979 18.458C35.0907 18.458 35.6536 18.3933 36.3248 18.2637V15.7584C35.9134 15.9096 35.4588 15.9528 35.0258 15.9528C33.965 15.9528 33.5753 15.4344 33.5753 14.441V9.34402H36.3248V6.83875H33.5753V3.12403H30.5443V6.83875H28.5742V9.34402H30.5443V14.7217C30.5443 17.0974 31.8 18.458 34.3979 18.458Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M41.2747 18.458C42.8984 18.458 43.9809 17.9181 44.5222 17.0758C44.5655 17.443 44.6954 17.9397 44.8686 18.2421H47.5964C47.4449 17.7237 47.3366 16.903 47.3366 16.3631V10.4455C47.3366 8.005 45.583 6.62277 42.617 6.62277C40.3654 6.62277 38.6118 7.46507 37.6376 8.69611L39.3696 10.4023C40.149 9.5384 41.1448 9.08486 42.3572 9.08486C43.8294 9.08486 44.4789 9.58159 44.4789 10.3159C44.4789 10.9422 44.0459 11.3742 41.7077 11.3742C39.4562 11.3742 37.183 12.3028 37.183 14.8945C37.183 17.2918 38.9149 18.458 41.2747 18.458ZM41.8809 16.1687C40.7118 16.1687 40.1706 15.672 40.1706 14.7865C40.1706 14.009 40.8201 13.4907 41.9026 13.4907C43.6345 13.4907 44.1108 13.3827 44.4789 13.0155V13.9442C44.4789 15.1753 43.4397 16.1687 41.8809 16.1687Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M49.3069 5.39173H52.4677V2.5625H49.3069V5.39173ZM49.3718 18.2421H52.4028V6.83875H49.3718V18.2421Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M54.6109 18.2421H57.6418V2.90805H54.6109V18.2421Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M63.9416 18.458C67.2757 18.458 68.986 16.7087 68.986 14.8729C68.986 13.2099 68.1417 11.9789 65.3705 11.4821C63.4221 11.1366 62.2097 10.7046 62.2097 10.0351C62.2097 9.45201 62.9025 9.04166 64.0715 9.04166C65.1107 9.04166 65.9767 9.38722 66.6262 10.1431L68.553 8.52333C67.5788 7.31389 65.9767 6.62277 64.0715 6.62277C61.1489 6.62277 59.3303 8.17777 59.3303 10.0783C59.3303 12.1517 61.2354 13.0803 63.2922 13.4475C65.0025 13.7499 65.9551 14.0738 65.9551 14.8081C65.9551 15.4344 65.2839 15.9528 64.0066 15.9528C62.7509 15.9528 61.7767 15.3696 61.322 14.5058L58.7674 15.7152C59.3952 17.2702 61.5385 18.458 63.9416 18.458Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M75.7621 18.458C77.9271 18.458 79.4859 17.5942 80.6549 15.6504L78.2302 14.4194C77.7755 15.3265 77.0395 15.9528 75.7621 15.9528C73.8353 15.9528 72.7961 14.3978 72.7961 12.5188C72.7961 10.6399 73.9003 9.12805 75.7621 9.12805C76.9312 9.12805 77.7106 9.75437 78.1652 10.7046L80.6116 9.40882C79.7889 7.61625 78.1652 6.62277 75.7621 6.62277C71.8003 6.62277 69.7652 9.5168 69.7652 12.5188C69.7652 15.78 72.2333 18.458 75.7621 18.458Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M85.4829 18.458C87.1067 18.458 88.1891 17.9181 88.7304 17.0758C88.7737 17.443 88.9036 17.9397 89.0768 18.2421H91.8046C91.6531 17.7237 91.5448 16.903 91.5448 16.3631V10.4455C91.5448 8.005 89.7912 6.62277 86.8252 6.62277C84.5737 6.62277 82.8201 7.46507 81.8458 8.69611L83.5778 10.4023C84.3572 9.5384 85.353 9.08486 86.5654 9.08486C88.0376 9.08486 88.6871 9.58159 88.6871 10.3159C88.6871 10.9422 88.2541 11.3742 85.9159 11.3742C83.6644 11.3742 81.3912 12.3028 81.3912 14.8945C81.3912 17.2918 83.1231 18.458 85.4829 18.458ZM86.0891 16.1687C84.9201 16.1687 84.3788 15.672 84.3788 14.7865C84.3788 14.009 85.0283 13.4907 86.1108 13.4907C87.8427 13.4907 88.319 13.3827 88.6871 13.0155V13.9442C88.6871 15.1753 87.6479 16.1687 86.0891 16.1687Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M93.3263 18.2421H96.3573V2.90805H93.3263V18.2421Z\",\"fill\":\"#242424\"}],[\"$\",\"path\",null,{\"d\":\"M103.631 18.458C105.861 18.458 107.658 17.5726 108.654 15.996L106.359 14.5274C105.753 15.4776 104.952 15.996 103.631 15.996C102.138 15.996 101.055 15.1753 100.774 13.5771H109.39V12.5188C109.39 9.5168 107.55 6.62277 103.61 6.62277C99.8643 6.62277 97.8293 9.5384 97.8293 12.5404C97.8293 16.8167 101.055 18.458 103.631 18.458ZM100.882 11.2014C101.358 9.75437 102.354 9.08486 103.675 9.08486C105.168 9.08486 106.078 9.97034 106.381 11.2014H100.882Z\",\"fill\":\"#242424\"}]]}]}]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-[14px] md:col-span-2\",\"children\":[[\"$\",\"$L16\",\"/terms\",{\"href\":\"/terms\",\"className\":\"t-14 !leading-[1.05] underline transition-colors duration-300 text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Terms of Service\"}}],[\"$\",\"$L16\",\"/privacy-policy\",{\"href\":\"/privacy-policy\",\"className\":\"t-14 !leading-[1.05] underline transition-colors duration-300 text-heading-black/60 hover:text-black/100\",\"dangerouslySetInnerHTML\":{\"__html\":\"Privacy Policy\"}}]]}],[\"$\",\"div\",null,{\"className\":\"md:col-span-3\",\"children\":[\"$\",\"div\",null,{\"className\":\"t-14 max-w-[250px] !leading-[1.35] text-heading-black/60 \",\"dangerouslySetInnerHTML\":{\"__html\":\"WireGuard is a registered trademark of Jason A. Donenfeld.\"}}]}],[\"$\",\"div\",null,{\"className\":\"flex gap-[6px] xxs:col-span-2 md:col-span-3 md:flex md:justify-end\",\"children\":[[\"$\",\"$L16\",null,{\"target\":\"_blank\",\"href\":\"https://twitter.com/tailscale\",\"className\":\"group transition-colors duration-300 text-heading-black hover:text-grey-3\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer Twitter logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"width\":\"28\",\"height\":\"29\",\"viewBox\":\"0 0 28 29\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"rect\",null,{\"y\":\"0.988281\",\"width\":\"28\",\"height\":\"28\",\"rx\":\"14\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M8.03169 9L13.0509 15.0672L8 20H9.13675L13.5587 15.6812L17.1317 20H21L15.6985 13.5916L20.3997 9H19.263L15.1906 12.9775L11.9001 9H8.03169ZM9.70337 9.75698H11.4805L19.3281 19.2429H17.551L9.70337 9.75698Z\",\"fill\":\"white\"}]]}]}],[\"$\",\"$L16\",null,{\"target\":\"_blank\",\"href\":\"https://www.facebook.com/tailscale/\",\"className\":\"group transition-colors duration-300 text-heading-black hover:text-grey-3\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer Facebook logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"width\":\"28\",\"height\":\"28\",\"viewBox\":\"0 0 28 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"rect\",null,{\"x\":\"0.21875\",\"width\":\"27.2195\",\"height\":\"27.2195\",\"rx\":\"13.6098\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M12.434 19.6598L12.4179 14.8081H10.3008V12.7289H12.4179V11.3427C12.4179 9.47188 13.5974 8.57031 15.2966 8.57031C16.1106 8.57031 16.8101 8.62983 17.014 8.65643V10.6115L15.8355 10.612C14.9114 10.612 14.7324 11.0433 14.7324 11.6762V12.7289H17.3577L16.652 14.8081H14.7324V19.6598H12.434Z\",\"fill\":\"#fff\"}]]}]}],[\"$\",\"$L16\",null,{\"target\":\"_blank\",\"href\":\"https://www.linkedin.com/company/tailscale\",\"className\":\"group transition-colors duration-300 text-heading-black hover:text-grey-3\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer LinkedIn logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"width\":\"28\",\"height\":\"28\",\"viewBox\":\"0 0 28 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"rect\",null,{\"x\":\"0.439453\",\"width\":\"27.2195\",\"height\":\"27.2195\",\"rx\":\"13.6098\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M8.68685 18.6518H10.8825V11.5871H8.68685V18.6518Z\",\"fill\":\"white\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M8.50195 9.34036C8.50195 10.0352 9.07976 10.6143 9.77312 10.6143C10.4896 10.6143 11.0443 10.0584 11.0443 9.34036C11.0443 8.64547 10.4665 8.06641 9.77312 8.06641C9.07976 8.06641 8.50195 8.64547 8.50195 9.34036Z\",\"fill\":\"white\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M16.8917 18.6518H19.0873V14.7836C19.0873 12.8843 18.6713 11.425 16.4525 11.425C15.3894 11.425 14.6729 12.0041 14.3724 12.56H14.3493V11.5871H12.2461V18.6518H14.4418V15.1542C14.4418 14.2509 14.6267 13.3475 15.7592 13.3475C16.8686 13.3475 16.8917 14.413 16.8917 15.2237V18.6518Z\",\"fill\":\"white\"}]]}]}],[\"$\",\"$L16\",null,{\"target\":\"_blank\",\"href\":\"https://hachyderm.io/@tailscale\",\"rel\":\"me\",\"className\":\"group transition-colors duration-300 text-heading-black hover:text-grey-3\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer Mastodon logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"width\":\"28\",\"height\":\"29\",\"viewBox\":\"0 0 28 29\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"rect\",null,{\"y\":\"0.988281\",\"width\":\"28\",\"height\":\"28\",\"rx\":\"14\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"className\":\"transition-colors duration-300 group-hover:fill-heading-black\",\"fill\":\"white\",\"d\":\"$19\"}]]}]}],[\"$\",\"$L16\",null,{\"target\":\"_blank\",\"href\":\"https://www.youtube.com/@Tailscale\",\"className\":\"group transition-colors duration-300 text-heading-black hover:text-grey-3\",\"data-track\":\"Link Clicked\",\"data-track-properties\":\"{\\\"label\\\": \\\"Footer Youtube logo\\\"}\",\"children\":[\"$\",\"svg\",null,{\"width\":\"28\",\"height\":\"28\",\"viewBox\":\"0 0 28 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"children\":[[\"$\",\"rect\",null,{\"x\":\"0.658203\",\"width\":\"27.2195\",\"height\":\"27.2195\",\"rx\":\"13.6098\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"className\":\" transition-colors duration-300 group-hover:fill-heading-black\",\"d\":\"M19.6754 11.46C19.5368 10.5863 19.121 9.98138 18.1506 9.84696C16.6258 9.57813 14.2693 9.57812 14.2693 9.57812C14.2693 9.57812 11.9128 9.57813 10.388 9.84696C9.4177 9.98138 8.93254 10.5863 8.86323 11.46C8.72461 12.3337 8.72461 13.6106 8.72461 13.6106C8.72461 13.6106 8.72461 14.8876 8.86323 15.7613C9.00185 16.635 9.4177 17.2399 10.388 17.3743C11.9128 17.6432 14.2693 17.6432 14.2693 17.6432C14.2693 17.6432 16.6258 17.6432 18.1506 17.3743C19.121 17.1727 19.5368 16.635 19.6754 15.7613C19.814 14.8876 19.814 13.6106 19.814 13.6106C19.814 13.6106 19.814 12.3337 19.6754 11.46ZM12.8831 15.6269V11.5944L16.3486 13.6106L12.8831 15.6269Z\",\"fill\":\"white\"}]]}]}]]}],[\"$\",\"div\",null,{\"className\":\"t-14 flex flex-wrap tracking-[0.07px] xxs:col-span-2 md:col-span-12 text-heading-black/60 \",\"children\":[\"© \",2024,\" \",\"Tailscale Inc. All rights reserved. Tailscale is a registered trademark of Tailscale Inc.\"]}]]}]}]]}]]\n"])</script><script>self.__next_f.push([1,"1a:I[15583,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"Menu\"]\n12d:I[42937,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"Drawer\"]\n2c1:\"$Sreact.suspense\"\n2c2:I[2800,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"Search\"]\n2c3:\"$Sreact.fragment\"\n2c4:I[49336,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"default\"]\n2c5:I[56178,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"HeaderLink\"]\n2c6:I[81124,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"default\"]\n2c7:I[38173,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"Image\"]\n2c8:I[72841,[\"231\",\"static/chunks/231-07416b1f957d0db7.js\",\"5828\",\"static/chunks/5828-bdbd767bd529f5f9.js\",\"1850\",\"static/chunks/1850-dd5ed91b5253b88f.js\",\"7163\",\"static/chunks/app/kb/%5B%5B...params%5D%5D/page-a4f53acc1f788c51.js\"],\"OnThisPage\"]\n1c:{\"label\":\"Download ↗\",\"href\":\"/downloads\"}\n1d:{\""])</script><script>self.__next_f.push([1,"label\":\"Update Tailscale\",\"numericId\":1067,\"slug\":\"update\"}\n1e:{\"label\":\"Uninstall Tailscale\",\"numericId\":1069,\"slug\":\"uninstall\"}\n23:{\"label\":\"Deploy on Android\",\"numericId\":1384,\"slug\":\"android-mdm\"}\n24:{\"label\":\"Deploy on iOS/tvOS\",\"numericId\":1380,\"slug\":\"ios-mdm\"}\n25:{\"label\":\"Deploy on macOS\",\"numericId\":1286,\"slug\":\"macos-mdm\"}\n26:{\"label\":\"Deploy on Windows\",\"numericId\":1318,\"slug\":\"windows-mdm\"}\n22:[\"$23\",\"$24\",\"$25\",\"$26\"]\n21:{\"label\":\"Customize Tailscale using system policies\",\"numericId\":1315,\"slug\":\"mdm-keys\",\"items\":\"$22\"}\n29:{\"label\":\"Google Workspace\",\"numericId\":1386,\"slug\":\"mdm-google-workspace\"}\n2a:{\"label\":\"Jamf\",\"numericId\":1328,\"slug\":\"mdm-jamf\"}\n2b:{\"label\":\"JumpCloud\",\"numericId\":1485,\"slug\":\"mdm-jumpcloud\"}\n2c:{\"label\":\"Kandji\",\"numericId\":1329,\"slug\":\"mdm-kandji\"}\n2d:{\"label\":\"Microsoft Intune\",\"numericId\":1327,\"slug\":\"mdm-microsoft-intune\"}\n2e:{\"label\":\"SimpleMDM\",\"numericId\":1330,\"slug\":\"mdm-simplemdm\"}\n2f:{\"label\":\"TinyMDM\",\"numericId\":1385,\"slug\":\"mdm-tinymdm\"}\n28:[\"$29\",\"$2a\",\"$2b\",\"$2c\",\"$2d\",\"$2e\",\"$2f\"]\n27:{\"label\":\"MDM integration partners\",\"numericId\":1448,\"slug\":\"mdm-integration-partners\",\"items\":\"$28\"}\n20:[\"$21\",\"$27\"]\n1f:{\"label\":\"Deploy with MDM\",\"numericId\":1362,\"slug\":\"mdm\",\"items\":\"$20\"}\n1b:[\"$1c\",\"$1d\",\"$1e\",\"$1f\"]\n31:{\"label\":\"Use exit nodes\",\"numericId\":1408,\"slug\":\"quick-guide-exit-node\"}\n32:{\"label\":\"Configure a subnet router\",\"numericId\":1406,\"slug\":\"quick-guide-subnets\"}\n33:{\"label\":\"Host a website\",\"numericId\":1310,\"slug\":\"quick-guide-host-websites\"}\n34:{\"label\":\"Install on AWS\",\"numericId\":1449,\"slug\":\"quick-guide-aws\"}\n35:{\"label\":\"SSH into a Linux virtual machine\",\"numericId\":1308,\"slug\":\"quick-guide-ssh-linux-vm\"}\n36:{\"label\":\"Access a virtual private cloud (VPC)\",\"numericId\":1309,\"slug\":\"quick-guide-access-vpc\"}\n37:{\"label\":\"Add a Docker container\",\"numericId\":1453,\"slug\":\"quick-guide-docker\"}\n30:[\"$31\",\"$32\",\"$33\",\"$34\",\"$35\",\"$36\",\"$37\"]\n39:{\"label\":\"Google\",\"numericId\":1199,\"slug\":\"sso-google\"}\n3a:{\"label\":\"Microsoft Entra ID\",\"numericId\":1285,\"slug\":\"sso"])</script><script>self.__next_f.push([1,"-microsoft\"}\n3b:{\"label\":\"Okta\",\"numericId\":1066,\"slug\":\"sso-okta\"}\n3c:{\"label\":\"GitHub\",\"numericId\":1284,\"slug\":\"sso-github\"}\n3d:{\"label\":\"Apple\",\"numericId\":1283,\"slug\":\"sso-apple\"}\n3e:{\"label\":\"OneLogin\",\"numericId\":1070,\"slug\":\"sso-onelogin\"}\n41:{\"label\":\"Google Workspace\",\"numericId\":1317,\"slug\":\"sso-google-sync\"}\n42:{\"label\":\"Microsoft Entra ID\",\"numericId\":1249,\"slug\":\"sso-entra-id-scim\"}\n43:{\"label\":\"Okta\",\"numericId\":1180,\"slug\":\"sso-okta-scim\"}\n40:[\"$41\",\"$42\",\"$43\"]\n3f:{\"label\":\"User \u0026 group provisioning\",\"numericId\":1290,\"slug\":\"user-group-provisioning\",\"items\":\"$40\"}\n44:{\"label\":\"Custom OIDC providers\",\"numericId\":1240,\"slug\":\"sso-custom-oidc\"}\n45:{\"label\":\"Enable 2FA and MFA\",\"numericId\":1075,\"slug\":\"multifactor-auth\"}\n38:[\"$39\",\"$3a\",\"$3b\",\"$3c\",\"$3d\",\"$3e\",\"$3f\",\"$44\",\"$45\"]\n4b:{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\"}\n4a:[\"$4b\"]\n49:{\"label\":\"Manage ACLs\",\"numericId\":1018,\"slug\":\"acls\",\"items\":\"$4a\"}\n4c:{\"label\":\"Manage grants\",\"numericId\":1324,\"slug\":\"acl-grants\"}\n4d:{\"label\":\"Edit the tailnet policy file\",\"numericId\":1338,\"slug\":\"acl-edit\"}\n50:{\"label\":\"Manage ACLs with Bitbucket\",\"numericId\":1302,\"slug\":\"gitops-acls-bitbucket\"}\n51:{\"label\":\"Manage ACLs with GitHub\",\"numericId\":1306,\"slug\":\"gitops-acls-github\"}\n52:{\"label\":\"Manage ACLs with GitLab\",\"numericId\":1254,\"slug\":\"gitops-acls-gitlab\"}\n4f:[\"$50\",\"$51\",\"$52\"]\n4e:{\"label\":\"Manage ACLs with GitOps\",\"numericId\":1204,\"slug\":\"gitopcs-acls\",\"items\":\"$4f\"}\n48:[\"$49\",\"$4c\",\"$4d\",\"$4e\"]\n47:{\"label\":\"Manage access control\",\"numericId\":1393,\"slug\":\"access-control\",\"items\":\"$48\"}\n55:{\"label\":\"Add a device\",\"numericId\":1316,\"slug\":\"device-add\"}\n56:{\"label\":\"Device approval\",\"numericId\":1099,\"slug\":\"device-approval\"}\n57:{\"label\":\"Rename a device\",\"numericId\":1098,\"slug\":\"machine-names\"}\n58:{\"label\":\"Remove a device\",\"numericId\":1260,\"slug\":\"device-remove\"}\n5b:{\"label\":\"Use Device Identity Collection\",\"numericId\":1326,\"slug\":\"device-identity\"}\n5c:{\"label\":\"CrowdStrike Falcon\",\"numericId\":1289,\"slug\":\"crowdstrike-zta\"}\n5d:{\"label\":\"Sent"])</script><script>self.__next_f.push([1,"inelOne\",\"numericId\":1390,\"slug\":\"sentinelone\"}\n5e:{\"label\":\"1Password XAM\",\"numericId\":1407,\"slug\":\"kolide\"}\n5f:{\"label\":\"Jamf Pro\",\"numericId\":1409,\"slug\":\"jamf-pro\"}\n60:{\"label\":\"Microsoft Intune\",\"numericId\":1410,\"slug\":\"intune\"}\n61:{\"label\":\"Kandji\",\"numericId\":1405,\"slug\":\"kandji\"}\n5a:[\"$5b\",\"$5c\",\"$5d\",\"$5e\",\"$5f\",\"$60\",\"$61\"]\n59:{\"label\":\"Device posture management\",\"numericId\":1288,\"slug\":\"device-posture\",\"items\":\"$5a\"}\n62:{\"label\":\"Filter devices\",\"numericId\":1176,\"slug\":\"filter-devices\"}\n63:{\"label\":\"Export list of devices\",\"numericId\":1228,\"slug\":\"export-device-list\"}\n64:{\"label\":\"Use the web interface\",\"numericId\":1325,\"slug\":\"device-web-interface\"}\n65:{\"label\":\"Add a device using a QR code\",\"numericId\":1336,\"slug\":\"device-add-qr-code\"}\n54:[\"$55\",\"$56\",\"$57\",\"$58\",\"$59\",\"$62\",\"$63\",\"$64\",\"$65\"]\n53:{\"label\":\"Manage devices\",\"numericId\":1372,\"slug\":\"manage-devices\",\"items\":\"$54\"}\n6a:{\"label\":\"Invite team members\",\"numericId\":1064,\"slug\":\"invite-team-members\"}\n6b:{\"label\":\"Invite any user\",\"numericId\":1271,\"slug\":\"invite-any-user\"}\n6c:{\"label\":\"Use passkeys\",\"numericId\":1269,\"slug\":\"passkeys\"}\n69:[\"$6a\",\"$6b\",\"$6c\"]\n68:{\"label\":\"Invite users\",\"items\":\"$69\",\"numericId\":1371,\"slug\":\"invite-users\"}\n6d:{\"label\":\"User approval\",\"numericId\":1239,\"slug\":\"user-approval\"}\n6e:{\"label\":\"User roles\",\"numericId\":1138,\"slug\":\"user-roles\"}\n6f:{\"label\":\"Change user roles\",\"numericId\":1171,\"slug\":\"changing-user-roles\"}\n70:{\"label\":\"Remove users\",\"numericId\":1145,\"slug\":\"remove-team-members\"}\n71:{\"label\":\"Fast user switching\",\"numericId\":1225,\"slug\":\"fast-user-switching\"}\n72:{\"label\":\"Export list of users\",\"numericId\":1229,\"slug\":\"export-user-list\"}\n73:{\"label\":\"Offboard users\",\"numericId\":1248,\"slug\":\"offboarding-users\"}\n74:{\"label\":\"Admin console session timeout\",\"numericId\":1461,\"slug\":\"admin-console-session-timeout\"}\n67:[\"$68\",\"$6d\",\"$6e\",\"$6f\",\"$70\",\"$71\",\"$72\",\"$73\",\"$74\"]\n66:{\"label\":\"Manage users\",\"numericId\":1373,\"slug\":\"manage-users\",\"items\":\"$67\"}\n75:{\"label\":\"Tailnet lock\",\"numericId\":1226,\"slug\":\"tailnet-lock"])</script><script>self.__next_f.push([1,"\"}\n46:[\"$47\",\"$53\",\"$66\",\"$75\"]\n79:{\"label\":\"Subnet router BGP advertisement\",\"numericId\":1298,\"slug\":\"subnet-bgp\"}\n7a:{\"label\":\"4via6 subnet routers\",\"numericId\":1201,\"slug\":\"4via6-subnets\"}\n7b:{\"label\":\"Site-to-site networking\",\"numericId\":1214,\"slug\":\"site-to-site\"}\n78:[\"$79\",\"$7a\",\"$7b\"]\n77:{\"label\":\"Set up a subnet router\",\"numericId\":1019,\"slug\":\"subnets\",\"items\":\"$78\"}\n7e:{\"label\":\"Use a Mullvad exit node\",\"numericId\":1258,\"slug\":\"mullvad-exit-nodes\"}\n7f:{\"label\":\"Recommended exit nodes\",\"numericId\":1392,\"slug\":\"auto-exit-nodes\"}\n80:{\"label\":\"Mandatory exit nodes\",\"numericId\":1413,\"slug\":\"mandatory-exit-nodes\"}\n7d:[\"$7e\",\"$7f\",\"$80\"]\n7c:{\"label\":\"Set up an exit node\",\"numericId\":1103,\"slug\":\"exit-nodes\",\"items\":\"$7d\"}\n83:{\"label\":\"How app connectors work\",\"numericId\":1342,\"slug\":\"how-app-connectors-work\"}\n84:{\"label\":\"Best practices for SaaS apps\",\"numericId\":1332,\"slug\":\"apps-best-practices\"}\n85:{\"label\":\"Use preset apps\",\"numericId\":1339,\"slug\":\"preset-apps\"}\n82:[\"$83\",\"$84\",\"$85\"]\n81:{\"label\":\"Set up an app connector\",\"numericId\":1281,\"slug\":\"app-connectors\",\"items\":\"$82\"}\n88:{\"label\":\"Configure Linux DNS\",\"numericId\":1188,\"slug\":\"linux-dns\"}\n89:{\"label\":\"Why is resolv.conf being overwritten?\",\"numericId\":1235,\"slug\":\"resolv-conf\"}\n8a:{\"label\":\"Use NextDNS\",\"numericId\":1218,\"slug\":\"nextdns\"}\n8b:{\"label\":\"Use Control D\",\"numericId\":1403,\"slug\":\"control-d\"}\n8c:{\"label\":\"Use Unbound DNS in OPNsense\",\"numericId\":1299,\"slug\":\"opnsense-unbound\"}\n87:[\"$88\",\"$89\",\"$8a\",\"$8b\",\"$8c\"]\n86:{\"label\":\"Use DNS\",\"numericId\":1054,\"slug\":\"dns\",\"items\":\"$87\"}\n8d:{\"label\":\"Set up MagicDNS\",\"numericId\":1081,\"slug\":\"magicdns\"}\n8e:{\"label\":\"Set up high availability\",\"numericId\":1115,\"slug\":\"high-availability\"}\n76:[\"$77\",\"$7c\",\"$81\",\"$86\",\"$8d\",\"$8e\"]\n90:{\"label\":\"Set up a server\",\"numericId\":1245,\"slug\":\"set-up-servers\"}\n91:{\"label\":\"Use tags\",\"numericId\":1068,\"slug\":\"tags\"}\n92:{\"label\":\"Install Tailscale with cloud-init\",\"numericId\":1293,\"slug\":\"cloud-init\"}\n95:{\"label\":\"Automate key expiry\",\"numericId\":1028,\"slug\":\"key-expir"])</script><script>self.__next_f.push([1,"y\"}\n94:[\"$95\"]\n93:{\"label\":\"Use auth keys\",\"numericId\":1085,\"slug\":\"auth-keys\",\"items\":\"$94\"}\n98:{\"label\":\"Use Tailscale SSH Console\",\"numericId\":1216,\"slug\":\"tailscale-ssh-console\"}\n97:[\"$98\"]\n96:{\"label\":\"Use Tailscale SSH\",\"numericId\":1193,\"slug\":\"tailscale-ssh\",\"items\":\"$97\"}\n99:{\"label\":\"Set up HTTPS certificates\",\"numericId\":1153,\"slug\":\"enabling-https\"}\n9a:{\"label\":\"Run an ephemeral node\",\"numericId\":1111,\"slug\":\"ephemeral-nodes\"}\n9b:{\"label\":\"Run unattended\",\"numericId\":1088,\"slug\":\"run-unattended\"}\n8f:[\"$90\",\"$91\",\"$92\",\"$93\",\"$96\",\"$99\",\"$9a\",\"$9b\"]\n9d:{\"label\":\"View services\",\"numericId\":1100,\"slug\":\"services\"}\n9e:{\"label\":\"Share nodes\",\"numericId\":1084,\"slug\":\"sharing\"}\na1:{\"label\":\"Taildrop with NAS\",\"numericId\":1418,\"slug\":\"taildrop-nas\"}\na0:[\"$a1\"]\n9f:{\"label\":\"Use Taildrop\",\"numericId\":1106,\"slug\":\"taildrop\",\"items\":\"$a0\"}\n9c:[\"$9d\",\"$9e\",\"$9f\"]\na5:{\"label\":\"Examples\",\"numericId\":1247,\"slug\":\"funnel-examples\"}\na6:{\"label\":\"Funnel vs. sharing\",\"numericId\":1464,\"slug\":\"funnel-vs-sharing\"}\na4:[\"$a5\",\"$a6\"]\na3:{\"label\":\"Tailscale Funnel\",\"numericId\":1223,\"slug\":\"funnel\",\"items\":\"$a4\"}\na9:{\"label\":\"Examples\",\"numericId\":1313,\"slug\":\"serve-examples\"}\na8:[\"$a9\"]\na7:{\"label\":\"Tailscale Serve\",\"numericId\":1312,\"slug\":\"serve\",\"items\":\"$a8\"}\na2:[\"$a3\",\"$a7\"]\nab:{\"label\":\"Code from your iPad\",\"numericId\":1166,\"slug\":\"vscode-ipad\"}\nac:{\"label\":\"Lock down a server\",\"numericId\":1077,\"slug\":\"secure-server-ubuntu\"}\nad:{\"label\":\"Access a PiKVM\",\"numericId\":1292,\"slug\":\"pikvm\"}\nae:{\"label\":\"Run a Pi-hole\",\"numericId\":1114,\"slug\":\"pi-hole\"}\naf:{\"label\":\"Secure external services\",\"numericId\":1059,\"slug\":\"ip-blocklist-relays\"}\nb0:{\"label\":\"Just-in-time access\",\"numericId\":1443,\"slug\":\"just-in-time-access\"}\nb3:{\"label\":\"ConductorOne\",\"numericId\":1208,\"slug\":\"ondemand-conductorone\"}\nb4:{\"label\":\"Opal\",\"numericId\":1209,\"slug\":\"ondemand-opal\"}\nb5:{\"label\":\"Sym\",\"numericId\":1206,\"slug\":\"ondemand-sym\"}\nb2:[\"$b3\",\"$b4\",\"$b5\"]\nb1:{\"label\":\"On-demand access\",\"numericId\":1374,\"slug\":\"ondemand-access\",\"items\":\"$b2\"}\nba:{\"label\":\""])</script><script>self.__next_f.push([1,"Terraform\",\"numericId\":1210,\"slug\":\"terraform-provider\"}\nbb:{\"label\":\"Pulumi\",\"numericId\":1211,\"slug\":\"pulumi-provider\"}\nb9:[\"$ba\",\"$bb\"]\nb8:{\"label\":\"Infrastructure as code\",\"numericId\":1370,\"slug\":\"infrastructure-as-code\",\"items\":\"$b9\"}\nbc:{\"label\":\"macOS and iOS shortcuts\",\"numericId\":1233,\"slug\":\"mac-ios-shortcuts\"}\nb7:[\"$b8\",\"$bc\"]\nb6:{\"label\":\"Automation\",\"numericId\":1430,\"slug\":\"automations\",\"items\":\"$b7\"}\naa:[\"$ab\",\"$ac\",\"$ad\",\"$ae\",\"$af\",\"$b0\",\"$b1\",\"$b6\"]\nbe:{\"label\":\"AWS Lightsail\",\"numericId\":1128,\"slug\":\"aws-lightsail\"}\nbf:{\"label\":\"AWS VPC\",\"numericId\":1021,\"slug\":\"install-aws\"}\nc0:{\"label\":\"Azure App Service\",\"numericId\":1126,\"slug\":\"azure-app-service\"}\nc1:{\"label\":\"Azure Linux VMs\",\"numericId\":1142,\"slug\":\"cloud-azure-linux\"}\nc2:{\"label\":\"Azure Windows VMs\",\"numericId\":1143,\"slug\":\"cloud-azure-windows\"}\nc3:{\"label\":\"Google Compute Engine VMs\",\"numericId\":1147,\"slug\":\"cloud-gce\"}\nc4:{\"label\":\"Hetzner VMs\",\"numericId\":1150,\"slug\":\"cloud-hetzner\"}\nc5:{\"label\":\"Oracle Cloud VMs\",\"numericId\":1149,\"slug\":\"cloud-oracle\"}\nbd:[\"$be\",\"$bf\",\"$c0\",\"$c1\",\"$c2\",\"$c3\",\"$c4\",\"$c5\"]\nc7:{\"label\":\"Docker\",\"numericId\":1282,\"slug\":\"docker\"}\ncc:{\"label\":\"API server proxy\",\"numericId\":1437,\"slug\":\"kubernetes-operator-api-server-proxy\"}\ncd:{\"label\":\"Egress\",\"numericId\":1438,\"slug\":\"kubernetes-operator-cluster-egress\"}\nce:{\"label\":\"Ingress\",\"numericId\":1439,\"slug\":\"kubernetes-operator-cluster-ingress\"}\ncf:{\"label\":\"Cross cluster\",\"numericId\":1442,\"slug\":\"kubernetes-operator-cross-cluster\"}\nd0:{\"label\":\"Cloud services\",\"numericId\":1440,\"slug\":\"kubernetes-operator-cloud-services\"}\nd1:{\"label\":\"Subnet routers and exit nodes\",\"numericId\":1441,\"slug\":\"kubernetes-operator-connector\"}\nd2:{\"label\":\"Recorder nodes\",\"numericId\":1484,\"slug\":\"kubernetes-operator-deploying-tsrecorder\"}\nd3:{\"label\":\"Operator resource customization\",\"numericId\":1445,\"slug\":\"kubernetes-operator-customization\"}\nd4:{\"label\":\"Troubleshooting\",\"numericId\":1446,\"slug\":\"kubernetes-operator-troubleshooting\"}\ncb:[\"$cc\",\"$cd\",\"$ce\",\"$cf\",\"$d0\",\"$d1\",\"$d2\",\"$d3\",\""])</script><script>self.__next_f.push([1,"$d4\"]\nca:{\"label\":\"Kubernetes operator\",\"numericId\":1236,\"slug\":\"kubernetes-operator\",\"items\":\"$cb\"}\nc9:[\"$ca\"]\nc8:{\"label\":\"Kubernetes\",\"items\":\"$c9\",\"numericId\":1185,\"slug\":\"kubernetes\"}\nd5:{\"label\":\"LXC containers\",\"numericId\":1130,\"slug\":\"lxc-unprivileged\"}\nd6:{\"label\":\"Proxmox\",\"numericId\":1133,\"slug\":\"proxmox\"}\nc6:[\"$c7\",\"$c8\",\"$d5\",\"$d6\"]\nd8:{\"label\":\"AWS App Runner\",\"numericId\":1127,\"slug\":\"aws-app-runner\"}\nd9:{\"label\":\"AWS Lambda\",\"numericId\":1113,\"slug\":\"aws-lambda\"}\nda:{\"label\":\"Fly.io\",\"numericId\":1132,\"slug\":\"flydotio\"}\ndb:{\"label\":\"Google Cloud Run\",\"numericId\":1108,\"slug\":\"cloudrun\"}\ndc:{\"label\":\"Heroku\",\"numericId\":1107,\"slug\":\"heroku\"}\nd7:[\"$d8\",\"$d9\",\"$da\",\"$db\",\"$dc\"]\nde:{\"label\":\"AWS RDS\",\"numericId\":1141,\"slug\":\"aws-rds\"}\ndf:{\"label\":\"Crunchy Bridge\",\"numericId\":1231,\"slug\":\"crunchy-bridge\"}\ndd:[\"$de\",\"$df\"]\ne1:{\"label\":\"code-server\",\"numericId\":1164,\"slug\":\"codeserver\"}\ne2:{\"label\":\"Coder\",\"numericId\":1163,\"slug\":\"coder\"}\ne3:{\"label\":\"CodeSandbox\",\"numericId\":1221,\"slug\":\"codesandbox\"}\ne4:{\"label\":\"GitHub Codespaces\",\"numericId\":1160,\"slug\":\"github-codespaces\"}\ne5:{\"label\":\"Gitpod\",\"numericId\":1161,\"slug\":\"gitpod\"}\ne6:{\"label\":\"OpenVSCode\",\"numericId\":1162,\"slug\":\"openvscode\"}\ne0:[\"$e1\",\"$e2\",\"$e3\",\"$e4\",\"$e5\",\"$e6\"]\ne8:{\"label\":\"Visual Studio Code Extension\",\"numericId\":1265,\"slug\":\"vscode-extension\"}\ne9:{\"label\":\"Tailscale GitHub Action\",\"numericId\":1276,\"slug\":\"tailscale-github-action\"}\nea:{\"label\":\"Tailscale with GitLab CI/CD\",\"numericId\":1287,\"slug\":\"tailscale-gitlab-runner\"}\neb:{\"label\":\"Docker Desktop\",\"numericId\":1184,\"slug\":\"docker-desktop\"}\ne7:[\"$e8\",\"$e9\",\"$ea\",\"$eb\"]\ned:{\"label\":\"Overview\",\"numericId\":1181,\"slug\":\"firewalls\"}\nee:{\"label\":\"OPNsense\",\"numericId\":1097,\"slug\":\"install-opnsense\"}\nef:{\"label\":\"Palo Alto Networks\",\"numericId\":1333,\"slug\":\"firewall-palo-alto-networks\"}\nf0:{\"label\":\"pfSense\",\"numericId\":1146,\"slug\":\"pfsense\"}\nf1:{\"label\":\"Firewall mode\",\"numericId\":1294,\"slug\":\"firewall-mode\"}\nec:[\"$ed\",\"$ee\",\"$ef\",\"$f0\",\"$f1\"]\nf3:{\"label\":\"Caddy Server\",\"numericId\":1190,"])</script><script>self.__next_f.push([1,"\"slug\":\"caddy-certificates\"}\nf4:{\"label\":\"Traefik Proxy\",\"numericId\":1234,\"slug\":\"traefik-certificates\"}\nf2:[\"$f3\",\"$f4\"]\nf6:{\"label\":\"Synology\",\"numericId\":1131,\"slug\":\"synology\"}\nf7:{\"label\":\"QNAP\",\"numericId\":1273,\"slug\":\"qnap\"}\nf5:[\"$f6\",\"$f7\"]\nf9:{\"label\":\"Send recordings to S3\",\"numericId\":1263,\"slug\":\"session-recording-s3\"}\nfa:{\"label\":\"Deploy multiple recorder nodes\",\"numericId\":1262,\"slug\":\"multiple-recorder-nodes\"}\nf8:[\"$f9\",\"$fa\"]\nfc:{\"label\":\"Pricing ↗\",\"href\":\"/pricing\"}\nfd:{\"label\":\"Pricing \u0026 Plans FAQ\",\"numericId\":1251,\"slug\":\"pricing-faq\"}\nfe:{\"label\":\"Free plans and discounts\",\"numericId\":1154,\"slug\":\"free-plans-discounts\"}\nff:{\"label\":\"Modify billing\",\"numericId\":1182,\"slug\":\"billing-information\"}\n100:{\"label\":\"Tailscale on Azure Marketplace\",\"numericId\":1220,\"slug\":\"azure-marketplace\"}\nfb:[\"$fc\",\"$fd\",\"$fe\",\"$ff\",\"$100\"]\n102:{\"label\":\"Grants\",\"numericId\":1324,\"slug\":\"acl-grants\"}\n103:{\"label\":\"IP sets\",\"numericId\":1387,\"slug\":\"ipsets\"}\n104:{\"label\":\"Via in grants\",\"numericId\":1378,\"slug\":\"via\"}\n101:[\"$102\",\"$103\",\"$104\"]\n106:{\"label\":\"tailscale funnel\",\"numericId\":1311,\"slug\":\"tailscale-funnel\"}\n107:{\"label\":\"tailscale lock\",\"numericId\":1243,\"slug\":\"tailscale-lock\"}\n108:{\"label\":\"tailscale serve\",\"numericId\":1242,\"slug\":\"tailscale-serve\"}\n109:{\"label\":\"tailscale up\",\"numericId\":1241,\"slug\":\"tailscale-up\"}\n10a:{\"label\":\"tailscaled\",\"numericId\":1278,\"slug\":\"tailscaled\"}\n105:[\"$106\",\"$107\",\"$108\",\"$109\",\"$10a\"]\n10c:{\"label\":\"OAuth clients\",\"numericId\":1215,\"slug\":\"oauth-clients\"}\n10d:{\"label\":\"tsnet for Go programs\",\"numericId\":1244,\"slug\":\"tsnet\"}\n10b:[\"$10c\",\"$10d\"]\n10f:{\"label\":\"Deployment checklist\",\"numericId\":1344,\"slug\":\"deployment-checklist\"}\n112:{\"label\":\"Node hardening\",\"numericId\":1279,\"slug\":\"security-node-hardening\"}\n113:{\"label\":\"Key and secret management\",\"numericId\":1252,\"slug\":\"key-secret-management\"}\n114:{\"label\":\"Secret scanning\",\"numericId\":1301,\"slug\":\"secret-scanning\"}\n115:{\"label\":\"Admin with passkey\",\"numericId\":1341,\"slug\":\"tailnet-passkey-admin\"}\n111:[\"$112\",\"$113\",\"$11"])</script><script>self.__next_f.push([1,"4\",\"$115\"]\n110:{\"label\":\"Security best practices\",\"items\":\"$111\",\"numericId\":1196,\"slug\":\"security-hardening\"}\n116:{\"label\":\"Performance best practices\",\"numericId\":1320,\"slug\":\"performance-best-practices\"}\n117:{\"label\":\"AWS reference architecture\",\"numericId\":1296,\"slug\":\"aws-reference-architecture\"}\n118:{\"label\":\"Azure reference architecture\",\"numericId\":1314,\"slug\":\"azure-reference-architecture\"}\n10e:[\"$10f\",\"$110\",\"$116\",\"$117\",\"$118\"]\n11a:{\"label\":\"About WireGuard\",\"numericId\":1035,\"slug\":\"wireguard\"}\n11b:{\"label\":\"Control and data planes\",\"numericId\":1508,\"slug\":\"control-data-planes\"}\n11c:{\"label\":\"Direct vs relayed connections\",\"numericId\":1257,\"slug\":\"connection-types\"}\n11d:{\"label\":\"Device connectivity\",\"numericId\":1411,\"slug\":\"device-connectivity\"}\n11e:{\"label\":\"How Tailscale assigns IP addresses\",\"numericId\":1033,\"slug\":\"ip-and-dns-addresses\"}\n11f:{\"label\":\"Tailscale and the OSI model\",\"numericId\":1456,\"slug\":\"osi\"}\n120:{\"label\":\"Smaller binaries for embedded devices\",\"numericId\":1207,\"slug\":\"small-tailscale\"}\n121:{\"label\":\"Kernel vs. netstack subnet routing \u0026 exit nodes\",\"numericId\":1177,\"slug\":\"kernel-vs-userspace-routers\"}\n122:{\"label\":\"Userspace networking mode\",\"numericId\":1112,\"slug\":\"userspace-networking\"}\n123:{\"label\":\"Node keys\",\"numericId\":1010,\"slug\":\"node-keys\"}\n124:{\"label\":\"Protect SSH Servers\",\"numericId\":1009,\"slug\":\"protect-ssh-servers\"}\n125:{\"label\":\"Tailnet lock white paper\",\"numericId\":1230,\"slug\":\"tailnet-lock-whitepaper\"}\n126:{\"label\":\"DERP servers\",\"numericId\":1232,\"slug\":\"derp-servers\"}\n127:{\"label\":\"Zero Trust Networking (ZTN)\",\"numericId\":1123,\"slug\":\"zero-trust\"}\n128:{\"label\":\"IPv4 vs. IPv6 FAQ\",\"numericId\":1134,\"slug\":\"ipv6-faq\"}\n119:[\"$11a\",\"$11b\",\"$11c\",\"$11d\",\"$11e\",\"$11f\",\"$120\",\"$121\",\"$122\",\"$123\",\"$124\",\"$125\",\"$126\",\"$127\",\"$128\"]\n12a:{\"label\":\"Troubleshoot device connectivity\",\"numericId\":1463,\"slug\":\"troubleshoot-connectivity\"}\n129:[\"$12a\"]\n12c:{\"label\":\"Unstable builds\",\"numericId\":1083,\"slug\":\"install-unstable\"}\n12b:[\"$12c\"]\n12e:[\"1240\",\"sso-custom-oidc\"]\n132:{\"l"])</script><script>self.__next_f.push([1,"abel\":\"Quickstart\",\"numericId\":1017,\"slug\":\"install\"}\n133:{\"label\":\"Install Tailscale\",\"numericId\":1347,\"slug\":\"installation\",\"items\":\"$1b\"}\n134:{\"label\":\"Quick guides\",\"numericId\":1415,\"slug\":\"quick-guides\",\"items\":\"$30\"}\n135:{\"label\":\"Set up an identity provider\",\"numericId\":1013,\"slug\":\"sso-providers\",\"items\":\"$38\"}\n136:{\"label\":\"What is Tailscale?\",\"numericId\":1151,\"slug\":\"what-is-tailscale\"}\n131:[\"$132\",\"$133\",\"$134\",\"$135\",\"$136\"]\n138:{\"label\":\"Quickstart\",\"numericId\":1017,\"slug\":\"install\",\"nodes\":\"$undefined\"}\n13b:{\"label\":\"Download ↗\",\"href\":\"/downloads\",\"nodes\":\"$undefined\"}\n13c:{\"label\":\"Update Tailscale\",\"numericId\":1067,\"slug\":\"update\",\"nodes\":\"$undefined\"}\n13d:{\"label\":\"Uninstall Tailscale\",\"numericId\":1069,\"slug\":\"uninstall\",\"nodes\":\"$undefined\"}\n142:{\"label\":\"Deploy on Android\",\"numericId\":1384,\"slug\":\"android-mdm\",\"nodes\":\"$undefined\"}\n143:{\"label\":\"Deploy on iOS/tvOS\",\"numericId\":1380,\"slug\":\"ios-mdm\",\"nodes\":\"$undefined\"}\n144:{\"label\":\"Deploy on macOS\",\"numericId\":1286,\"slug\":\"macos-mdm\",\"nodes\":\"$undefined\"}\n145:{\"label\":\"Deploy on Windows\",\"numericId\":1318,\"slug\":\"windows-mdm\",\"nodes\":\"$undefined\"}\n141:[\"$142\",\"$143\",\"$144\",\"$145\"]\n140:{\"label\":\"Customize Tailscale using system policies\",\"numericId\":1315,\"slug\":\"mdm-keys\",\"items\":\"$22\",\"nodes\":\"$141\"}\n148:{\"label\":\"Google Workspace\",\"numericId\":1386,\"slug\":\"mdm-google-workspace\",\"nodes\":\"$undefined\"}\n149:{\"label\":\"Jamf\",\"numericId\":1328,\"slug\":\"mdm-jamf\",\"nodes\":\"$undefined\"}\n14a:{\"label\":\"JumpCloud\",\"numericId\":1485,\"slug\":\"mdm-jumpcloud\",\"nodes\":\"$undefined\"}\n14b:{\"label\":\"Kandji\",\"numericId\":1329,\"slug\":\"mdm-kandji\",\"nodes\":\"$undefined\"}\n14c:{\"label\":\"Microsoft Intune\",\"numericId\":1327,\"slug\":\"mdm-microsoft-intune\",\"nodes\":\"$undefined\"}\n14d:{\"label\":\"SimpleMDM\",\"numericId\":1330,\"slug\":\"mdm-simplemdm\",\"nodes\":\"$undefined\"}\n14e:{\"label\":\"TinyMDM\",\"numericId\":1385,\"slug\":\"mdm-tinymdm\",\"nodes\":\"$undefined\"}\n147:[\"$148\",\"$149\",\"$14a\",\"$14b\",\"$14c\",\"$14d\",\"$14e\"]\n146:{\"label\":\"MDM integration partners\",\"numericId\":1448,\"slug\":\"mdm-integration-p"])</script><script>self.__next_f.push([1,"artners\",\"items\":\"$28\",\"nodes\":\"$147\"}\n13f:[\"$140\",\"$146\"]\n13e:{\"label\":\"Deploy with MDM\",\"numericId\":1362,\"slug\":\"mdm\",\"items\":\"$20\",\"nodes\":\"$13f\"}\n13a:[\"$13b\",\"$13c\",\"$13d\",\"$13e\"]\n139:{\"label\":\"Install Tailscale\",\"numericId\":1347,\"slug\":\"installation\",\"items\":\"$1b\",\"nodes\":\"$13a\"}\n151:{\"label\":\"Use exit nodes\",\"numericId\":1408,\"slug\":\"quick-guide-exit-node\",\"nodes\":\"$undefined\"}\n152:{\"label\":\"Configure a subnet router\",\"numericId\":1406,\"slug\":\"quick-guide-subnets\",\"nodes\":\"$undefined\"}\n153:{\"label\":\"Host a website\",\"numericId\":1310,\"slug\":\"quick-guide-host-websites\",\"nodes\":\"$undefined\"}\n154:{\"label\":\"Install on AWS\",\"numericId\":1449,\"slug\":\"quick-guide-aws\",\"nodes\":\"$undefined\"}\n155:{\"label\":\"SSH into a Linux virtual machine\",\"numericId\":1308,\"slug\":\"quick-guide-ssh-linux-vm\",\"nodes\":\"$undefined\"}\n156:{\"label\":\"Access a virtual private cloud (VPC)\",\"numericId\":1309,\"slug\":\"quick-guide-access-vpc\",\"nodes\":\"$undefined\"}\n157:{\"label\":\"Add a Docker container\",\"numericId\":1453,\"slug\":\"quick-guide-docker\",\"nodes\":\"$undefined\"}\n150:[\"$151\",\"$152\",\"$153\",\"$154\",\"$155\",\"$156\",\"$157\"]\n14f:{\"label\":\"Quick guides\",\"numericId\":1415,\"slug\":\"quick-guides\",\"items\":\"$30\",\"nodes\":\"$150\"}\n15a:{\"label\":\"Google\",\"numericId\":1199,\"slug\":\"sso-google\",\"nodes\":\"$undefined\"}\n15b:{\"label\":\"Microsoft Entra ID\",\"numericId\":1285,\"slug\":\"sso-microsoft\",\"nodes\":\"$undefined\"}\n15c:{\"label\":\"Okta\",\"numericId\":1066,\"slug\":\"sso-okta\",\"nodes\":\"$undefined\"}\n15d:{\"label\":\"GitHub\",\"numericId\":1284,\"slug\":\"sso-github\",\"nodes\":\"$undefined\"}\n15e:{\"label\":\"Apple\",\"numericId\":1283,\"slug\":\"sso-apple\",\"nodes\":\"$undefined\"}\n15f:{\"label\":\"OneLogin\",\"numericId\":1070,\"slug\":\"sso-onelogin\",\"nodes\":\"$undefined\"}\n162:{\"label\":\"Google Workspace\",\"numericId\":1317,\"slug\":\"sso-google-sync\",\"nodes\":\"$undefined\"}\n163:{\"label\":\"Microsoft Entra ID\",\"numericId\":1249,\"slug\":\"sso-entra-id-scim\",\"nodes\":\"$undefined\"}\n164:{\"label\":\"Okta\",\"numericId\":1180,\"slug\":\"sso-okta-scim\",\"nodes\":\"$undefined\"}\n161:[\"$162\",\"$163\",\"$164\"]\n160:{\"label\":\"User \u0026 group provisioning\",\"numericI"])</script><script>self.__next_f.push([1,"d\":1290,\"slug\":\"user-group-provisioning\",\"items\":\"$40\",\"nodes\":\"$161\"}\n165:{\"label\":\"Custom OIDC providers\",\"numericId\":1240,\"slug\":\"sso-custom-oidc\",\"nodes\":\"$undefined\"}\n166:{\"label\":\"Enable 2FA and MFA\",\"numericId\":1075,\"slug\":\"multifactor-auth\",\"nodes\":\"$undefined\"}\n159:[\"$15a\",\"$15b\",\"$15c\",\"$15d\",\"$15e\",\"$15f\",\"$160\",\"$165\",\"$166\"]\n158:{\"label\":\"Set up an identity provider\",\"numericId\":1013,\"slug\":\"sso-providers\",\"items\":\"$38\",\"nodes\":\"$159\"}\n167:{\"label\":\"What is Tailscale?\",\"numericId\":1151,\"slug\":\"what-is-tailscale\",\"nodes\":\"$undefined\"}\n137:[\"$138\",\"$139\",\"$14f\",\"$158\",\"$167\"]\n130:{\"label\":\"Start\",\"slug\":\"start\",\"numericId\":1346,\"items\":\"$131\",\"nodes\":\"$137\"}\n16a:{\"label\":\"Manage Access\",\"group\":true,\"numericId\":1350,\"slug\":\"manage\",\"items\":\"$46\"}\n16b:{\"label\":\"Route Traffic\",\"group\":true,\"numericId\":1351,\"slug\":\"route\",\"items\":\"$76\"}\n16c:{\"label\":\"Set Up Servers\",\"group\":true,\"numericId\":1352,\"slug\":\"servers\",\"items\":\"$8f\"}\n16d:{\"label\":\"Access \u0026 Share Services\",\"group\":true,\"numericId\":1354,\"slug\":\"share\",\"items\":\"$9c\"}\n16e:{\"label\":\"Share a web server\",\"group\":true,\"numericId\":1353,\"slug\":\"share-web-server\",\"items\":\"$a2\"}\n16f:{\"label\":\"Solutions\",\"group\":true,\"numericId\":1355,\"slug\":\"solutions\",\"items\":\"$aa\"}\n169:[\"$16a\",\"$16b\",\"$16c\",\"$16d\",\"$16e\",\"$16f\"]\n177:{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"nodes\":\"$undefined\"}\n176:[\"$177\"]\n175:{\"label\":\"Manage ACLs\",\"numericId\":1018,\"slug\":\"acls\",\"items\":\"$4a\",\"nodes\":\"$176\"}\n178:{\"label\":\"Manage grants\",\"numericId\":1324,\"slug\":\"acl-grants\",\"nodes\":\"$undefined\"}\n179:{\"label\":\"Edit the tailnet policy file\",\"numericId\":1338,\"slug\":\"acl-edit\",\"nodes\":\"$undefined\"}\n17c:{\"label\":\"Manage ACLs with Bitbucket\",\"numericId\":1302,\"slug\":\"gitops-acls-bitbucket\",\"nodes\":\"$undefined\"}\n17d:{\"label\":\"Manage ACLs with GitHub\",\"numericId\":1306,\"slug\":\"gitops-acls-github\",\"nodes\":\"$undefined\"}\n17e:{\"label\":\"Manage ACLs with GitLab\",\"numericId\":1254,\"slug\":\"gitops-acls-gitlab\",\"nodes\":\"$undefined\"}\n17b:[\"$17c\",\"$17d\",\"$17e\"]\n17a:{\"label\":\"Manage ACLs with G"])</script><script>self.__next_f.push([1,"itOps\",\"numericId\":1204,\"slug\":\"gitopcs-acls\",\"items\":\"$4f\",\"nodes\":\"$17b\"}\n174:[\"$175\",\"$178\",\"$179\",\"$17a\"]\n173:{\"label\":\"Manage access control\",\"numericId\":1393,\"slug\":\"access-control\",\"items\":\"$48\",\"nodes\":\"$174\"}\n181:{\"label\":\"Add a device\",\"numericId\":1316,\"slug\":\"device-add\",\"nodes\":\"$undefined\"}\n182:{\"label\":\"Device approval\",\"numericId\":1099,\"slug\":\"device-approval\",\"nodes\":\"$undefined\"}\n183:{\"label\":\"Rename a device\",\"numericId\":1098,\"slug\":\"machine-names\",\"nodes\":\"$undefined\"}\n184:{\"label\":\"Remove a device\",\"numericId\":1260,\"slug\":\"device-remove\",\"nodes\":\"$undefined\"}\n187:{\"label\":\"Use Device Identity Collection\",\"numericId\":1326,\"slug\":\"device-identity\",\"nodes\":\"$undefined\"}\n188:{\"label\":\"CrowdStrike Falcon\",\"numericId\":1289,\"slug\":\"crowdstrike-zta\",\"nodes\":\"$undefined\"}\n189:{\"label\":\"SentinelOne\",\"numericId\":1390,\"slug\":\"sentinelone\",\"nodes\":\"$undefined\"}\n18a:{\"label\":\"1Password XAM\",\"numericId\":1407,\"slug\":\"kolide\",\"nodes\":\"$undefined\"}\n18b:{\"label\":\"Jamf Pro\",\"numericId\":1409,\"slug\":\"jamf-pro\",\"nodes\":\"$undefined\"}\n18c:{\"label\":\"Microsoft Intune\",\"numericId\":1410,\"slug\":\"intune\",\"nodes\":\"$undefined\"}\n18d:{\"label\":\"Kandji\",\"numericId\":1405,\"slug\":\"kandji\",\"nodes\":\"$undefined\"}\n186:[\"$187\",\"$188\",\"$189\",\"$18a\",\"$18b\",\"$18c\",\"$18d\"]\n185:{\"label\":\"Device posture management\",\"numericId\":1288,\"slug\":\"device-posture\",\"items\":\"$5a\",\"nodes\":\"$186\"}\n18e:{\"label\":\"Filter devices\",\"numericId\":1176,\"slug\":\"filter-devices\",\"nodes\":\"$undefined\"}\n18f:{\"label\":\"Export list of devices\",\"numericId\":1228,\"slug\":\"export-device-list\",\"nodes\":\"$undefined\"}\n190:{\"label\":\"Use the web interface\",\"numericId\":1325,\"slug\":\"device-web-interface\",\"nodes\":\"$undefined\"}\n191:{\"label\":\"Add a device using a QR code\",\"numericId\":1336,\"slug\":\"device-add-qr-code\",\"nodes\":\"$undefined\"}\n180:[\"$181\",\"$182\",\"$183\",\"$184\",\"$185\",\"$18e\",\"$18f\",\"$190\",\"$191\"]\n17f:{\"label\":\"Manage devices\",\"numericId\":1372,\"slug\":\"manage-devices\",\"items\":\"$54\",\"nodes\":\"$180\"}\n196:{\"label\":\"Invite team members\",\"numericId\":1064,\"slug\":\"invite-team-members\",\"node"])</script><script>self.__next_f.push([1,"s\":\"$undefined\"}\n197:{\"label\":\"Invite any user\",\"numericId\":1271,\"slug\":\"invite-any-user\",\"nodes\":\"$undefined\"}\n198:{\"label\":\"Use passkeys\",\"numericId\":1269,\"slug\":\"passkeys\",\"nodes\":\"$undefined\"}\n195:[\"$196\",\"$197\",\"$198\"]\n194:{\"label\":\"Invite users\",\"items\":\"$69\",\"numericId\":1371,\"slug\":\"invite-users\",\"nodes\":\"$195\"}\n199:{\"label\":\"User approval\",\"numericId\":1239,\"slug\":\"user-approval\",\"nodes\":\"$undefined\"}\n19a:{\"label\":\"User roles\",\"numericId\":1138,\"slug\":\"user-roles\",\"nodes\":\"$undefined\"}\n19b:{\"label\":\"Change user roles\",\"numericId\":1171,\"slug\":\"changing-user-roles\",\"nodes\":\"$undefined\"}\n19c:{\"label\":\"Remove users\",\"numericId\":1145,\"slug\":\"remove-team-members\",\"nodes\":\"$undefined\"}\n19d:{\"label\":\"Fast user switching\",\"numericId\":1225,\"slug\":\"fast-user-switching\",\"nodes\":\"$undefined\"}\n19e:{\"label\":\"Export list of users\",\"numericId\":1229,\"slug\":\"export-user-list\",\"nodes\":\"$undefined\"}\n19f:{\"label\":\"Offboard users\",\"numericId\":1248,\"slug\":\"offboarding-users\",\"nodes\":\"$undefined\"}\n1a0:{\"label\":\"Admin console session timeout\",\"numericId\":1461,\"slug\":\"admin-console-session-timeout\",\"nodes\":\"$undefined\"}\n193:[\"$194\",\"$199\",\"$19a\",\"$19b\",\"$19c\",\"$19d\",\"$19e\",\"$19f\",\"$1a0\"]\n192:{\"label\":\"Manage users\",\"numericId\":1373,\"slug\":\"manage-users\",\"items\":\"$67\",\"nodes\":\"$193\"}\n1a1:{\"label\":\"Tailnet lock\",\"numericId\":1226,\"slug\":\"tailnet-lock\",\"nodes\":\"$undefined\"}\n172:[\"$173\",\"$17f\",\"$192\",\"$1a1\"]\n171:{\"label\":\"Manage Access\",\"group\":true,\"numericId\":1350,\"slug\":\"manage\",\"items\":\"$46\",\"nodes\":\"$172\"}\n1a6:{\"label\":\"Subnet router BGP advertisement\",\"numericId\":1298,\"slug\":\"subnet-bgp\",\"nodes\":\"$undefined\"}\n1a7:{\"label\":\"4via6 subnet routers\",\"numericId\":1201,\"slug\":\"4via6-subnets\",\"nodes\":\"$undefined\"}\n1a8:{\"label\":\"Site-to-site networking\",\"numericId\":1214,\"slug\":\"site-to-site\",\"nodes\":\"$undefined\"}\n1a5:[\"$1a6\",\"$1a7\",\"$1a8\"]\n1a4:{\"label\":\"Set up a subnet router\",\"numericId\":1019,\"slug\":\"subnets\",\"items\":\"$78\",\"nodes\":\"$1a5\"}\n1ab:{\"label\":\"Use a Mullvad exit node\",\"numericId\":1258,\"slug\":\"mullvad-exit-nodes\",\"nodes\":\"$undefined\""])</script><script>self.__next_f.push([1,"}\n1ac:{\"label\":\"Recommended exit nodes\",\"numericId\":1392,\"slug\":\"auto-exit-nodes\",\"nodes\":\"$undefined\"}\n1ad:{\"label\":\"Mandatory exit nodes\",\"numericId\":1413,\"slug\":\"mandatory-exit-nodes\",\"nodes\":\"$undefined\"}\n1aa:[\"$1ab\",\"$1ac\",\"$1ad\"]\n1a9:{\"label\":\"Set up an exit node\",\"numericId\":1103,\"slug\":\"exit-nodes\",\"items\":\"$7d\",\"nodes\":\"$1aa\"}\n1b0:{\"label\":\"How app connectors work\",\"numericId\":1342,\"slug\":\"how-app-connectors-work\",\"nodes\":\"$undefined\"}\n1b1:{\"label\":\"Best practices for SaaS apps\",\"numericId\":1332,\"slug\":\"apps-best-practices\",\"nodes\":\"$undefined\"}\n1b2:{\"label\":\"Use preset apps\",\"numericId\":1339,\"slug\":\"preset-apps\",\"nodes\":\"$undefined\"}\n1af:[\"$1b0\",\"$1b1\",\"$1b2\"]\n1ae:{\"label\":\"Set up an app connector\",\"numericId\":1281,\"slug\":\"app-connectors\",\"items\":\"$82\",\"nodes\":\"$1af\"}\n1b5:{\"label\":\"Configure Linux DNS\",\"numericId\":1188,\"slug\":\"linux-dns\",\"nodes\":\"$undefined\"}\n1b6:{\"label\":\"Why is resolv.conf being overwritten?\",\"numericId\":1235,\"slug\":\"resolv-conf\",\"nodes\":\"$undefined\"}\n1b7:{\"label\":\"Use NextDNS\",\"numericId\":1218,\"slug\":\"nextdns\",\"nodes\":\"$undefined\"}\n1b8:{\"label\":\"Use Control D\",\"numericId\":1403,\"slug\":\"control-d\",\"nodes\":\"$undefined\"}\n1b9:{\"label\":\"Use Unbound DNS in OPNsense\",\"numericId\":1299,\"slug\":\"opnsense-unbound\",\"nodes\":\"$undefined\"}\n1b4:[\"$1b5\",\"$1b6\",\"$1b7\",\"$1b8\",\"$1b9\"]\n1b3:{\"label\":\"Use DNS\",\"numericId\":1054,\"slug\":\"dns\",\"items\":\"$87\",\"nodes\":\"$1b4\"}\n1ba:{\"label\":\"Set up MagicDNS\",\"numericId\":1081,\"slug\":\"magicdns\",\"nodes\":\"$undefined\"}\n1bb:{\"label\":\"Set up high availability\",\"numericId\":1115,\"slug\":\"high-availability\",\"nodes\":\"$undefined\"}\n1a3:[\"$1a4\",\"$1a9\",\"$1ae\",\"$1b3\",\"$1ba\",\"$1bb\"]\n1a2:{\"label\":\"Route Traffic\",\"group\":true,\"numericId\":1351,\"slug\":\"route\",\"items\":\"$76\",\"nodes\":\"$1a3\"}\n1be:{\"label\":\"Set up a server\",\"numericId\":1245,\"slug\":\"set-up-servers\",\"nodes\":\"$undefined\"}\n1bf:{\"label\":\"Use tags\",\"numericId\":1068,\"slug\":\"tags\",\"nodes\":\"$undefined\"}\n1c0:{\"label\":\"Install Tailscale with cloud-init\",\"numericId\":1293,\"slug\":\"cloud-init\",\"nodes\":\"$undefined\"}\n1c3:{\"label\":\"Automate key"])</script><script>self.__next_f.push([1," expiry\",\"numericId\":1028,\"slug\":\"key-expiry\",\"nodes\":\"$undefined\"}\n1c2:[\"$1c3\"]\n1c1:{\"label\":\"Use auth keys\",\"numericId\":1085,\"slug\":\"auth-keys\",\"items\":\"$94\",\"nodes\":\"$1c2\"}\n1c6:{\"label\":\"Use Tailscale SSH Console\",\"numericId\":1216,\"slug\":\"tailscale-ssh-console\",\"nodes\":\"$undefined\"}\n1c5:[\"$1c6\"]\n1c4:{\"label\":\"Use Tailscale SSH\",\"numericId\":1193,\"slug\":\"tailscale-ssh\",\"items\":\"$97\",\"nodes\":\"$1c5\"}\n1c7:{\"label\":\"Set up HTTPS certificates\",\"numericId\":1153,\"slug\":\"enabling-https\",\"nodes\":\"$undefined\"}\n1c8:{\"label\":\"Run an ephemeral node\",\"numericId\":1111,\"slug\":\"ephemeral-nodes\",\"nodes\":\"$undefined\"}\n1c9:{\"label\":\"Run unattended\",\"numericId\":1088,\"slug\":\"run-unattended\",\"nodes\":\"$undefined\"}\n1bd:[\"$1be\",\"$1bf\",\"$1c0\",\"$1c1\",\"$1c4\",\"$1c7\",\"$1c8\",\"$1c9\"]\n1bc:{\"label\":\"Set Up Servers\",\"group\":true,\"numericId\":1352,\"slug\":\"servers\",\"items\":\"$8f\",\"nodes\":\"$1bd\"}\n1cc:{\"label\":\"View services\",\"numericId\":1100,\"slug\":\"services\",\"nodes\":\"$undefined\"}\n1cd:{\"label\":\"Share nodes\",\"numericId\":1084,\"slug\":\"sharing\",\"nodes\":\"$undefined\"}\n1d0:{\"label\":\"Taildrop with NAS\",\"numericId\":1418,\"slug\":\"taildrop-nas\",\"nodes\":\"$undefined\"}\n1cf:[\"$1d0\"]\n1ce:{\"label\":\"Use Taildrop\",\"numericId\":1106,\"slug\":\"taildrop\",\"items\":\"$a0\",\"nodes\":\"$1cf\"}\n1cb:[\"$1cc\",\"$1cd\",\"$1ce\"]\n1ca:{\"label\":\"Access \u0026 Share Services\",\"group\":true,\"numericId\":1354,\"slug\":\"share\",\"items\":\"$9c\",\"nodes\":\"$1cb\"}\n1d5:{\"label\":\"Examples\",\"numericId\":1247,\"slug\":\"funnel-examples\",\"nodes\":\"$undefined\"}\n1d6:{\"label\":\"Funnel vs. sharing\",\"numericId\":1464,\"slug\":\"funnel-vs-sharing\",\"nodes\":\"$undefined\"}\n1d4:[\"$1d5\",\"$1d6\"]\n1d3:{\"label\":\"Tailscale Funnel\",\"numericId\":1223,\"slug\":\"funnel\",\"items\":\"$a4\",\"nodes\":\"$1d4\"}\n1d9:{\"label\":\"Examples\",\"numericId\":1313,\"slug\":\"serve-examples\",\"nodes\":\"$undefined\"}\n1d8:[\"$1d9\"]\n1d7:{\"label\":\"Tailscale Serve\",\"numericId\":1312,\"slug\":\"serve\",\"items\":\"$a8\",\"nodes\":\"$1d8\"}\n1d2:[\"$1d3\",\"$1d7\"]\n1d1:{\"label\":\"Share a web server\",\"group\":true,\"numericId\":1353,\"slug\":\"share-web-server\",\"items\":\"$a2\",\"nodes\":\"$1d2\"}\n1dc:{\"label\":\"Code from your iPa"])</script><script>self.__next_f.push([1,"d\",\"numericId\":1166,\"slug\":\"vscode-ipad\",\"nodes\":\"$undefined\"}\n1dd:{\"label\":\"Lock down a server\",\"numericId\":1077,\"slug\":\"secure-server-ubuntu\",\"nodes\":\"$undefined\"}\n1de:{\"label\":\"Access a PiKVM\",\"numericId\":1292,\"slug\":\"pikvm\",\"nodes\":\"$undefined\"}\n1df:{\"label\":\"Run a Pi-hole\",\"numericId\":1114,\"slug\":\"pi-hole\",\"nodes\":\"$undefined\"}\n1e0:{\"label\":\"Secure external services\",\"numericId\":1059,\"slug\":\"ip-blocklist-relays\",\"nodes\":\"$undefined\"}\n1e1:{\"label\":\"Just-in-time access\",\"numericId\":1443,\"slug\":\"just-in-time-access\",\"nodes\":\"$undefined\"}\n1e4:{\"label\":\"ConductorOne\",\"numericId\":1208,\"slug\":\"ondemand-conductorone\",\"nodes\":\"$undefined\"}\n1e5:{\"label\":\"Opal\",\"numericId\":1209,\"slug\":\"ondemand-opal\",\"nodes\":\"$undefined\"}\n1e6:{\"label\":\"Sym\",\"numericId\":1206,\"slug\":\"ondemand-sym\",\"nodes\":\"$undefined\"}\n1e3:[\"$1e4\",\"$1e5\",\"$1e6\"]\n1e2:{\"label\":\"On-demand access\",\"numericId\":1374,\"slug\":\"ondemand-access\",\"items\":\"$b2\",\"nodes\":\"$1e3\"}\n1eb:{\"label\":\"Terraform\",\"numericId\":1210,\"slug\":\"terraform-provider\",\"nodes\":\"$undefined\"}\n1ec:{\"label\":\"Pulumi\",\"numericId\":1211,\"slug\":\"pulumi-provider\",\"nodes\":\"$undefined\"}\n1ea:[\"$1eb\",\"$1ec\"]\n1e9:{\"label\":\"Infrastructure as code\",\"numericId\":1370,\"slug\":\"infrastructure-as-code\",\"items\":\"$b9\",\"nodes\":\"$1ea\"}\n1ed:{\"label\":\"macOS and iOS shortcuts\",\"numericId\":1233,\"slug\":\"mac-ios-shortcuts\",\"nodes\":\"$undefined\"}\n1e8:[\"$1e9\",\"$1ed\"]\n1e7:{\"label\":\"Automation\",\"numericId\":1430,\"slug\":\"automations\",\"items\":\"$b7\",\"nodes\":\"$1e8\"}\n1db:[\"$1dc\",\"$1dd\",\"$1de\",\"$1df\",\"$1e0\",\"$1e1\",\"$1e2\",\"$1e7\"]\n1da:{\"label\":\"Solutions\",\"group\":true,\"numericId\":1355,\"slug\":\"solutions\",\"items\":\"$aa\",\"nodes\":\"$1db\"}\n170:[\"$171\",\"$1a2\",\"$1bc\",\"$1ca\",\"$1d1\",\"$1da\"]\n168:{\"label\":\"How-to Guides\",\"numericId\":1348,\"slug\":\"guides\",\"items\":\"$169\",\"nodes\":\"$170\"}\n1f0:{\"label\":\"Cloud servers\",\"numericId\":\"integrations\",\"slug\":\"cloud-server\",\"items\":\"$bd\"}\n1f1:{\"label\":\"Containers and virtualization\",\"numericId\":1358,\"slug\":\"containers-and-virtualization\",\"items\":\"$c6\"}\n1f2:{\"label\":\"Serverless apps\",\"numericId\":1364,\"slug\":\"serve"])</script><script>self.__next_f.push([1,"rless\",\"items\":\"$d7\"}\n1f3:{\"label\":\"Databases\",\"numericId\":1359,\"slug\":\"database\",\"items\":\"$dd\"}\n1f4:{\"label\":\"Remote environments\",\"items\":\"$e0\",\"numericId\":1363,\"slug\":\"remote-code\"}\n1f5:{\"label\":\"Developer tools\",\"numericId\":1360,\"slug\":\"developer-tools\",\"items\":\"$e7\"}\n1f6:{\"label\":\"Firewalls\",\"numericId\":1361,\"slug\":\"firewall\",\"items\":\"$ec\"}\n1f7:{\"label\":\"Web servers\",\"numericId\":1365,\"slug\":\"webserver\",\"items\":\"$f2\"}\n1f8:{\"label\":\"NAS\",\"numericId\":1307,\"slug\":\"nas\",\"items\":\"$f5\"}\n1ef:[\"$1f0\",\"$1f1\",\"$1f2\",\"$1f3\",\"$1f4\",\"$1f5\",\"$1f6\",\"$1f7\",\"$1f8\"]\n1fc:{\"label\":\"AWS Lightsail\",\"numericId\":1128,\"slug\":\"aws-lightsail\",\"nodes\":\"$undefined\"}\n1fd:{\"label\":\"AWS VPC\",\"numericId\":1021,\"slug\":\"install-aws\",\"nodes\":\"$undefined\"}\n1fe:{\"label\":\"Azure App Service\",\"numericId\":1126,\"slug\":\"azure-app-service\",\"nodes\":\"$undefined\"}\n1ff:{\"label\":\"Azure Linux VMs\",\"numericId\":1142,\"slug\":\"cloud-azure-linux\",\"nodes\":\"$undefined\"}\n200:{\"label\":\"Azure Windows VMs\",\"numericId\":1143,\"slug\":\"cloud-azure-windows\",\"nodes\":\"$undefined\"}\n201:{\"label\":\"Google Compute Engine VMs\",\"numericId\":1147,\"slug\":\"cloud-gce\",\"nodes\":\"$undefined\"}\n202:{\"label\":\"Hetzner VMs\",\"numericId\":1150,\"slug\":\"cloud-hetzner\",\"nodes\":\"$undefined\"}\n203:{\"label\":\"Oracle Cloud VMs\",\"numericId\":1149,\"slug\":\"cloud-oracle\",\"nodes\":\"$undefined\"}\n1fb:[\"$1fc\",\"$1fd\",\"$1fe\",\"$1ff\",\"$200\",\"$201\",\"$202\",\"$203\"]\n1fa:{\"label\":\"Cloud servers\",\"numericId\":\"integrations\",\"slug\":\"cloud-server\",\"items\":\"$bd\",\"nodes\":\"$1fb\"}\n206:{\"label\":\"Docker\",\"numericId\":1282,\"slug\":\"docker\",\"nodes\":\"$undefined\"}\n20b:{\"label\":\"API server proxy\",\"numericId\":1437,\"slug\":\"kubernetes-operator-api-server-proxy\",\"nodes\":\"$undefined\"}\n20c:{\"label\":\"Egress\",\"numericId\":1438,\"slug\":\"kubernetes-operator-cluster-egress\",\"nodes\":\"$undefined\"}\n20d:{\"label\":\"Ingress\",\"numericId\":1439,\"slug\":\"kubernetes-operator-cluster-ingress\",\"nodes\":\"$undefined\"}\n20e:{\"label\":\"Cross cluster\",\"numericId\":1442,\"slug\":\"kubernetes-operator-cross-cluster\",\"nodes\":\"$undefined\"}\n20f:{\"label\":\"Cloud services\",\"numericId\":1440,\"sl"])</script><script>self.__next_f.push([1,"ug\":\"kubernetes-operator-cloud-services\",\"nodes\":\"$undefined\"}\n210:{\"label\":\"Subnet routers and exit nodes\",\"numericId\":1441,\"slug\":\"kubernetes-operator-connector\",\"nodes\":\"$undefined\"}\n211:{\"label\":\"Recorder nodes\",\"numericId\":1484,\"slug\":\"kubernetes-operator-deploying-tsrecorder\",\"nodes\":\"$undefined\"}\n212:{\"label\":\"Operator resource customization\",\"numericId\":1445,\"slug\":\"kubernetes-operator-customization\",\"nodes\":\"$undefined\"}\n213:{\"label\":\"Troubleshooting\",\"numericId\":1446,\"slug\":\"kubernetes-operator-troubleshooting\",\"nodes\":\"$undefined\"}\n20a:[\"$20b\",\"$20c\",\"$20d\",\"$20e\",\"$20f\",\"$210\",\"$211\",\"$212\",\"$213\"]\n209:{\"label\":\"Kubernetes operator\",\"numericId\":1236,\"slug\":\"kubernetes-operator\",\"items\":\"$cb\",\"nodes\":\"$20a\"}\n208:[\"$209\"]\n207:{\"label\":\"Kubernetes\",\"items\":\"$c9\",\"numericId\":1185,\"slug\":\"kubernetes\",\"nodes\":\"$208\"}\n214:{\"label\":\"LXC containers\",\"numericId\":1130,\"slug\":\"lxc-unprivileged\",\"nodes\":\"$undefined\"}\n215:{\"label\":\"Proxmox\",\"numericId\":1133,\"slug\":\"proxmox\",\"nodes\":\"$undefined\"}\n205:[\"$206\",\"$207\",\"$214\",\"$215\"]\n204:{\"label\":\"Containers and virtualization\",\"numericId\":1358,\"slug\":\"containers-and-virtualization\",\"items\":\"$c6\",\"nodes\":\"$205\"}\n218:{\"label\":\"AWS App Runner\",\"numericId\":1127,\"slug\":\"aws-app-runner\",\"nodes\":\"$undefined\"}\n219:{\"label\":\"AWS Lambda\",\"numericId\":1113,\"slug\":\"aws-lambda\",\"nodes\":\"$undefined\"}\n21a:{\"label\":\"Fly.io\",\"numericId\":1132,\"slug\":\"flydotio\",\"nodes\":\"$undefined\"}\n21b:{\"label\":\"Google Cloud Run\",\"numericId\":1108,\"slug\":\"cloudrun\",\"nodes\":\"$undefined\"}\n21c:{\"label\":\"Heroku\",\"numericId\":1107,\"slug\":\"heroku\",\"nodes\":\"$undefined\"}\n217:[\"$218\",\"$219\",\"$21a\",\"$21b\",\"$21c\"]\n216:{\"label\":\"Serverless apps\",\"numericId\":1364,\"slug\":\"serverless\",\"items\":\"$d7\",\"nodes\":\"$217\"}\n21f:{\"label\":\"AWS RDS\",\"numericId\":1141,\"slug\":\"aws-rds\",\"nodes\":\"$undefined\"}\n220:{\"label\":\"Crunchy Bridge\",\"numericId\":1231,\"slug\":\"crunchy-bridge\",\"nodes\":\"$undefined\"}\n21e:[\"$21f\",\"$220\"]\n21d:{\"label\":\"Databases\",\"numericId\":1359,\"slug\":\"database\",\"items\":\"$dd\",\"nodes\":\"$21e\"}\n223:{\"label\":\"code-server\",\"nu"])</script><script>self.__next_f.push([1,"mericId\":1164,\"slug\":\"codeserver\",\"nodes\":\"$undefined\"}\n224:{\"label\":\"Coder\",\"numericId\":1163,\"slug\":\"coder\",\"nodes\":\"$undefined\"}\n225:{\"label\":\"CodeSandbox\",\"numericId\":1221,\"slug\":\"codesandbox\",\"nodes\":\"$undefined\"}\n226:{\"label\":\"GitHub Codespaces\",\"numericId\":1160,\"slug\":\"github-codespaces\",\"nodes\":\"$undefined\"}\n227:{\"label\":\"Gitpod\",\"numericId\":1161,\"slug\":\"gitpod\",\"nodes\":\"$undefined\"}\n228:{\"label\":\"OpenVSCode\",\"numericId\":1162,\"slug\":\"openvscode\",\"nodes\":\"$undefined\"}\n222:[\"$223\",\"$224\",\"$225\",\"$226\",\"$227\",\"$228\"]\n221:{\"label\":\"Remote environments\",\"items\":\"$e0\",\"numericId\":1363,\"slug\":\"remote-code\",\"nodes\":\"$222\"}\n22b:{\"label\":\"Visual Studio Code Extension\",\"numericId\":1265,\"slug\":\"vscode-extension\",\"nodes\":\"$undefined\"}\n22c:{\"label\":\"Tailscale GitHub Action\",\"numericId\":1276,\"slug\":\"tailscale-github-action\",\"nodes\":\"$undefined\"}\n22d:{\"label\":\"Tailscale with GitLab CI/CD\",\"numericId\":1287,\"slug\":\"tailscale-gitlab-runner\",\"nodes\":\"$undefined\"}\n22e:{\"label\":\"Docker Desktop\",\"numericId\":1184,\"slug\":\"docker-desktop\",\"nodes\":\"$undefined\"}\n22a:[\"$22b\",\"$22c\",\"$22d\",\"$22e\"]\n229:{\"label\":\"Developer tools\",\"numericId\":1360,\"slug\":\"developer-tools\",\"items\":\"$e7\",\"nodes\":\"$22a\"}\n231:{\"label\":\"Overview\",\"numericId\":1181,\"slug\":\"firewalls\",\"nodes\":\"$undefined\"}\n232:{\"label\":\"OPNsense\",\"numericId\":1097,\"slug\":\"install-opnsense\",\"nodes\":\"$undefined\"}\n233:{\"label\":\"Palo Alto Networks\",\"numericId\":1333,\"slug\":\"firewall-palo-alto-networks\",\"nodes\":\"$undefined\"}\n234:{\"label\":\"pfSense\",\"numericId\":1146,\"slug\":\"pfsense\",\"nodes\":\"$undefined\"}\n235:{\"label\":\"Firewall mode\",\"numericId\":1294,\"slug\":\"firewall-mode\",\"nodes\":\"$undefined\"}\n230:[\"$231\",\"$232\",\"$233\",\"$234\",\"$235\"]\n22f:{\"label\":\"Firewalls\",\"numericId\":1361,\"slug\":\"firewall\",\"items\":\"$ec\",\"nodes\":\"$230\"}\n238:{\"label\":\"Caddy Server\",\"numericId\":1190,\"slug\":\"caddy-certificates\",\"nodes\":\"$undefined\"}\n239:{\"label\":\"Traefik Proxy\",\"numericId\":1234,\"slug\":\"traefik-certificates\",\"nodes\":\"$undefined\"}\n237:[\"$238\",\"$239\"]\n236:{\"label\":\"Web servers\",\"numericId\":1365,\"slug\":\"webser"])</script><script>self.__next_f.push([1,"ver\",\"items\":\"$f2\",\"nodes\":\"$237\"}\n23c:{\"label\":\"Synology\",\"numericId\":1131,\"slug\":\"synology\",\"nodes\":\"$undefined\"}\n23d:{\"label\":\"QNAP\",\"numericId\":1273,\"slug\":\"qnap\",\"nodes\":\"$undefined\"}\n23b:[\"$23c\",\"$23d\"]\n23a:{\"label\":\"NAS\",\"numericId\":1307,\"slug\":\"nas\",\"items\":\"$f5\",\"nodes\":\"$23b\"}\n1f9:[\"$1fa\",\"$204\",\"$216\",\"$21d\",\"$221\",\"$229\",\"$22f\",\"$236\",\"$23a\"]\n1ee:{\"label\":\"Integrations\",\"numericId\":1356,\"items\":\"$1ef\",\"slug\":\"integrations\",\"nodes\":\"$1f9\"}\n23e:{\"label\":\"FAQ\",\"numericId\":1366,\"slug\":\"faq\",\"nodes\":\"$undefined\"}\n241:{\"label\":\"Logging overview\",\"numericId\":1011,\"slug\":\"log-mesh-traffic\"}\n242:{\"label\":\"Configuration audit logging\",\"numericId\":1203,\"slug\":\"audit-logging\"}\n243:{\"label\":\"Network flow logs\",\"numericId\":1219,\"slug\":\"network-flow-logs\"}\n244:{\"label\":\"Log streaming\",\"numericId\":1255,\"slug\":\"log-streaming\"}\n245:{\"label\":\"SSH session recording\",\"numericId\":1246,\"slug\":\"tailscale-ssh-session-recording\",\"items\":\"$f8\"}\n246:{\"label\":\"Webhooks\",\"numericId\":1213,\"slug\":\"webhooks\"}\n240:[\"$241\",\"$242\",\"$243\",\"$244\",\"$245\",\"$246\"]\n248:{\"label\":\"Logging overview\",\"numericId\":1011,\"slug\":\"log-mesh-traffic\",\"nodes\":\"$undefined\"}\n249:{\"label\":\"Configuration audit logging\",\"numericId\":1203,\"slug\":\"audit-logging\",\"nodes\":\"$undefined\"}\n24a:{\"label\":\"Network flow logs\",\"numericId\":1219,\"slug\":\"network-flow-logs\",\"nodes\":\"$undefined\"}\n24b:{\"label\":\"Log streaming\",\"numericId\":1255,\"slug\":\"log-streaming\",\"nodes\":\"$undefined\"}\n24e:{\"label\":\"Send recordings to S3\",\"numericId\":1263,\"slug\":\"session-recording-s3\",\"nodes\":\"$undefined\"}\n24f:{\"label\":\"Deploy multiple recorder nodes\",\"numericId\":1262,\"slug\":\"multiple-recorder-nodes\",\"nodes\":\"$undefined\"}\n24d:[\"$24e\",\"$24f\"]\n24c:{\"label\":\"SSH session recording\",\"numericId\":1246,\"slug\":\"tailscale-ssh-session-recording\",\"items\":\"$f8\",\"nodes\":\"$24d\"}\n250:{\"label\":\"Webhooks\",\"numericId\":1213,\"slug\":\"webhooks\",\"nodes\":\"$undefined\"}\n247:[\"$248\",\"$249\",\"$24a\",\"$24b\",\"$24c\",\"$250\"]\n23f:{\"label\":\"Logging, Streaming, and Events\",\"numericId\":1349,\"slug\":\"log-events\",\"items\":\"$240\",\"nodes\":"])</script><script>self.__next_f.push([1,"\"$247\"}\n253:{\"label\":\"Contact preferences\",\"numericId\":1224,\"slug\":\"contract-preferences\"}\n254:{\"label\":\"Pricing and billing\",\"numericId\":1375,\"slug\":\"pb-lp\",\"items\":\"$fb\"}\n255:{\"label\":\"Tailnet name\",\"numericId\":1217,\"slug\":\"tailnet-name\"}\n256:{\"label\":\"Domain ownership\",\"numericId\":1259,\"slug\":\"domain-ownership\"}\n252:[\"$253\",\"$254\",\"$255\",\"$256\"]\n258:{\"label\":\"Contact preferences\",\"numericId\":1224,\"slug\":\"contract-preferences\",\"nodes\":\"$undefined\"}\n25b:{\"label\":\"Pricing ↗\",\"href\":\"/pricing\",\"nodes\":\"$undefined\"}\n25c:{\"label\":\"Pricing \u0026 Plans FAQ\",\"numericId\":1251,\"slug\":\"pricing-faq\",\"nodes\":\"$undefined\"}\n25d:{\"label\":\"Free plans and discounts\",\"numericId\":1154,\"slug\":\"free-plans-discounts\",\"nodes\":\"$undefined\"}\n25e:{\"label\":\"Modify billing\",\"numericId\":1182,\"slug\":\"billing-information\",\"nodes\":\"$undefined\"}\n25f:{\"label\":\"Tailscale on Azure Marketplace\",\"numericId\":1220,\"slug\":\"azure-marketplace\",\"nodes\":\"$undefined\"}\n25a:[\"$25b\",\"$25c\",\"$25d\",\"$25e\",\"$25f\"]\n259:{\"label\":\"Pricing and billing\",\"numericId\":1375,\"slug\":\"pb-lp\",\"items\":\"$fb\",\"nodes\":\"$25a\"}\n260:{\"label\":\"Tailnet name\",\"numericId\":1217,\"slug\":\"tailnet-name\",\"nodes\":\"$undefined\"}\n261:{\"label\":\"Domain ownership\",\"numericId\":1259,\"slug\":\"domain-ownership\",\"nodes\":\"$undefined\"}\n257:[\"$258\",\"$259\",\"$260\",\"$261\"]\n251:{\"label\":\"Manage Your Organization\",\"numericId\":1431,\"slug\":\"manage-account\",\"items\":\"$252\",\"nodes\":\"$257\"}\n264:{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"items\":\"$101\"}\n265:{\"label\":\"ACL samples\",\"numericId\":1192,\"slug\":\"acl-samples\"}\n266:{\"label\":\"CLI\",\"numericId\":1080,\"slug\":\"cli\",\"items\":\"$105\"}\n267:{\"label\":\"API\",\"numericId\":1101,\"slug\":\"api\",\"items\":\"$10b\"}\n268:{\"label\":\"Key prefixes\",\"numericId\":1277,\"slug\":\"key-prefixes\"}\n269:{\"label\":\"Production best practices\",\"numericId\":1300,\"slug\":\"production-best-practices\",\"items\":\"$10e\"}\n26a:{\"label\":\"Shared responsibility\",\"numericId\":1212,\"slug\":\"shared-responsibility\"}\n26b:{\"label\":\"Technical overviews\",\"numericId\":1376,\"slug\":\"tech-overviews\",\"items\":\"$119\"}\n26c:{\"label\""])</script><script>self.__next_f.push([1,":\"Terminology and concepts\",\"numericId\":1155,\"slug\":\"terminology-and-concepts\"}\n26d:{\"label\":\"GitHub ↗\",\"href\":\"https://github.com/tailscale/tailscale\"}\n263:[\"$264\",\"$265\",\"$266\",\"$267\",\"$268\",\"$269\",\"$26a\",\"$26b\",\"$26c\",\"$26d\"]\n271:{\"label\":\"Grants\",\"numericId\":1324,\"slug\":\"acl-grants\",\"nodes\":\"$undefined\"}\n272:{\"label\":\"IP sets\",\"numericId\":1387,\"slug\":\"ipsets\",\"nodes\":\"$undefined\"}\n273:{\"label\":\"Via in grants\",\"numericId\":1378,\"slug\":\"via\",\"nodes\":\"$undefined\"}\n270:[\"$271\",\"$272\",\"$273\"]\n26f:{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"items\":\"$101\",\"nodes\":\"$270\"}\n274:{\"label\":\"ACL samples\",\"numericId\":1192,\"slug\":\"acl-samples\",\"nodes\":\"$undefined\"}\n277:{\"label\":\"tailscale funnel\",\"numericId\":1311,\"slug\":\"tailscale-funnel\",\"nodes\":\"$undefined\"}\n278:{\"label\":\"tailscale lock\",\"numericId\":1243,\"slug\":\"tailscale-lock\",\"nodes\":\"$undefined\"}\n279:{\"label\":\"tailscale serve\",\"numericId\":1242,\"slug\":\"tailscale-serve\",\"nodes\":\"$undefined\"}\n27a:{\"label\":\"tailscale up\",\"numericId\":1241,\"slug\":\"tailscale-up\",\"nodes\":\"$undefined\"}\n27b:{\"label\":\"tailscaled\",\"numericId\":1278,\"slug\":\"tailscaled\",\"nodes\":\"$undefined\"}\n276:[\"$277\",\"$278\",\"$279\",\"$27a\",\"$27b\"]\n275:{\"label\":\"CLI\",\"numericId\":1080,\"slug\":\"cli\",\"items\":\"$105\",\"nodes\":\"$276\"}\n27e:{\"label\":\"OAuth clients\",\"numericId\":1215,\"slug\":\"oauth-clients\",\"nodes\":\"$undefined\"}\n27f:{\"label\":\"tsnet for Go programs\",\"numericId\":1244,\"slug\":\"tsnet\",\"nodes\":\"$undefined\"}\n27d:[\"$27e\",\"$27f\"]\n27c:{\"label\":\"API\",\"numericId\":1101,\"slug\":\"api\",\"items\":\"$10b\",\"nodes\":\"$27d\"}\n280:{\"label\":\"Key prefixes\",\"numericId\":1277,\"slug\":\"key-prefixes\",\"nodes\":\"$undefined\"}\n283:{\"label\":\"Deployment checklist\",\"numericId\":1344,\"slug\":\"deployment-checklist\",\"nodes\":\"$undefined\"}\n286:{\"label\":\"Node hardening\",\"numericId\":1279,\"slug\":\"security-node-hardening\",\"nodes\":\"$undefined\"}\n287:{\"label\":\"Key and secret management\",\"numericId\":1252,\"slug\":\"key-secret-management\",\"nodes\":\"$undefined\"}\n288:{\"label\":\"Secret scanning\",\"numericId\":1301,\"slug\":\"secret-scanning\",\"nodes\":\"$undefined\"}\n289:{"])</script><script>self.__next_f.push([1,"\"label\":\"Admin with passkey\",\"numericId\":1341,\"slug\":\"tailnet-passkey-admin\",\"nodes\":\"$undefined\"}\n285:[\"$286\",\"$287\",\"$288\",\"$289\"]\n284:{\"label\":\"Security best practices\",\"items\":\"$111\",\"numericId\":1196,\"slug\":\"security-hardening\",\"nodes\":\"$285\"}\n28a:{\"label\":\"Performance best practices\",\"numericId\":1320,\"slug\":\"performance-best-practices\",\"nodes\":\"$undefined\"}\n28b:{\"label\":\"AWS reference architecture\",\"numericId\":1296,\"slug\":\"aws-reference-architecture\",\"nodes\":\"$undefined\"}\n28c:{\"label\":\"Azure reference architecture\",\"numericId\":1314,\"slug\":\"azure-reference-architecture\",\"nodes\":\"$undefined\"}\n282:[\"$283\",\"$284\",\"$28a\",\"$28b\",\"$28c\"]\n281:{\"label\":\"Production best practices\",\"numericId\":1300,\"slug\":\"production-best-practices\",\"items\":\"$10e\",\"nodes\":\"$282\"}\n28d:{\"label\":\"Shared responsibility\",\"numericId\":1212,\"slug\":\"shared-responsibility\",\"nodes\":\"$undefined\"}\n290:{\"label\":\"About WireGuard\",\"numericId\":1035,\"slug\":\"wireguard\",\"nodes\":\"$undefined\"}\n291:{\"label\":\"Control and data planes\",\"numericId\":1508,\"slug\":\"control-data-planes\",\"nodes\":\"$undefined\"}\n292:{\"label\":\"Direct vs relayed connections\",\"numericId\":1257,\"slug\":\"connection-types\",\"nodes\":\"$undefined\"}\n293:{\"label\":\"Device connectivity\",\"numericId\":1411,\"slug\":\"device-connectivity\",\"nodes\":\"$undefined\"}\n294:{\"label\":\"How Tailscale assigns IP addresses\",\"numericId\":1033,\"slug\":\"ip-and-dns-addresses\",\"nodes\":\"$undefined\"}\n295:{\"label\":\"Tailscale and the OSI model\",\"numericId\":1456,\"slug\":\"osi\",\"nodes\":\"$undefined\"}\n296:{\"label\":\"Smaller binaries for embedded devices\",\"numericId\":1207,\"slug\":\"small-tailscale\",\"nodes\":\"$undefined\"}\n297:{\"label\":\"Kernel vs. netstack subnet routing \u0026 exit nodes\",\"numericId\":1177,\"slug\":\"kernel-vs-userspace-routers\",\"nodes\":\"$undefined\"}\n298:{\"label\":\"Userspace networking mode\",\"numericId\":1112,\"slug\":\"userspace-networking\",\"nodes\":\"$undefined\"}\n299:{\"label\":\"Node keys\",\"numericId\":1010,\"slug\":\"node-keys\",\"nodes\":\"$undefined\"}\n29a:{\"label\":\"Protect SSH Servers\",\"numericId\":1009,\"slug\":\"protect-ssh-servers\",\"nodes\":\"$undefined\""])</script><script>self.__next_f.push([1,"}\n29b:{\"label\":\"Tailnet lock white paper\",\"numericId\":1230,\"slug\":\"tailnet-lock-whitepaper\",\"nodes\":\"$undefined\"}\n29c:{\"label\":\"DERP servers\",\"numericId\":1232,\"slug\":\"derp-servers\",\"nodes\":\"$undefined\"}\n29d:{\"label\":\"Zero Trust Networking (ZTN)\",\"numericId\":1123,\"slug\":\"zero-trust\",\"nodes\":\"$undefined\"}\n29e:{\"label\":\"IPv4 vs. IPv6 FAQ\",\"numericId\":1134,\"slug\":\"ipv6-faq\",\"nodes\":\"$undefined\"}\n28f:[\"$290\",\"$291\",\"$292\",\"$293\",\"$294\",\"$295\",\"$296\",\"$297\",\"$298\",\"$299\",\"$29a\",\"$29b\",\"$29c\",\"$29d\",\"$29e\"]\n28e:{\"label\":\"Technical overviews\",\"numericId\":1376,\"slug\":\"tech-overviews\",\"items\":\"$119\",\"nodes\":\"$28f\"}\n29f:{\"label\":\"Terminology and concepts\",\"numericId\":1155,\"slug\":\"terminology-and-concepts\",\"nodes\":\"$undefined\"}\n2a0:{\"label\":\"GitHub ↗\",\"href\":\"https://github.com/tailscale/tailscale\",\"nodes\":\"$undefined\"}\n26e:[\"$26f\",\"$274\",\"$275\",\"$27c\",\"$280\",\"$281\",\"$28d\",\"$28e\",\"$29f\",\"$2a0\"]\n262:{\"label\":\"Reference\",\"numericId\":1367,\"slug\":\"reference\",\"items\":\"$263\",\"nodes\":\"$26e\"}\n2a3:{\"label\":\"Troubleshooting\",\"numericId\":1023,\"slug\":\"troubleshooting\",\"items\":\"$129\"}\n2a4:{\"label\":\"Support options\",\"numericId\":1250,\"slug\":\"support-options\"}\n2a5:{\"label\":\"Contact support ↗\",\"href\":\"/contact/support\"}\n2a6:{\"label\":\"Generate a bug report\",\"numericId\":1227,\"slug\":\"bug-report\"}\n2a2:[\"$2a3\",\"$2a4\",\"$2a5\",\"$2a6\"]\n2aa:{\"label\":\"Troubleshoot device connectivity\",\"numericId\":1463,\"slug\":\"troubleshoot-connectivity\",\"nodes\":\"$undefined\"}\n2a9:[\"$2aa\"]\n2a8:{\"label\":\"Troubleshooting\",\"numericId\":1023,\"slug\":\"troubleshooting\",\"items\":\"$129\",\"nodes\":\"$2a9\"}\n2ab:{\"label\":\"Support options\",\"numericId\":1250,\"slug\":\"support-options\",\"nodes\":\"$undefined\"}\n2ac:{\"label\":\"Contact support ↗\",\"href\":\"/contact/support\",\"nodes\":\"$undefined\"}\n2ad:{\"label\":\"Generate a bug report\",\"numericId\":1227,\"slug\":\"bug-report\",\"nodes\":\"$undefined\"}\n2a7:[\"$2a8\",\"$2ab\",\"$2ac\",\"$2ad\"]\n2a1:{\"label\":\"Get Support\",\"numericId\":1432,\"slug\":\"get-support\",\"items\":\"$2a2\",\"nodes\":\"$2a7\"}\n2b0:{\"label\":\"Changelog ↗\",\"href\":\"/changelog\"}\n2b1:{\"label\":\"Comparisons ↗\","])</script><script>self.__next_f.push([1,"\"href\":\"/compare\"}\n2b2:{\"label\":\"Release stages\",\"numericId\":1167,\"slug\":\"release-stages\"}\n2b3:{\"label\":\"Security ↗\",\"href\":\"/security\"}\n2b4:{\"label\":\"Versions\",\"numericId\":1168,\"slug\":\"versions\",\"items\":\"$12b\"}\n2b5:{\"label\":\"Use cases\",\"numericId\":1377,\"slug\":\"use-cases\"}\n2b6:{\"label\":\"Invite only features\",\"numericId\":1222,\"slug\":\"invite-only-feature\"}\n2af:[\"$2b0\",\"$2b1\",\"$2b2\",\"$2b3\",\"$2b4\",\"$2b5\",\"$2b6\"]\n2b8:{\"label\":\"Changelog ↗\",\"href\":\"/changelog\",\"nodes\":\"$undefined\"}\n2b9:{\"label\":\"Comparisons ↗\",\"href\":\"/compare\",\"nodes\":\"$undefined\"}\n2ba:{\"label\":\"Release stages\",\"numericId\":1167,\"slug\":\"release-stages\",\"nodes\":\"$undefined\"}\n2bb:{\"label\":\"Security ↗\",\"href\":\"/security\",\"nodes\":\"$undefined\"}\n2be:{\"label\":\"Unstable builds\",\"numericId\":1083,\"slug\":\"install-unstable\",\"nodes\":\"$undefined\"}\n2bd:[\"$2be\"]\n2bc:{\"label\":\"Versions\",\"numericId\":1168,\"slug\":\"versions\",\"items\":\"$12b\",\"nodes\":\"$2bd\"}\n2bf:{\"label\":\"Use cases\",\"numericId\":1377,\"slug\":\"use-cases\",\"nodes\":\"$undefined\"}\n2c0:{\"label\":\"Invite only features\",\"numericId\":1222,\"slug\":\"invite-only-feature\",\"nodes\":\"$undefined\"}\n2b7:[\"$2b8\",\"$2b9\",\"$2ba\",\"$2bb\",\"$2bc\",\"$2bf\",\"$2c0\"]\n2ae:{\"label\":\"Resources\",\"numericId\":1368,\"slug\":\"resources\",\"items\":\"$2af\",\"nodes\":\"$2b7\"}\n12f:[\"$130\",\"$168\",\"$1ee\",\"$23e\",\"$23f\",\"$251\",\"$262\",\"$2a1\",\"$2ae\"]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"div\",null,{\"className\":\"grid grid-cols-10 gap-x-8 pt-4 md:pt-8\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"js-docHighlight col-span-10 md:col-span-3 md:row-span-2 xl:col-span-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative hidden h-full md:block\",\"children\":[\"$\",\"$L1a\",null,{\"routeParams\":[\"1240\",\"sso-custom-oidc\"],\"config\":[{\"label\":\"Start\",\"slug\":\"start\",\"numericId\":1346,\"items\":[{\"label\":\"Quickstart\",\"numericId\":1017,\"slug\":\"install\"},{\"label\":\"Install Tailscale\",\"numericId\":1347,\"slug\":\"installation\",\"items\":[{\"label\":\"Download ↗\",\"href\":\"/downloads\"},{\"label\":\"Update Tailscale\",\"numericId\":1067,\"slug\":\"update\"},{\"label\":\"Uninstall Tailscale\",\"numericId\":1069,\"slug\":\"uninstall\"},{\"label\":\"Deploy with MDM\",\"numericId\":1362,\"slug\":\"mdm\",\"items\":[{\"label\":\"Customize Tailscale using system policies\",\"numericId\":1315,\"slug\":\"mdm-keys\",\"items\":[{\"label\":\"Deploy on Android\",\"numericId\":1384,\"slug\":\"android-mdm\"},{\"label\":\"Deploy on iOS/tvOS\",\"numericId\":1380,\"slug\":\"ios-mdm\"},{\"label\":\"Deploy on macOS\",\"numericId\":1286,\"slug\":\"macos-mdm\"},{\"label\":\"Deploy on Windows\",\"numericId\":1318,\"slug\":\"windows-mdm\"}]},{\"label\":\"MDM integration partners\",\"numericId\":1448,\"slug\":\"mdm-integration-partners\",\"items\":[{\"label\":\"Google Workspace\",\"numericId\":1386,\"slug\":\"mdm-google-workspace\"},{\"label\":\"Jamf\",\"numericId\":1328,\"slug\":\"mdm-jamf\"},{\"label\":\"JumpCloud\",\"numericId\":1485,\"slug\":\"mdm-jumpcloud\"},{\"label\":\"Kandji\",\"numericId\":1329,\"slug\":\"mdm-kandji\"},{\"label\":\"Microsoft Intune\",\"numericId\":1327,\"slug\":\"mdm-microsoft-intune\"},{\"label\":\"SimpleMDM\",\"numericId\":1330,\"slug\":\"mdm-simplemdm\"},{\"label\":\"TinyMDM\",\"numericId\":1385,\"slug\":\"mdm-tinymdm\"}]}]}]},{\"label\":\"Quick guides\",\"numericId\":1415,\"slug\":\"quick-guides\",\"items\":[{\"label\":\"Use exit nodes\",\"numericId\":1408,\"slug\":\"quick-guide-exit-node\"},{\"label\":\"Configure a subnet router\",\"numericId\":1406,\"slug\":\"quick-guide-subnets\"},{\"label\":\"Host a website\",\"numericId\":1310,\"slug\":\"quick-guide-host-websites\"},{\"label\":\"Install on AWS\",\"numericId\":1449,\"slug\":\"quick-guide-aws\"},{\"label\":\"SSH into a Linux virtual machine\",\"numericId\":1308,\"slug\":\"quick-guide-ssh-linux-vm\"},{\"label\":\"Access a virtual private cloud (VPC)\",\"numericId\":1309,\"slug\":\"quick-guide-access-vpc\"},{\"label\":\"Add a Docker container\",\"numericId\":1453,\"slug\":\"quick-guide-docker\"}]},{\"label\":\"Set up an identity provider\",\"numericId\":1013,\"slug\":\"sso-providers\",\"items\":[{\"label\":\"Google\",\"numericId\":1199,\"slug\":\"sso-google\"},{\"label\":\"Microsoft Entra ID\",\"numericId\":1285,\"slug\":\"sso-microsoft\"},{\"label\":\"Okta\",\"numericId\":1066,\"slug\":\"sso-okta\"},{\"label\":\"GitHub\",\"numericId\":1284,\"slug\":\"sso-github\"},{\"label\":\"Apple\",\"numericId\":1283,\"slug\":\"sso-apple\"},{\"label\":\"OneLogin\",\"numericId\":1070,\"slug\":\"sso-onelogin\"},{\"label\":\"User \u0026 group provisioning\",\"numericId\":1290,\"slug\":\"user-group-provisioning\",\"items\":[{\"label\":\"Google Workspace\",\"numericId\":1317,\"slug\":\"sso-google-sync\"},{\"label\":\"Microsoft Entra ID\",\"numericId\":1249,\"slug\":\"sso-entra-id-scim\"},{\"label\":\"Okta\",\"numericId\":1180,\"slug\":\"sso-okta-scim\"}]},{\"label\":\"Custom OIDC providers\",\"numericId\":1240,\"slug\":\"sso-custom-oidc\"},{\"label\":\"Enable 2FA and MFA\",\"numericId\":1075,\"slug\":\"multifactor-auth\"}]},{\"label\":\"What is Tailscale?\",\"numericId\":1151,\"slug\":\"what-is-tailscale\"}],\"nodes\":[{\"label\":\"Quickstart\",\"numericId\":1017,\"slug\":\"install\",\"nodes\":\"$undefined\"},{\"label\":\"Install Tailscale\",\"numericId\":1347,\"slug\":\"installation\",\"items\":\"$1b\",\"nodes\":[{\"label\":\"Download ↗\",\"href\":\"/downloads\",\"nodes\":\"$undefined\"},{\"label\":\"Update Tailscale\",\"numericId\":1067,\"slug\":\"update\",\"nodes\":\"$undefined\"},{\"label\":\"Uninstall Tailscale\",\"numericId\":1069,\"slug\":\"uninstall\",\"nodes\":\"$undefined\"},{\"label\":\"Deploy with MDM\",\"numericId\":1362,\"slug\":\"mdm\",\"items\":\"$20\",\"nodes\":[{\"label\":\"Customize Tailscale using system policies\",\"numericId\":1315,\"slug\":\"mdm-keys\",\"items\":\"$22\",\"nodes\":[{\"label\":\"Deploy on Android\",\"numericId\":1384,\"slug\":\"android-mdm\",\"nodes\":\"$undefined\"},{\"label\":\"Deploy on iOS/tvOS\",\"numericId\":1380,\"slug\":\"ios-mdm\",\"nodes\":\"$undefined\"},{\"label\":\"Deploy on macOS\",\"numericId\":1286,\"slug\":\"macos-mdm\",\"nodes\":\"$undefined\"},{\"label\":\"Deploy on Windows\",\"numericId\":1318,\"slug\":\"windows-mdm\",\"nodes\":\"$undefined\"}]},{\"label\":\"MDM integration partners\",\"numericId\":1448,\"slug\":\"mdm-integration-partners\",\"items\":\"$28\",\"nodes\":[{\"label\":\"Google Workspace\",\"numericId\":1386,\"slug\":\"mdm-google-workspace\",\"nodes\":\"$undefined\"},{\"label\":\"Jamf\",\"numericId\":1328,\"slug\":\"mdm-jamf\",\"nodes\":\"$undefined\"},{\"label\":\"JumpCloud\",\"numericId\":1485,\"slug\":\"mdm-jumpcloud\",\"nodes\":\"$undefined\"},{\"label\":\"Kandji\",\"numericId\":1329,\"slug\":\"mdm-kandji\",\"nodes\":\"$undefined\"},{\"label\":\"Microsoft Intune\",\"numericId\":1327,\"slug\":\"mdm-microsoft-intune\",\"nodes\":\"$undefined\"},{\"label\":\"SimpleMDM\",\"numericId\":1330,\"slug\":\"mdm-simplemdm\",\"nodes\":\"$undefined\"},{\"label\":\"TinyMDM\",\"numericId\":1385,\"slug\":\"mdm-tinymdm\",\"nodes\":\"$undefined\"}]}]}]},{\"label\":\"Quick guides\",\"numericId\":1415,\"slug\":\"quick-guides\",\"items\":\"$30\",\"nodes\":[{\"label\":\"Use exit nodes\",\"numericId\":1408,\"slug\":\"quick-guide-exit-node\",\"nodes\":\"$undefined\"},{\"label\":\"Configure a subnet router\",\"numericId\":1406,\"slug\":\"quick-guide-subnets\",\"nodes\":\"$undefined\"},{\"label\":\"Host a website\",\"numericId\":1310,\"slug\":\"quick-guide-host-websites\",\"nodes\":\"$undefined\"},{\"label\":\"Install on AWS\",\"numericId\":1449,\"slug\":\"quick-guide-aws\",\"nodes\":\"$undefined\"},{\"label\":\"SSH into a Linux virtual machine\",\"numericId\":1308,\"slug\":\"quick-guide-ssh-linux-vm\",\"nodes\":\"$undefined\"},{\"label\":\"Access a virtual private cloud (VPC)\",\"numericId\":1309,\"slug\":\"quick-guide-access-vpc\",\"nodes\":\"$undefined\"},{\"label\":\"Add a Docker container\",\"numericId\":1453,\"slug\":\"quick-guide-docker\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set up an identity provider\",\"numericId\":1013,\"slug\":\"sso-providers\",\"items\":\"$38\",\"nodes\":[{\"label\":\"Google\",\"numericId\":1199,\"slug\":\"sso-google\",\"nodes\":\"$undefined\"},{\"label\":\"Microsoft Entra ID\",\"numericId\":1285,\"slug\":\"sso-microsoft\",\"nodes\":\"$undefined\"},{\"label\":\"Okta\",\"numericId\":1066,\"slug\":\"sso-okta\",\"nodes\":\"$undefined\"},{\"label\":\"GitHub\",\"numericId\":1284,\"slug\":\"sso-github\",\"nodes\":\"$undefined\"},{\"label\":\"Apple\",\"numericId\":1283,\"slug\":\"sso-apple\",\"nodes\":\"$undefined\"},{\"label\":\"OneLogin\",\"numericId\":1070,\"slug\":\"sso-onelogin\",\"nodes\":\"$undefined\"},{\"label\":\"User \u0026 group provisioning\",\"numericId\":1290,\"slug\":\"user-group-provisioning\",\"items\":\"$40\",\"nodes\":[{\"label\":\"Google Workspace\",\"numericId\":1317,\"slug\":\"sso-google-sync\",\"nodes\":\"$undefined\"},{\"label\":\"Microsoft Entra ID\",\"numericId\":1249,\"slug\":\"sso-entra-id-scim\",\"nodes\":\"$undefined\"},{\"label\":\"Okta\",\"numericId\":1180,\"slug\":\"sso-okta-scim\",\"nodes\":\"$undefined\"}]},{\"label\":\"Custom OIDC providers\",\"numericId\":1240,\"slug\":\"sso-custom-oidc\",\"nodes\":\"$undefined\"},{\"label\":\"Enable 2FA and MFA\",\"numericId\":1075,\"slug\":\"multifactor-auth\",\"nodes\":\"$undefined\"}]},{\"label\":\"What is Tailscale?\",\"numericId\":1151,\"slug\":\"what-is-tailscale\",\"nodes\":\"$undefined\"}]},{\"label\":\"How-to Guides\",\"numericId\":1348,\"slug\":\"guides\",\"items\":[{\"label\":\"Manage Access\",\"group\":true,\"numericId\":1350,\"slug\":\"manage\",\"items\":[{\"label\":\"Manage access control\",\"numericId\":1393,\"slug\":\"access-control\",\"items\":[{\"label\":\"Manage ACLs\",\"numericId\":1018,\"slug\":\"acls\",\"items\":[{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\"}]},{\"label\":\"Manage grants\",\"numericId\":1324,\"slug\":\"acl-grants\"},{\"label\":\"Edit the tailnet policy file\",\"numericId\":1338,\"slug\":\"acl-edit\"},{\"label\":\"Manage ACLs with GitOps\",\"numericId\":1204,\"slug\":\"gitopcs-acls\",\"items\":[{\"label\":\"Manage ACLs with Bitbucket\",\"numericId\":1302,\"slug\":\"gitops-acls-bitbucket\"},{\"label\":\"Manage ACLs with GitHub\",\"numericId\":1306,\"slug\":\"gitops-acls-github\"},{\"label\":\"Manage ACLs with GitLab\",\"numericId\":1254,\"slug\":\"gitops-acls-gitlab\"}]}]},{\"label\":\"Manage devices\",\"numericId\":1372,\"slug\":\"manage-devices\",\"items\":[{\"label\":\"Add a device\",\"numericId\":1316,\"slug\":\"device-add\"},{\"label\":\"Device approval\",\"numericId\":1099,\"slug\":\"device-approval\"},{\"label\":\"Rename a device\",\"numericId\":1098,\"slug\":\"machine-names\"},{\"label\":\"Remove a device\",\"numericId\":1260,\"slug\":\"device-remove\"},{\"label\":\"Device posture management\",\"numericId\":1288,\"slug\":\"device-posture\",\"items\":[{\"label\":\"Use Device Identity Collection\",\"numericId\":1326,\"slug\":\"device-identity\"},{\"label\":\"CrowdStrike Falcon\",\"numericId\":1289,\"slug\":\"crowdstrike-zta\"},{\"label\":\"SentinelOne\",\"numericId\":1390,\"slug\":\"sentinelone\"},{\"label\":\"1Password XAM\",\"numericId\":1407,\"slug\":\"kolide\"},{\"label\":\"Jamf Pro\",\"numericId\":1409,\"slug\":\"jamf-pro\"},{\"label\":\"Microsoft Intune\",\"numericId\":1410,\"slug\":\"intune\"},{\"label\":\"Kandji\",\"numericId\":1405,\"slug\":\"kandji\"}]},{\"label\":\"Filter devices\",\"numericId\":1176,\"slug\":\"filter-devices\"},{\"label\":\"Export list of devices\",\"numericId\":1228,\"slug\":\"export-device-list\"},{\"label\":\"Use the web interface\",\"numericId\":1325,\"slug\":\"device-web-interface\"},{\"label\":\"Add a device using a QR code\",\"numericId\":1336,\"slug\":\"device-add-qr-code\"}]},{\"label\":\"Manage users\",\"numericId\":1373,\"slug\":\"manage-users\",\"items\":[{\"label\":\"Invite users\",\"items\":[{\"label\":\"Invite team members\",\"numericId\":1064,\"slug\":\"invite-team-members\"},{\"label\":\"Invite any user\",\"numericId\":1271,\"slug\":\"invite-any-user\"},{\"label\":\"Use passkeys\",\"numericId\":1269,\"slug\":\"passkeys\"}],\"numericId\":1371,\"slug\":\"invite-users\"},{\"label\":\"User approval\",\"numericId\":1239,\"slug\":\"user-approval\"},{\"label\":\"User roles\",\"numericId\":1138,\"slug\":\"user-roles\"},{\"label\":\"Change user roles\",\"numericId\":1171,\"slug\":\"changing-user-roles\"},{\"label\":\"Remove users\",\"numericId\":1145,\"slug\":\"remove-team-members\"},{\"label\":\"Fast user switching\",\"numericId\":1225,\"slug\":\"fast-user-switching\"},{\"label\":\"Export list of users\",\"numericId\":1229,\"slug\":\"export-user-list\"},{\"label\":\"Offboard users\",\"numericId\":1248,\"slug\":\"offboarding-users\"},{\"label\":\"Admin console session timeout\",\"numericId\":1461,\"slug\":\"admin-console-session-timeout\"}]},{\"label\":\"Tailnet lock\",\"numericId\":1226,\"slug\":\"tailnet-lock\"}]},{\"label\":\"Route Traffic\",\"group\":true,\"numericId\":1351,\"slug\":\"route\",\"items\":[{\"label\":\"Set up a subnet router\",\"numericId\":1019,\"slug\":\"subnets\",\"items\":[{\"label\":\"Subnet router BGP advertisement\",\"numericId\":1298,\"slug\":\"subnet-bgp\"},{\"label\":\"4via6 subnet routers\",\"numericId\":1201,\"slug\":\"4via6-subnets\"},{\"label\":\"Site-to-site networking\",\"numericId\":1214,\"slug\":\"site-to-site\"}]},{\"label\":\"Set up an exit node\",\"numericId\":1103,\"slug\":\"exit-nodes\",\"items\":[{\"label\":\"Use a Mullvad exit node\",\"numericId\":1258,\"slug\":\"mullvad-exit-nodes\"},{\"label\":\"Recommended exit nodes\",\"numericId\":1392,\"slug\":\"auto-exit-nodes\"},{\"label\":\"Mandatory exit nodes\",\"numericId\":1413,\"slug\":\"mandatory-exit-nodes\"}]},{\"label\":\"Set up an app connector\",\"numericId\":1281,\"slug\":\"app-connectors\",\"items\":[{\"label\":\"How app connectors work\",\"numericId\":1342,\"slug\":\"how-app-connectors-work\"},{\"label\":\"Best practices for SaaS apps\",\"numericId\":1332,\"slug\":\"apps-best-practices\"},{\"label\":\"Use preset apps\",\"numericId\":1339,\"slug\":\"preset-apps\"}]},{\"label\":\"Use DNS\",\"numericId\":1054,\"slug\":\"dns\",\"items\":[{\"label\":\"Configure Linux DNS\",\"numericId\":1188,\"slug\":\"linux-dns\"},{\"label\":\"Why is resolv.conf being overwritten?\",\"numericId\":1235,\"slug\":\"resolv-conf\"},{\"label\":\"Use NextDNS\",\"numericId\":1218,\"slug\":\"nextdns\"},{\"label\":\"Use Control D\",\"numericId\":1403,\"slug\":\"control-d\"},{\"label\":\"Use Unbound DNS in OPNsense\",\"numericId\":1299,\"slug\":\"opnsense-unbound\"}]},{\"label\":\"Set up MagicDNS\",\"numericId\":1081,\"slug\":\"magicdns\"},{\"label\":\"Set up high availability\",\"numericId\":1115,\"slug\":\"high-availability\"}]},{\"label\":\"Set Up Servers\",\"group\":true,\"numericId\":1352,\"slug\":\"servers\",\"items\":[{\"label\":\"Set up a server\",\"numericId\":1245,\"slug\":\"set-up-servers\"},{\"label\":\"Use tags\",\"numericId\":1068,\"slug\":\"tags\"},{\"label\":\"Install Tailscale with cloud-init\",\"numericId\":1293,\"slug\":\"cloud-init\"},{\"label\":\"Use auth keys\",\"numericId\":1085,\"slug\":\"auth-keys\",\"items\":[{\"label\":\"Automate key expiry\",\"numericId\":1028,\"slug\":\"key-expiry\"}]},{\"label\":\"Use Tailscale SSH\",\"numericId\":1193,\"slug\":\"tailscale-ssh\",\"items\":[{\"label\":\"Use Tailscale SSH Console\",\"numericId\":1216,\"slug\":\"tailscale-ssh-console\"}]},{\"label\":\"Set up HTTPS certificates\",\"numericId\":1153,\"slug\":\"enabling-https\"},{\"label\":\"Run an ephemeral node\",\"numericId\":1111,\"slug\":\"ephemeral-nodes\"},{\"label\":\"Run unattended\",\"numericId\":1088,\"slug\":\"run-unattended\"}]},{\"label\":\"Access \u0026 Share Services\",\"group\":true,\"numericId\":1354,\"slug\":\"share\",\"items\":[{\"label\":\"View services\",\"numericId\":1100,\"slug\":\"services\"},{\"label\":\"Share nodes\",\"numericId\":1084,\"slug\":\"sharing\"},{\"label\":\"Use Taildrop\",\"numericId\":1106,\"slug\":\"taildrop\",\"items\":[{\"label\":\"Taildrop with NAS\",\"numericId\":1418,\"slug\":\"taildrop-nas\"}]}]},{\"label\":\"Share a web server\",\"group\":true,\"numericId\":1353,\"slug\":\"share-web-server\",\"items\":[{\"label\":\"Tailscale Funnel\",\"numericId\":1223,\"slug\":\"funnel\",\"items\":[{\"label\":\"Examples\",\"numericId\":1247,\"slug\":\"funnel-examples\"},{\"label\":\"Funnel vs. sharing\",\"numericId\":1464,\"slug\":\"funnel-vs-sharing\"}]},{\"label\":\"Tailscale Serve\",\"numericId\":1312,\"slug\":\"serve\",\"items\":[{\"label\":\"Examples\",\"numericId\":1313,\"slug\":\"serve-examples\"}]}]},{\"label\":\"Solutions\",\"group\":true,\"numericId\":1355,\"slug\":\"solutions\",\"items\":[{\"label\":\"Code from your iPad\",\"numericId\":1166,\"slug\":\"vscode-ipad\"},{\"label\":\"Lock down a server\",\"numericId\":1077,\"slug\":\"secure-server-ubuntu\"},{\"label\":\"Access a PiKVM\",\"numericId\":1292,\"slug\":\"pikvm\"},{\"label\":\"Run a Pi-hole\",\"numericId\":1114,\"slug\":\"pi-hole\"},{\"label\":\"Secure external services\",\"numericId\":1059,\"slug\":\"ip-blocklist-relays\"},{\"label\":\"Just-in-time access\",\"numericId\":1443,\"slug\":\"just-in-time-access\"},{\"label\":\"On-demand access\",\"numericId\":1374,\"slug\":\"ondemand-access\",\"items\":[{\"label\":\"ConductorOne\",\"numericId\":1208,\"slug\":\"ondemand-conductorone\"},{\"label\":\"Opal\",\"numericId\":1209,\"slug\":\"ondemand-opal\"},{\"label\":\"Sym\",\"numericId\":1206,\"slug\":\"ondemand-sym\"}]},{\"label\":\"Automation\",\"numericId\":1430,\"slug\":\"automations\",\"items\":[{\"label\":\"Infrastructure as code\",\"numericId\":1370,\"slug\":\"infrastructure-as-code\",\"items\":[{\"label\":\"Terraform\",\"numericId\":1210,\"slug\":\"terraform-provider\"},{\"label\":\"Pulumi\",\"numericId\":1211,\"slug\":\"pulumi-provider\"}]},{\"label\":\"macOS and iOS shortcuts\",\"numericId\":1233,\"slug\":\"mac-ios-shortcuts\"}]}]}],\"nodes\":[{\"label\":\"Manage Access\",\"group\":true,\"numericId\":1350,\"slug\":\"manage\",\"items\":\"$46\",\"nodes\":[{\"label\":\"Manage access control\",\"numericId\":1393,\"slug\":\"access-control\",\"items\":\"$48\",\"nodes\":[{\"label\":\"Manage ACLs\",\"numericId\":1018,\"slug\":\"acls\",\"items\":\"$4a\",\"nodes\":[{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"nodes\":\"$undefined\"}]},{\"label\":\"Manage grants\",\"numericId\":1324,\"slug\":\"acl-grants\",\"nodes\":\"$undefined\"},{\"label\":\"Edit the tailnet policy file\",\"numericId\":1338,\"slug\":\"acl-edit\",\"nodes\":\"$undefined\"},{\"label\":\"Manage ACLs with GitOps\",\"numericId\":1204,\"slug\":\"gitopcs-acls\",\"items\":\"$4f\",\"nodes\":[{\"label\":\"Manage ACLs with Bitbucket\",\"numericId\":1302,\"slug\":\"gitops-acls-bitbucket\",\"nodes\":\"$undefined\"},{\"label\":\"Manage ACLs with GitHub\",\"numericId\":1306,\"slug\":\"gitops-acls-github\",\"nodes\":\"$undefined\"},{\"label\":\"Manage ACLs with GitLab\",\"numericId\":1254,\"slug\":\"gitops-acls-gitlab\",\"nodes\":\"$undefined\"}]}]},{\"label\":\"Manage devices\",\"numericId\":1372,\"slug\":\"manage-devices\",\"items\":\"$54\",\"nodes\":[{\"label\":\"Add a device\",\"numericId\":1316,\"slug\":\"device-add\",\"nodes\":\"$undefined\"},{\"label\":\"Device approval\",\"numericId\":1099,\"slug\":\"device-approval\",\"nodes\":\"$undefined\"},{\"label\":\"Rename a device\",\"numericId\":1098,\"slug\":\"machine-names\",\"nodes\":\"$undefined\"},{\"label\":\"Remove a device\",\"numericId\":1260,\"slug\":\"device-remove\",\"nodes\":\"$undefined\"},{\"label\":\"Device posture management\",\"numericId\":1288,\"slug\":\"device-posture\",\"items\":\"$5a\",\"nodes\":[{\"label\":\"Use Device Identity Collection\",\"numericId\":1326,\"slug\":\"device-identity\",\"nodes\":\"$undefined\"},{\"label\":\"CrowdStrike Falcon\",\"numericId\":1289,\"slug\":\"crowdstrike-zta\",\"nodes\":\"$undefined\"},{\"label\":\"SentinelOne\",\"numericId\":1390,\"slug\":\"sentinelone\",\"nodes\":\"$undefined\"},{\"label\":\"1Password XAM\",\"numericId\":1407,\"slug\":\"kolide\",\"nodes\":\"$undefined\"},{\"label\":\"Jamf Pro\",\"numericId\":1409,\"slug\":\"jamf-pro\",\"nodes\":\"$undefined\"},{\"label\":\"Microsoft Intune\",\"numericId\":1410,\"slug\":\"intune\",\"nodes\":\"$undefined\"},{\"label\":\"Kandji\",\"numericId\":1405,\"slug\":\"kandji\",\"nodes\":\"$undefined\"}]},{\"label\":\"Filter devices\",\"numericId\":1176,\"slug\":\"filter-devices\",\"nodes\":\"$undefined\"},{\"label\":\"Export list of devices\",\"numericId\":1228,\"slug\":\"export-device-list\",\"nodes\":\"$undefined\"},{\"label\":\"Use the web interface\",\"numericId\":1325,\"slug\":\"device-web-interface\",\"nodes\":\"$undefined\"},{\"label\":\"Add a device using a QR code\",\"numericId\":1336,\"slug\":\"device-add-qr-code\",\"nodes\":\"$undefined\"}]},{\"label\":\"Manage users\",\"numericId\":1373,\"slug\":\"manage-users\",\"items\":\"$67\",\"nodes\":[{\"label\":\"Invite users\",\"items\":\"$69\",\"numericId\":1371,\"slug\":\"invite-users\",\"nodes\":[{\"label\":\"Invite team members\",\"numericId\":1064,\"slug\":\"invite-team-members\",\"nodes\":\"$undefined\"},{\"label\":\"Invite any user\",\"numericId\":1271,\"slug\":\"invite-any-user\",\"nodes\":\"$undefined\"},{\"label\":\"Use passkeys\",\"numericId\":1269,\"slug\":\"passkeys\",\"nodes\":\"$undefined\"}]},{\"label\":\"User approval\",\"numericId\":1239,\"slug\":\"user-approval\",\"nodes\":\"$undefined\"},{\"label\":\"User roles\",\"numericId\":1138,\"slug\":\"user-roles\",\"nodes\":\"$undefined\"},{\"label\":\"Change user roles\",\"numericId\":1171,\"slug\":\"changing-user-roles\",\"nodes\":\"$undefined\"},{\"label\":\"Remove users\",\"numericId\":1145,\"slug\":\"remove-team-members\",\"nodes\":\"$undefined\"},{\"label\":\"Fast user switching\",\"numericId\":1225,\"slug\":\"fast-user-switching\",\"nodes\":\"$undefined\"},{\"label\":\"Export list of users\",\"numericId\":1229,\"slug\":\"export-user-list\",\"nodes\":\"$undefined\"},{\"label\":\"Offboard users\",\"numericId\":1248,\"slug\":\"offboarding-users\",\"nodes\":\"$undefined\"},{\"label\":\"Admin console session timeout\",\"numericId\":1461,\"slug\":\"admin-console-session-timeout\",\"nodes\":\"$undefined\"}]},{\"label\":\"Tailnet lock\",\"numericId\":1226,\"slug\":\"tailnet-lock\",\"nodes\":\"$undefined\"}]},{\"label\":\"Route Traffic\",\"group\":true,\"numericId\":1351,\"slug\":\"route\",\"items\":\"$76\",\"nodes\":[{\"label\":\"Set up a subnet router\",\"numericId\":1019,\"slug\":\"subnets\",\"items\":\"$78\",\"nodes\":[{\"label\":\"Subnet router BGP advertisement\",\"numericId\":1298,\"slug\":\"subnet-bgp\",\"nodes\":\"$undefined\"},{\"label\":\"4via6 subnet routers\",\"numericId\":1201,\"slug\":\"4via6-subnets\",\"nodes\":\"$undefined\"},{\"label\":\"Site-to-site networking\",\"numericId\":1214,\"slug\":\"site-to-site\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set up an exit node\",\"numericId\":1103,\"slug\":\"exit-nodes\",\"items\":\"$7d\",\"nodes\":[{\"label\":\"Use a Mullvad exit node\",\"numericId\":1258,\"slug\":\"mullvad-exit-nodes\",\"nodes\":\"$undefined\"},{\"label\":\"Recommended exit nodes\",\"numericId\":1392,\"slug\":\"auto-exit-nodes\",\"nodes\":\"$undefined\"},{\"label\":\"Mandatory exit nodes\",\"numericId\":1413,\"slug\":\"mandatory-exit-nodes\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set up an app connector\",\"numericId\":1281,\"slug\":\"app-connectors\",\"items\":\"$82\",\"nodes\":[{\"label\":\"How app connectors work\",\"numericId\":1342,\"slug\":\"how-app-connectors-work\",\"nodes\":\"$undefined\"},{\"label\":\"Best practices for SaaS apps\",\"numericId\":1332,\"slug\":\"apps-best-practices\",\"nodes\":\"$undefined\"},{\"label\":\"Use preset apps\",\"numericId\":1339,\"slug\":\"preset-apps\",\"nodes\":\"$undefined\"}]},{\"label\":\"Use DNS\",\"numericId\":1054,\"slug\":\"dns\",\"items\":\"$87\",\"nodes\":[{\"label\":\"Configure Linux DNS\",\"numericId\":1188,\"slug\":\"linux-dns\",\"nodes\":\"$undefined\"},{\"label\":\"Why is resolv.conf being overwritten?\",\"numericId\":1235,\"slug\":\"resolv-conf\",\"nodes\":\"$undefined\"},{\"label\":\"Use NextDNS\",\"numericId\":1218,\"slug\":\"nextdns\",\"nodes\":\"$undefined\"},{\"label\":\"Use Control D\",\"numericId\":1403,\"slug\":\"control-d\",\"nodes\":\"$undefined\"},{\"label\":\"Use Unbound DNS in OPNsense\",\"numericId\":1299,\"slug\":\"opnsense-unbound\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set up MagicDNS\",\"numericId\":1081,\"slug\":\"magicdns\",\"nodes\":\"$undefined\"},{\"label\":\"Set up high availability\",\"numericId\":1115,\"slug\":\"high-availability\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set Up Servers\",\"group\":true,\"numericId\":1352,\"slug\":\"servers\",\"items\":\"$8f\",\"nodes\":[{\"label\":\"Set up a server\",\"numericId\":1245,\"slug\":\"set-up-servers\",\"nodes\":\"$undefined\"},{\"label\":\"Use tags\",\"numericId\":1068,\"slug\":\"tags\",\"nodes\":\"$undefined\"},{\"label\":\"Install Tailscale with cloud-init\",\"numericId\":1293,\"slug\":\"cloud-init\",\"nodes\":\"$undefined\"},{\"label\":\"Use auth keys\",\"numericId\":1085,\"slug\":\"auth-keys\",\"items\":\"$94\",\"nodes\":[{\"label\":\"Automate key expiry\",\"numericId\":1028,\"slug\":\"key-expiry\",\"nodes\":\"$undefined\"}]},{\"label\":\"Use Tailscale SSH\",\"numericId\":1193,\"slug\":\"tailscale-ssh\",\"items\":\"$97\",\"nodes\":[{\"label\":\"Use Tailscale SSH Console\",\"numericId\":1216,\"slug\":\"tailscale-ssh-console\",\"nodes\":\"$undefined\"}]},{\"label\":\"Set up HTTPS certificates\",\"numericId\":1153,\"slug\":\"enabling-https\",\"nodes\":\"$undefined\"},{\"label\":\"Run an ephemeral node\",\"numericId\":1111,\"slug\":\"ephemeral-nodes\",\"nodes\":\"$undefined\"},{\"label\":\"Run unattended\",\"numericId\":1088,\"slug\":\"run-unattended\",\"nodes\":\"$undefined\"}]},{\"label\":\"Access \u0026 Share Services\",\"group\":true,\"numericId\":1354,\"slug\":\"share\",\"items\":\"$9c\",\"nodes\":[{\"label\":\"View services\",\"numericId\":1100,\"slug\":\"services\",\"nodes\":\"$undefined\"},{\"label\":\"Share nodes\",\"numericId\":1084,\"slug\":\"sharing\",\"nodes\":\"$undefined\"},{\"label\":\"Use Taildrop\",\"numericId\":1106,\"slug\":\"taildrop\",\"items\":\"$a0\",\"nodes\":[{\"label\":\"Taildrop with NAS\",\"numericId\":1418,\"slug\":\"taildrop-nas\",\"nodes\":\"$undefined\"}]}]},{\"label\":\"Share a web server\",\"group\":true,\"numericId\":1353,\"slug\":\"share-web-server\",\"items\":\"$a2\",\"nodes\":[{\"label\":\"Tailscale Funnel\",\"numericId\":1223,\"slug\":\"funnel\",\"items\":\"$a4\",\"nodes\":[{\"label\":\"Examples\",\"numericId\":1247,\"slug\":\"funnel-examples\",\"nodes\":\"$undefined\"},{\"label\":\"Funnel vs. sharing\",\"numericId\":1464,\"slug\":\"funnel-vs-sharing\",\"nodes\":\"$undefined\"}]},{\"label\":\"Tailscale Serve\",\"numericId\":1312,\"slug\":\"serve\",\"items\":\"$a8\",\"nodes\":[{\"label\":\"Examples\",\"numericId\":1313,\"slug\":\"serve-examples\",\"nodes\":\"$undefined\"}]}]},{\"label\":\"Solutions\",\"group\":true,\"numericId\":1355,\"slug\":\"solutions\",\"items\":\"$aa\",\"nodes\":[{\"label\":\"Code from your iPad\",\"numericId\":1166,\"slug\":\"vscode-ipad\",\"nodes\":\"$undefined\"},{\"label\":\"Lock down a server\",\"numericId\":1077,\"slug\":\"secure-server-ubuntu\",\"nodes\":\"$undefined\"},{\"label\":\"Access a PiKVM\",\"numericId\":1292,\"slug\":\"pikvm\",\"nodes\":\"$undefined\"},{\"label\":\"Run a Pi-hole\",\"numericId\":1114,\"slug\":\"pi-hole\",\"nodes\":\"$undefined\"},{\"label\":\"Secure external services\",\"numericId\":1059,\"slug\":\"ip-blocklist-relays\",\"nodes\":\"$undefined\"},{\"label\":\"Just-in-time access\",\"numericId\":1443,\"slug\":\"just-in-time-access\",\"nodes\":\"$undefined\"},{\"label\":\"On-demand access\",\"numericId\":1374,\"slug\":\"ondemand-access\",\"items\":\"$b2\",\"nodes\":[{\"label\":\"ConductorOne\",\"numericId\":1208,\"slug\":\"ondemand-conductorone\",\"nodes\":\"$undefined\"},{\"label\":\"Opal\",\"numericId\":1209,\"slug\":\"ondemand-opal\",\"nodes\":\"$undefined\"},{\"label\":\"Sym\",\"numericId\":1206,\"slug\":\"ondemand-sym\",\"nodes\":\"$undefined\"}]},{\"label\":\"Automation\",\"numericId\":1430,\"slug\":\"automations\",\"items\":\"$b7\",\"nodes\":[{\"label\":\"Infrastructure as code\",\"numericId\":1370,\"slug\":\"infrastructure-as-code\",\"items\":\"$b9\",\"nodes\":[{\"label\":\"Terraform\",\"numericId\":1210,\"slug\":\"terraform-provider\",\"nodes\":\"$undefined\"},{\"label\":\"Pulumi\",\"numericId\":1211,\"slug\":\"pulumi-provider\",\"nodes\":\"$undefined\"}]},{\"label\":\"macOS and iOS shortcuts\",\"numericId\":1233,\"slug\":\"mac-ios-shortcuts\",\"nodes\":\"$undefined\"}]}]}]},{\"label\":\"Integrations\",\"numericId\":1356,\"items\":[{\"label\":\"Cloud servers\",\"numericId\":\"integrations\",\"slug\":\"cloud-server\",\"items\":[{\"label\":\"AWS Lightsail\",\"numericId\":1128,\"slug\":\"aws-lightsail\"},{\"label\":\"AWS VPC\",\"numericId\":1021,\"slug\":\"install-aws\"},{\"label\":\"Azure App Service\",\"numericId\":1126,\"slug\":\"azure-app-service\"},{\"label\":\"Azure Linux VMs\",\"numericId\":1142,\"slug\":\"cloud-azure-linux\"},{\"label\":\"Azure Windows VMs\",\"numericId\":1143,\"slug\":\"cloud-azure-windows\"},{\"label\":\"Google Compute Engine VMs\",\"numericId\":1147,\"slug\":\"cloud-gce\"},{\"label\":\"Hetzner VMs\",\"numericId\":1150,\"slug\":\"cloud-hetzner\"},{\"label\":\"Oracle Cloud VMs\",\"numericId\":1149,\"slug\":\"cloud-oracle\"}]},{\"label\":\"Containers and virtualization\",\"numericId\":1358,\"slug\":\"containers-and-virtualization\",\"items\":[{\"label\":\"Docker\",\"numericId\":1282,\"slug\":\"docker\"},{\"label\":\"Kubernetes\",\"items\":[{\"label\":\"Kubernetes operator\",\"numericId\":1236,\"slug\":\"kubernetes-operator\",\"items\":[{\"label\":\"API server proxy\",\"numericId\":1437,\"slug\":\"kubernetes-operator-api-server-proxy\"},{\"label\":\"Egress\",\"numericId\":1438,\"slug\":\"kubernetes-operator-cluster-egress\"},{\"label\":\"Ingress\",\"numericId\":1439,\"slug\":\"kubernetes-operator-cluster-ingress\"},{\"label\":\"Cross cluster\",\"numericId\":1442,\"slug\":\"kubernetes-operator-cross-cluster\"},{\"label\":\"Cloud services\",\"numericId\":1440,\"slug\":\"kubernetes-operator-cloud-services\"},{\"label\":\"Subnet routers and exit nodes\",\"numericId\":1441,\"slug\":\"kubernetes-operator-connector\"},{\"label\":\"Recorder nodes\",\"numericId\":1484,\"slug\":\"kubernetes-operator-deploying-tsrecorder\"},{\"label\":\"Operator resource customization\",\"numericId\":1445,\"slug\":\"kubernetes-operator-customization\"},{\"label\":\"Troubleshooting\",\"numericId\":1446,\"slug\":\"kubernetes-operator-troubleshooting\"}]}],\"numericId\":1185,\"slug\":\"kubernetes\"},{\"label\":\"LXC containers\",\"numericId\":1130,\"slug\":\"lxc-unprivileged\"},{\"label\":\"Proxmox\",\"numericId\":1133,\"slug\":\"proxmox\"}]},{\"label\":\"Serverless apps\",\"numericId\":1364,\"slug\":\"serverless\",\"items\":[{\"label\":\"AWS App Runner\",\"numericId\":1127,\"slug\":\"aws-app-runner\"},{\"label\":\"AWS Lambda\",\"numericId\":1113,\"slug\":\"aws-lambda\"},{\"label\":\"Fly.io\",\"numericId\":1132,\"slug\":\"flydotio\"},{\"label\":\"Google Cloud Run\",\"numericId\":1108,\"slug\":\"cloudrun\"},{\"label\":\"Heroku\",\"numericId\":1107,\"slug\":\"heroku\"}]},{\"label\":\"Databases\",\"numericId\":1359,\"slug\":\"database\",\"items\":[{\"label\":\"AWS RDS\",\"numericId\":1141,\"slug\":\"aws-rds\"},{\"label\":\"Crunchy Bridge\",\"numericId\":1231,\"slug\":\"crunchy-bridge\"}]},{\"label\":\"Remote environments\",\"items\":[{\"label\":\"code-server\",\"numericId\":1164,\"slug\":\"codeserver\"},{\"label\":\"Coder\",\"numericId\":1163,\"slug\":\"coder\"},{\"label\":\"CodeSandbox\",\"numericId\":1221,\"slug\":\"codesandbox\"},{\"label\":\"GitHub Codespaces\",\"numericId\":1160,\"slug\":\"github-codespaces\"},{\"label\":\"Gitpod\",\"numericId\":1161,\"slug\":\"gitpod\"},{\"label\":\"OpenVSCode\",\"numericId\":1162,\"slug\":\"openvscode\"}],\"numericId\":1363,\"slug\":\"remote-code\"},{\"label\":\"Developer tools\",\"numericId\":1360,\"slug\":\"developer-tools\",\"items\":[{\"label\":\"Visual Studio Code Extension\",\"numericId\":1265,\"slug\":\"vscode-extension\"},{\"label\":\"Tailscale GitHub Action\",\"numericId\":1276,\"slug\":\"tailscale-github-action\"},{\"label\":\"Tailscale with GitLab CI/CD\",\"numericId\":1287,\"slug\":\"tailscale-gitlab-runner\"},{\"label\":\"Docker Desktop\",\"numericId\":1184,\"slug\":\"docker-desktop\"}]},{\"label\":\"Firewalls\",\"numericId\":1361,\"slug\":\"firewall\",\"items\":[{\"label\":\"Overview\",\"numericId\":1181,\"slug\":\"firewalls\"},{\"label\":\"OPNsense\",\"numericId\":1097,\"slug\":\"install-opnsense\"},{\"label\":\"Palo Alto Networks\",\"numericId\":1333,\"slug\":\"firewall-palo-alto-networks\"},{\"label\":\"pfSense\",\"numericId\":1146,\"slug\":\"pfsense\"},{\"label\":\"Firewall mode\",\"numericId\":1294,\"slug\":\"firewall-mode\"}]},{\"label\":\"Web servers\",\"numericId\":1365,\"slug\":\"webserver\",\"items\":[{\"label\":\"Caddy Server\",\"numericId\":1190,\"slug\":\"caddy-certificates\"},{\"label\":\"Traefik Proxy\",\"numericId\":1234,\"slug\":\"traefik-certificates\"}]},{\"label\":\"NAS\",\"numericId\":1307,\"slug\":\"nas\",\"items\":[{\"label\":\"Synology\",\"numericId\":1131,\"slug\":\"synology\"},{\"label\":\"QNAP\",\"numericId\":1273,\"slug\":\"qnap\"}]}],\"slug\":\"integrations\",\"nodes\":[{\"label\":\"Cloud servers\",\"numericId\":\"integrations\",\"slug\":\"cloud-server\",\"items\":\"$bd\",\"nodes\":[{\"label\":\"AWS Lightsail\",\"numericId\":1128,\"slug\":\"aws-lightsail\",\"nodes\":\"$undefined\"},{\"label\":\"AWS VPC\",\"numericId\":1021,\"slug\":\"install-aws\",\"nodes\":\"$undefined\"},{\"label\":\"Azure App Service\",\"numericId\":1126,\"slug\":\"azure-app-service\",\"nodes\":\"$undefined\"},{\"label\":\"Azure Linux VMs\",\"numericId\":1142,\"slug\":\"cloud-azure-linux\",\"nodes\":\"$undefined\"},{\"label\":\"Azure Windows VMs\",\"numericId\":1143,\"slug\":\"cloud-azure-windows\",\"nodes\":\"$undefined\"},{\"label\":\"Google Compute Engine VMs\",\"numericId\":1147,\"slug\":\"cloud-gce\",\"nodes\":\"$undefined\"},{\"label\":\"Hetzner VMs\",\"numericId\":1150,\"slug\":\"cloud-hetzner\",\"nodes\":\"$undefined\"},{\"label\":\"Oracle Cloud VMs\",\"numericId\":1149,\"slug\":\"cloud-oracle\",\"nodes\":\"$undefined\"}]},{\"label\":\"Containers and virtualization\",\"numericId\":1358,\"slug\":\"containers-and-virtualization\",\"items\":\"$c6\",\"nodes\":[{\"label\":\"Docker\",\"numericId\":1282,\"slug\":\"docker\",\"nodes\":\"$undefined\"},{\"label\":\"Kubernetes\",\"items\":\"$c9\",\"numericId\":1185,\"slug\":\"kubernetes\",\"nodes\":[{\"label\":\"Kubernetes operator\",\"numericId\":1236,\"slug\":\"kubernetes-operator\",\"items\":\"$cb\",\"nodes\":[{\"label\":\"API server proxy\",\"numericId\":1437,\"slug\":\"kubernetes-operator-api-server-proxy\",\"nodes\":\"$undefined\"},{\"label\":\"Egress\",\"numericId\":1438,\"slug\":\"kubernetes-operator-cluster-egress\",\"nodes\":\"$undefined\"},{\"label\":\"Ingress\",\"numericId\":1439,\"slug\":\"kubernetes-operator-cluster-ingress\",\"nodes\":\"$undefined\"},{\"label\":\"Cross cluster\",\"numericId\":1442,\"slug\":\"kubernetes-operator-cross-cluster\",\"nodes\":\"$undefined\"},{\"label\":\"Cloud services\",\"numericId\":1440,\"slug\":\"kubernetes-operator-cloud-services\",\"nodes\":\"$undefined\"},{\"label\":\"Subnet routers and exit nodes\",\"numericId\":1441,\"slug\":\"kubernetes-operator-connector\",\"nodes\":\"$undefined\"},{\"label\":\"Recorder nodes\",\"numericId\":1484,\"slug\":\"kubernetes-operator-deploying-tsrecorder\",\"nodes\":\"$undefined\"},{\"label\":\"Operator resource customization\",\"numericId\":1445,\"slug\":\"kubernetes-operator-customization\",\"nodes\":\"$undefined\"},{\"label\":\"Troubleshooting\",\"numericId\":1446,\"slug\":\"kubernetes-operator-troubleshooting\",\"nodes\":\"$undefined\"}]}]},{\"label\":\"LXC containers\",\"numericId\":1130,\"slug\":\"lxc-unprivileged\",\"nodes\":\"$undefined\"},{\"label\":\"Proxmox\",\"numericId\":1133,\"slug\":\"proxmox\",\"nodes\":\"$undefined\"}]},{\"label\":\"Serverless apps\",\"numericId\":1364,\"slug\":\"serverless\",\"items\":\"$d7\",\"nodes\":[{\"label\":\"AWS App Runner\",\"numericId\":1127,\"slug\":\"aws-app-runner\",\"nodes\":\"$undefined\"},{\"label\":\"AWS Lambda\",\"numericId\":1113,\"slug\":\"aws-lambda\",\"nodes\":\"$undefined\"},{\"label\":\"Fly.io\",\"numericId\":1132,\"slug\":\"flydotio\",\"nodes\":\"$undefined\"},{\"label\":\"Google Cloud Run\",\"numericId\":1108,\"slug\":\"cloudrun\",\"nodes\":\"$undefined\"},{\"label\":\"Heroku\",\"numericId\":1107,\"slug\":\"heroku\",\"nodes\":\"$undefined\"}]},{\"label\":\"Databases\",\"numericId\":1359,\"slug\":\"database\",\"items\":\"$dd\",\"nodes\":[{\"label\":\"AWS RDS\",\"numericId\":1141,\"slug\":\"aws-rds\",\"nodes\":\"$undefined\"},{\"label\":\"Crunchy Bridge\",\"numericId\":1231,\"slug\":\"crunchy-bridge\",\"nodes\":\"$undefined\"}]},{\"label\":\"Remote environments\",\"items\":\"$e0\",\"numericId\":1363,\"slug\":\"remote-code\",\"nodes\":[{\"label\":\"code-server\",\"numericId\":1164,\"slug\":\"codeserver\",\"nodes\":\"$undefined\"},{\"label\":\"Coder\",\"numericId\":1163,\"slug\":\"coder\",\"nodes\":\"$undefined\"},{\"label\":\"CodeSandbox\",\"numericId\":1221,\"slug\":\"codesandbox\",\"nodes\":\"$undefined\"},{\"label\":\"GitHub Codespaces\",\"numericId\":1160,\"slug\":\"github-codespaces\",\"nodes\":\"$undefined\"},{\"label\":\"Gitpod\",\"numericId\":1161,\"slug\":\"gitpod\",\"nodes\":\"$undefined\"},{\"label\":\"OpenVSCode\",\"numericId\":1162,\"slug\":\"openvscode\",\"nodes\":\"$undefined\"}]},{\"label\":\"Developer tools\",\"numericId\":1360,\"slug\":\"developer-tools\",\"items\":\"$e7\",\"nodes\":[{\"label\":\"Visual Studio Code Extension\",\"numericId\":1265,\"slug\":\"vscode-extension\",\"nodes\":\"$undefined\"},{\"label\":\"Tailscale GitHub Action\",\"numericId\":1276,\"slug\":\"tailscale-github-action\",\"nodes\":\"$undefined\"},{\"label\":\"Tailscale with GitLab CI/CD\",\"numericId\":1287,\"slug\":\"tailscale-gitlab-runner\",\"nodes\":\"$undefined\"},{\"label\":\"Docker Desktop\",\"numericId\":1184,\"slug\":\"docker-desktop\",\"nodes\":\"$undefined\"}]},{\"label\":\"Firewalls\",\"numericId\":1361,\"slug\":\"firewall\",\"items\":\"$ec\",\"nodes\":[{\"label\":\"Overview\",\"numericId\":1181,\"slug\":\"firewalls\",\"nodes\":\"$undefined\"},{\"label\":\"OPNsense\",\"numericId\":1097,\"slug\":\"install-opnsense\",\"nodes\":\"$undefined\"},{\"label\":\"Palo Alto Networks\",\"numericId\":1333,\"slug\":\"firewall-palo-alto-networks\",\"nodes\":\"$undefined\"},{\"label\":\"pfSense\",\"numericId\":1146,\"slug\":\"pfsense\",\"nodes\":\"$undefined\"},{\"label\":\"Firewall mode\",\"numericId\":1294,\"slug\":\"firewall-mode\",\"nodes\":\"$undefined\"}]},{\"label\":\"Web servers\",\"numericId\":1365,\"slug\":\"webserver\",\"items\":\"$f2\",\"nodes\":[{\"label\":\"Caddy Server\",\"numericId\":1190,\"slug\":\"caddy-certificates\",\"nodes\":\"$undefined\"},{\"label\":\"Traefik Proxy\",\"numericId\":1234,\"slug\":\"traefik-certificates\",\"nodes\":\"$undefined\"}]},{\"label\":\"NAS\",\"numericId\":1307,\"slug\":\"nas\",\"items\":\"$f5\",\"nodes\":[{\"label\":\"Synology\",\"numericId\":1131,\"slug\":\"synology\",\"nodes\":\"$undefined\"},{\"label\":\"QNAP\",\"numericId\":1273,\"slug\":\"qnap\",\"nodes\":\"$undefined\"}]}]},{\"label\":\"FAQ\",\"numericId\":1366,\"slug\":\"faq\",\"nodes\":\"$undefined\"},{\"label\":\"Logging, Streaming, and Events\",\"numericId\":1349,\"slug\":\"log-events\",\"items\":[{\"label\":\"Logging overview\",\"numericId\":1011,\"slug\":\"log-mesh-traffic\"},{\"label\":\"Configuration audit logging\",\"numericId\":1203,\"slug\":\"audit-logging\"},{\"label\":\"Network flow logs\",\"numericId\":1219,\"slug\":\"network-flow-logs\"},{\"label\":\"Log streaming\",\"numericId\":1255,\"slug\":\"log-streaming\"},{\"label\":\"SSH session recording\",\"numericId\":1246,\"slug\":\"tailscale-ssh-session-recording\",\"items\":[{\"label\":\"Send recordings to S3\",\"numericId\":1263,\"slug\":\"session-recording-s3\"},{\"label\":\"Deploy multiple recorder nodes\",\"numericId\":1262,\"slug\":\"multiple-recorder-nodes\"}]},{\"label\":\"Webhooks\",\"numericId\":1213,\"slug\":\"webhooks\"}],\"nodes\":[{\"label\":\"Logging overview\",\"numericId\":1011,\"slug\":\"log-mesh-traffic\",\"nodes\":\"$undefined\"},{\"label\":\"Configuration audit logging\",\"numericId\":1203,\"slug\":\"audit-logging\",\"nodes\":\"$undefined\"},{\"label\":\"Network flow logs\",\"numericId\":1219,\"slug\":\"network-flow-logs\",\"nodes\":\"$undefined\"},{\"label\":\"Log streaming\",\"numericId\":1255,\"slug\":\"log-streaming\",\"nodes\":\"$undefined\"},{\"label\":\"SSH session recording\",\"numericId\":1246,\"slug\":\"tailscale-ssh-session-recording\",\"items\":\"$f8\",\"nodes\":[{\"label\":\"Send recordings to S3\",\"numericId\":1263,\"slug\":\"session-recording-s3\",\"nodes\":\"$undefined\"},{\"label\":\"Deploy multiple recorder nodes\",\"numericId\":1262,\"slug\":\"multiple-recorder-nodes\",\"nodes\":\"$undefined\"}]},{\"label\":\"Webhooks\",\"numericId\":1213,\"slug\":\"webhooks\",\"nodes\":\"$undefined\"}]},{\"label\":\"Manage Your Organization\",\"numericId\":1431,\"slug\":\"manage-account\",\"items\":[{\"label\":\"Contact preferences\",\"numericId\":1224,\"slug\":\"contract-preferences\"},{\"label\":\"Pricing and billing\",\"numericId\":1375,\"slug\":\"pb-lp\",\"items\":[{\"label\":\"Pricing ↗\",\"href\":\"/pricing\"},{\"label\":\"Pricing \u0026 Plans FAQ\",\"numericId\":1251,\"slug\":\"pricing-faq\"},{\"label\":\"Free plans and discounts\",\"numericId\":1154,\"slug\":\"free-plans-discounts\"},{\"label\":\"Modify billing\",\"numericId\":1182,\"slug\":\"billing-information\"},{\"label\":\"Tailscale on Azure Marketplace\",\"numericId\":1220,\"slug\":\"azure-marketplace\"}]},{\"label\":\"Tailnet name\",\"numericId\":1217,\"slug\":\"tailnet-name\"},{\"label\":\"Domain ownership\",\"numericId\":1259,\"slug\":\"domain-ownership\"}],\"nodes\":[{\"label\":\"Contact preferences\",\"numericId\":1224,\"slug\":\"contract-preferences\",\"nodes\":\"$undefined\"},{\"label\":\"Pricing and billing\",\"numericId\":1375,\"slug\":\"pb-lp\",\"items\":\"$fb\",\"nodes\":[{\"label\":\"Pricing ↗\",\"href\":\"/pricing\",\"nodes\":\"$undefined\"},{\"label\":\"Pricing \u0026 Plans FAQ\",\"numericId\":1251,\"slug\":\"pricing-faq\",\"nodes\":\"$undefined\"},{\"label\":\"Free plans and discounts\",\"numericId\":1154,\"slug\":\"free-plans-discounts\",\"nodes\":\"$undefined\"},{\"label\":\"Modify billing\",\"numericId\":1182,\"slug\":\"billing-information\",\"nodes\":\"$undefined\"},{\"label\":\"Tailscale on Azure Marketplace\",\"numericId\":1220,\"slug\":\"azure-marketplace\",\"nodes\":\"$undefined\"}]},{\"label\":\"Tailnet name\",\"numericId\":1217,\"slug\":\"tailnet-name\",\"nodes\":\"$undefined\"},{\"label\":\"Domain ownership\",\"numericId\":1259,\"slug\":\"domain-ownership\",\"nodes\":\"$undefined\"}]},{\"label\":\"Reference\",\"numericId\":1367,\"slug\":\"reference\",\"items\":[{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"items\":[{\"label\":\"Grants\",\"numericId\":1324,\"slug\":\"acl-grants\"},{\"label\":\"IP sets\",\"numericId\":1387,\"slug\":\"ipsets\"},{\"label\":\"Via in grants\",\"numericId\":1378,\"slug\":\"via\"}]},{\"label\":\"ACL samples\",\"numericId\":1192,\"slug\":\"acl-samples\"},{\"label\":\"CLI\",\"numericId\":1080,\"slug\":\"cli\",\"items\":[{\"label\":\"tailscale funnel\",\"numericId\":1311,\"slug\":\"tailscale-funnel\"},{\"label\":\"tailscale lock\",\"numericId\":1243,\"slug\":\"tailscale-lock\"},{\"label\":\"tailscale serve\",\"numericId\":1242,\"slug\":\"tailscale-serve\"},{\"label\":\"tailscale up\",\"numericId\":1241,\"slug\":\"tailscale-up\"},{\"label\":\"tailscaled\",\"numericId\":1278,\"slug\":\"tailscaled\"}]},{\"label\":\"API\",\"numericId\":1101,\"slug\":\"api\",\"items\":[{\"label\":\"OAuth clients\",\"numericId\":1215,\"slug\":\"oauth-clients\"},{\"label\":\"tsnet for Go programs\",\"numericId\":1244,\"slug\":\"tsnet\"}]},{\"label\":\"Key prefixes\",\"numericId\":1277,\"slug\":\"key-prefixes\"},{\"label\":\"Production best practices\",\"numericId\":1300,\"slug\":\"production-best-practices\",\"items\":[{\"label\":\"Deployment checklist\",\"numericId\":1344,\"slug\":\"deployment-checklist\"},{\"label\":\"Security best practices\",\"items\":[{\"label\":\"Node hardening\",\"numericId\":1279,\"slug\":\"security-node-hardening\"},{\"label\":\"Key and secret management\",\"numericId\":1252,\"slug\":\"key-secret-management\"},{\"label\":\"Secret scanning\",\"numericId\":1301,\"slug\":\"secret-scanning\"},{\"label\":\"Admin with passkey\",\"numericId\":1341,\"slug\":\"tailnet-passkey-admin\"}],\"numericId\":1196,\"slug\":\"security-hardening\"},{\"label\":\"Performance best practices\",\"numericId\":1320,\"slug\":\"performance-best-practices\"},{\"label\":\"AWS reference architecture\",\"numericId\":1296,\"slug\":\"aws-reference-architecture\"},{\"label\":\"Azure reference architecture\",\"numericId\":1314,\"slug\":\"azure-reference-architecture\"}]},{\"label\":\"Shared responsibility\",\"numericId\":1212,\"slug\":\"shared-responsibility\"},{\"label\":\"Technical overviews\",\"numericId\":1376,\"slug\":\"tech-overviews\",\"items\":[{\"label\":\"About WireGuard\",\"numericId\":1035,\"slug\":\"wireguard\"},{\"label\":\"Control and data planes\",\"numericId\":1508,\"slug\":\"control-data-planes\"},{\"label\":\"Direct vs relayed connections\",\"numericId\":1257,\"slug\":\"connection-types\"},{\"label\":\"Device connectivity\",\"numericId\":1411,\"slug\":\"device-connectivity\"},{\"label\":\"How Tailscale assigns IP addresses\",\"numericId\":1033,\"slug\":\"ip-and-dns-addresses\"},{\"label\":\"Tailscale and the OSI model\",\"numericId\":1456,\"slug\":\"osi\"},{\"label\":\"Smaller binaries for embedded devices\",\"numericId\":1207,\"slug\":\"small-tailscale\"},{\"label\":\"Kernel vs. netstack subnet routing \u0026 exit nodes\",\"numericId\":1177,\"slug\":\"kernel-vs-userspace-routers\"},{\"label\":\"Userspace networking mode\",\"numericId\":1112,\"slug\":\"userspace-networking\"},{\"label\":\"Node keys\",\"numericId\":1010,\"slug\":\"node-keys\"},{\"label\":\"Protect SSH Servers\",\"numericId\":1009,\"slug\":\"protect-ssh-servers\"},{\"label\":\"Tailnet lock white paper\",\"numericId\":1230,\"slug\":\"tailnet-lock-whitepaper\"},{\"label\":\"DERP servers\",\"numericId\":1232,\"slug\":\"derp-servers\"},{\"label\":\"Zero Trust Networking (ZTN)\",\"numericId\":1123,\"slug\":\"zero-trust\"},{\"label\":\"IPv4 vs. IPv6 FAQ\",\"numericId\":1134,\"slug\":\"ipv6-faq\"}]},{\"label\":\"Terminology and concepts\",\"numericId\":1155,\"slug\":\"terminology-and-concepts\"},{\"label\":\"GitHub ↗\",\"href\":\"https://github.com/tailscale/tailscale\"}],\"nodes\":[{\"label\":\"ACL syntax\",\"numericId\":1337,\"slug\":\"acl-syntax\",\"items\":\"$101\",\"nodes\":[{\"label\":\"Grants\",\"numericId\":1324,\"slug\":\"acl-grants\",\"nodes\":\"$undefined\"},{\"label\":\"IP sets\",\"numericId\":1387,\"slug\":\"ipsets\",\"nodes\":\"$undefined\"},{\"label\":\"Via in grants\",\"numericId\":1378,\"slug\":\"via\",\"nodes\":\"$undefined\"}]},{\"label\":\"ACL samples\",\"numericId\":1192,\"slug\":\"acl-samples\",\"nodes\":\"$undefined\"},{\"label\":\"CLI\",\"numericId\":1080,\"slug\":\"cli\",\"items\":\"$105\",\"nodes\":[{\"label\":\"tailscale funnel\",\"numericId\":1311,\"slug\":\"tailscale-funnel\",\"nodes\":\"$undefined\"},{\"label\":\"tailscale lock\",\"numericId\":1243,\"slug\":\"tailscale-lock\",\"nodes\":\"$undefined\"},{\"label\":\"tailscale serve\",\"numericId\":1242,\"slug\":\"tailscale-serve\",\"nodes\":\"$undefined\"},{\"label\":\"tailscale up\",\"numericId\":1241,\"slug\":\"tailscale-up\",\"nodes\":\"$undefined\"},{\"label\":\"tailscaled\",\"numericId\":1278,\"slug\":\"tailscaled\",\"nodes\":\"$undefined\"}]},{\"label\":\"API\",\"numericId\":1101,\"slug\":\"api\",\"items\":\"$10b\",\"nodes\":[{\"label\":\"OAuth clients\",\"numericId\":1215,\"slug\":\"oauth-clients\",\"nodes\":\"$undefined\"},{\"label\":\"tsnet for Go programs\",\"numericId\":1244,\"slug\":\"tsnet\",\"nodes\":\"$undefined\"}]},{\"label\":\"Key prefixes\",\"numericId\":1277,\"slug\":\"key-prefixes\",\"nodes\":\"$undefined\"},{\"label\":\"Production best practices\",\"numericId\":1300,\"slug\":\"production-best-practices\",\"items\":\"$10e\",\"nodes\":[{\"label\":\"Deployment checklist\",\"numericId\":1344,\"slug\":\"deployment-checklist\",\"nodes\":\"$undefined\"},{\"label\":\"Security best practices\",\"items\":\"$111\",\"numericId\":1196,\"slug\":\"security-hardening\",\"nodes\":[{\"label\":\"Node hardening\",\"numericId\":1279,\"slug\":\"security-node-hardening\",\"nodes\":\"$undefined\"},{\"label\":\"Key and secret management\",\"numericId\":1252,\"slug\":\"key-secret-management\",\"nodes\":\"$undefined\"},{\"label\":\"Secret scanning\",\"numericId\":1301,\"slug\":\"secret-scanning\",\"nodes\":\"$undefined\"},{\"label\":\"Admin with passkey\",\"numericId\":1341,\"slug\":\"tailnet-passkey-admin\",\"nodes\":\"$undefined\"}]},{\"label\":\"Performance best practices\",\"numericId\":1320,\"slug\":\"performance-best-practices\",\"nodes\":\"$undefined\"},{\"label\":\"AWS reference architecture\",\"numericId\":1296,\"slug\":\"aws-reference-architecture\",\"nodes\":\"$undefined\"},{\"label\":\"Azure reference architecture\",\"numericId\":1314,\"slug\":\"azure-reference-architecture\",\"nodes\":\"$undefined\"}]},{\"label\":\"Shared responsibility\",\"numericId\":1212,\"slug\":\"shared-responsibility\",\"nodes\":\"$undefined\"},{\"label\":\"Technical overviews\",\"numericId\":1376,\"slug\":\"tech-overviews\",\"items\":\"$119\",\"nodes\":[{\"label\":\"About WireGuard\",\"numericId\":1035,\"slug\":\"wireguard\",\"nodes\":\"$undefined\"},{\"label\":\"Control and data planes\",\"numericId\":1508,\"slug\":\"control-data-planes\",\"nodes\":\"$undefined\"},{\"label\":\"Direct vs relayed connections\",\"numericId\":1257,\"slug\":\"connection-types\",\"nodes\":\"$undefined\"},{\"label\":\"Device connectivity\",\"numericId\":1411,\"slug\":\"device-connectivity\",\"nodes\":\"$undefined\"},{\"label\":\"How Tailscale assigns IP addresses\",\"numericId\":1033,\"slug\":\"ip-and-dns-addresses\",\"nodes\":\"$undefined\"},{\"label\":\"Tailscale and the OSI model\",\"numericId\":1456,\"slug\":\"osi\",\"nodes\":\"$undefined\"},{\"label\":\"Smaller binaries for embedded devices\",\"numericId\":1207,\"slug\":\"small-tailscale\",\"nodes\":\"$undefined\"},{\"label\":\"Kernel vs. netstack subnet routing \u0026 exit nodes\",\"numericId\":1177,\"slug\":\"kernel-vs-userspace-routers\",\"nodes\":\"$undefined\"},{\"label\":\"Userspace networking mode\",\"numericId\":1112,\"slug\":\"userspace-networking\",\"nodes\":\"$undefined\"},{\"label\":\"Node keys\",\"numericId\":1010,\"slug\":\"node-keys\",\"nodes\":\"$undefined\"},{\"label\":\"Protect SSH Servers\",\"numericId\":1009,\"slug\":\"protect-ssh-servers\",\"nodes\":\"$undefined\"},{\"label\":\"Tailnet lock white paper\",\"numericId\":1230,\"slug\":\"tailnet-lock-whitepaper\",\"nodes\":\"$undefined\"},{\"label\":\"DERP servers\",\"numericId\":1232,\"slug\":\"derp-servers\",\"nodes\":\"$undefined\"},{\"label\":\"Zero Trust Networking (ZTN)\",\"numericId\":1123,\"slug\":\"zero-trust\",\"nodes\":\"$undefined\"},{\"label\":\"IPv4 vs. IPv6 FAQ\",\"numericId\":1134,\"slug\":\"ipv6-faq\",\"nodes\":\"$undefined\"}]},{\"label\":\"Terminology and concepts\",\"numericId\":1155,\"slug\":\"terminology-and-concepts\",\"nodes\":\"$undefined\"},{\"label\":\"GitHub ↗\",\"href\":\"https://github.com/tailscale/tailscale\",\"nodes\":\"$undefined\"}]},{\"label\":\"Get Support\",\"numericId\":1432,\"slug\":\"get-support\",\"items\":[{\"label\":\"Troubleshooting\",\"numericId\":1023,\"slug\":\"troubleshooting\",\"items\":[{\"label\":\"Troubleshoot device connectivity\",\"numericId\":1463,\"slug\":\"troubleshoot-connectivity\"}]},{\"label\":\"Support options\",\"numericId\":1250,\"slug\":\"support-options\"},{\"label\":\"Contact support ↗\",\"href\":\"/contact/support\"},{\"label\":\"Generate a bug report\",\"numericId\":1227,\"slug\":\"bug-report\"}],\"nodes\":[{\"label\":\"Troubleshooting\",\"numericId\":1023,\"slug\":\"troubleshooting\",\"items\":\"$129\",\"nodes\":[{\"label\":\"Troubleshoot device connectivity\",\"numericId\":1463,\"slug\":\"troubleshoot-connectivity\",\"nodes\":\"$undefined\"}]},{\"label\":\"Support options\",\"numericId\":1250,\"slug\":\"support-options\",\"nodes\":\"$undefined\"},{\"label\":\"Contact support ↗\",\"href\":\"/contact/support\",\"nodes\":\"$undefined\"},{\"label\":\"Generate a bug report\",\"numericId\":1227,\"slug\":\"bug-report\",\"nodes\":\"$undefined\"}]},{\"label\":\"Resources\",\"numericId\":1368,\"slug\":\"resources\",\"items\":[{\"label\":\"Changelog ↗\",\"href\":\"/changelog\"},{\"label\":\"Comparisons ↗\",\"href\":\"/compare\"},{\"label\":\"Release stages\",\"numericId\":1167,\"slug\":\"release-stages\"},{\"label\":\"Security ↗\",\"href\":\"/security\"},{\"label\":\"Versions\",\"numericId\":1168,\"slug\":\"versions\",\"items\":[{\"label\":\"Unstable builds\",\"numericId\":1083,\"slug\":\"install-unstable\"}]},{\"label\":\"Use cases\",\"numericId\":1377,\"slug\":\"use-cases\"},{\"label\":\"Invite only features\",\"numericId\":1222,\"slug\":\"invite-only-feature\"}],\"nodes\":[{\"label\":\"Changelog ↗\",\"href\":\"/changelog\",\"nodes\":\"$undefined\"},{\"label\":\"Comparisons ↗\",\"href\":\"/compare\",\"nodes\":\"$undefined\"},{\"label\":\"Release stages\",\"numericId\":1167,\"slug\":\"release-stages\",\"nodes\":\"$undefined\"},{\"label\":\"Security ↗\",\"href\":\"/security\",\"nodes\":\"$undefined\"},{\"label\":\"Versions\",\"numericId\":1168,\"slug\":\"versions\",\"items\":\"$12b\",\"nodes\":[{\"label\":\"Unstable builds\",\"numericId\":1083,\"slug\":\"install-unstable\",\"nodes\":\"$undefined\"}]},{\"label\":\"Use cases\",\"numericId\":1377,\"slug\":\"use-cases\",\"nodes\":\"$undefined\"},{\"label\":\"Invite only features\",\"numericId\":1222,\"slug\":\"invite-only-feature\",\"nodes\":\"$undefined\"}]}]}]}],[\"$\",\"div\",null,{\"className\":\"relative pb-6 md:hidden\",\"children\":[\"$\",\"$L12d\",null,{\"routeParams\":\"$12e\",\"config\":\"$12f\"}]}]]}],[\"$\",\"div\",null,{\"className\":\"col-span-10 mb-8 md:col-span-7 xl:col-span-6\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-3xl xl:mx-auto\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-8\",\"children\":[\"$\",\"$2c1\",null,{\"children\":[\"$\",\"$L2c2\",null,{\"initialQuery\":\"$undefined\"}]}]}],[\"$\",\"article\",null,{\"id\":\"main-content\",\"className\":\"prism markdown-content js-docHighlight\",\"children\":[[\"$\",\"header\",null,{\"className\":\"mb-2 hidden md:flex\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Docs\\\",\\\"item\\\":\\\"/kb\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"Start\\\",\\\"item\\\":\\\"/kb/1346/start\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"Set up an identity provider\\\",\\\"item\\\":\\\"/kb/1013/sso-providers\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":4,\\\"name\\\":\\\"Custom OIDC providers\\\",\\\"item\\\":\\\"/kb/1240/sso-custom-oidc\\\"}]}\"}}],[\"$\",\"nav\",null,{\"className\":\"flex min-w-0 items-center gap-2 whitespace-nowrap text-sm font-medium\",\"children\":[[\"$\",\"$2c3\",\"/kb\",{\"children\":[[\"$\",\"$L16\",null,{\"className\":\"transition-color text-gray-600 hover:text-gray-800\",\"href\":\"/kb\",\"children\":\"Docs\"}],[\"$\",\"span\",null,{\"className\":\"select-none text-gray-500\",\"children\":\"›\"}]]}],[\"$\",\"$2c3\",\"/kb/1346/start\",{\"children\":[[\"$\",\"$L16\",null,{\"className\":\"transition-color text-gray-600 hover:text-gray-800\",\"href\":\"/kb/1346/start\",\"children\":\"Start\"}],[\"$\",\"span\",null,{\"className\":\"select-none text-gray-500\",\"children\":\"›\"}]]}],[\"$\",\"$2c3\",\"/kb/1013/sso-providers\",{\"children\":[[\"$\",\"$L16\",null,{\"className\":\"transition-color text-gray-600 hover:text-gray-800\",\"href\":\"/kb/1013/sso-providers\",\"children\":\"Set up an identity provider\"}],[\"$\",\"span\",null,{\"className\":\"select-none text-gray-500\",\"children\":\"›\"}]]}],[\"$\",\"span\",null,{\"className\":\"text-gray-800\",\"children\":\"Custom OIDC providers\"}]]}]]}],[\"$\",\"h1\",null,{\"className\":\"mb-4 text-4xl font-medium tracking-tight\",\"children\":\"Custom OIDC providers\"}],[\"$\",\"$L2c4\",null,{\"fallback\":[\"$\",\"div\",null,{\"className\":\"max-w-xl rounded-lg border p-6 lg:p-8\",\"children\":[[\"$\",\"h4\",null,{\"className\":\"mb-1 text-lg font-semibold tracking-tight\",\"children\":\"Sorry, an error occurred\"}],[\"$\",\"div\",null,{\"className\":\"ts-prose\",\"children\":[\"$\",\"p\",null,{\"children\":[\"There was an error while rendering the content for this page. \",[\"$\",\"span\",null,{\"className\":\"whitespace-nowrap\",\"children\":\"Please try again\"}],\" later, or\",\" \",[\"$\",\"$L16\",null,{\"href\":\"/contact/support\",\"className\":\"link\",\"children\":\"contact support\"}],\" \",\"for help.\"]}]}]]}],\"children\":[\"$\",\"div\",null,{\"className\":\"ts-prose\",\"children\":[\"$\",\"$2c1\",null,{\"children\":[[\"$\",\"p\",null,{\"children\":[\"Tailscale can integrate with identity providers that support OpenID Connect (OIDC). The steps provided in this article are required only for initial creation of a tailnet. After the signup process is completed, Tailscale will work like any other supported identity provider. For more information about OIDC, see \",[\"$\",\"a\",null,{\"href\":\"https://openid.net/connect\",\"children\":\"Welcome to OpenID Connect\"}],\".\"]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"requirements\",\"children\":\"Requirements\",\"level\":2}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":\"Proof of domain ownership and OIDC discovery using WebFinger.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"An identity provider with SSO via OIDC, that uses \",[\"$\",\"code\",null,{\"children\":\"openid\"}],\", \",[\"$\",\"code\",null,{\"children\":\"profile\"}],\", and \",[\"$\",\"code\",null,{\"children\":\"email\"}],\" scopes, and provides for a callback URL.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"The OIDC provider must use either ES256 or RSA signatures; the minimum RSA key size is 2048 bits.\"}],\"\\n\"]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"webfinger-setup\",\"children\":\"WebFinger setup\",\"level\":2}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"To use a custom OIDC provider with Tailscale, you must set up a WebFinger endpoint on your domain. WebFinger verifies that you have administrative control over a domain and issuer URL discovery. For more detailed information about using WebFinger with OIDC issuer discovery, see \",[\"$\",\"a\",null,{\"href\":\"https://www.rfc-editor.org/rfc/rfc7033#section-3.1\",\"children\":\"RFC 7033\"}],\".\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"The WebFinger endpoint must be served at \",[\"$\",\"code\",null,{\"children\":\"https://${domain}/.well-known/webfinger\"}],\" and must include the issuer URL within the JRD in the response. For example:\"]}],\"\\n\",[\"$\",\"div\",null,{\"className\":\"group relative overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute right-[5px] top-[21px] flex h-10 w-10 items-center justify-center rounded bg-grey-3 text-black opacity-0 transition-opacity duration-200 group-hover:opacity-100\",\"children\":[\"$\",\"$L2c6\",null,{\"text\":\"{\\n \\\"subject\\\": \\\"acct:${email}\\\",\\n \\\"links\\\": [\\n {\\n \\\"rel\\\": \\\"http://openid.net/specs/connect/1.0/issuer\\\",\\n \\\"href\\\": \\\"${issuer URL}\\\"\\n }\\n ]\\n}\\n\"}]}],[\"$\",\"pre\",null,{\"className\":\"refractor language-json\",\"children\":[\"$\",\"code\",null,{\"className\":\"language-json\",\"children\":[[\"$\",\"span\",\"fract-0-0\",{\"className\":\"token punctuation\",\"children\":[\"{\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-2\",{\"className\":\"token property\",\"children\":[\"\\\"subject\\\"\"]}],[\"$\",\"span\",\"fract-0-3\",{\"className\":\"token operator\",\"children\":[\":\"]}],\" \",[\"$\",\"span\",\"fract-0-5\",{\"className\":\"token string\",\"children\":[\"\\\"acct:${email}\\\"\"]}],[\"$\",\"span\",\"fract-0-6\",{\"className\":\"token punctuation\",\"children\":[\",\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-8\",{\"className\":\"token property\",\"children\":[\"\\\"links\\\"\"]}],[\"$\",\"span\",\"fract-0-9\",{\"className\":\"token operator\",\"children\":[\":\"]}],\" \",[\"$\",\"span\",\"fract-0-11\",{\"className\":\"token punctuation\",\"children\":[\"[\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-13\",{\"className\":\"token punctuation\",\"children\":[\"{\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-15\",{\"className\":\"token property\",\"children\":[\"\\\"rel\\\"\"]}],[\"$\",\"span\",\"fract-0-16\",{\"className\":\"token operator\",\"children\":[\":\"]}],\" \",[\"$\",\"span\",\"fract-0-18\",{\"className\":\"token string\",\"children\":[\"\\\"http://openid.net/specs/connect/1.0/issuer\\\"\"]}],[\"$\",\"span\",\"fract-0-19\",{\"className\":\"token punctuation\",\"children\":[\",\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-21\",{\"className\":\"token property\",\"children\":[\"\\\"href\\\"\"]}],[\"$\",\"span\",\"fract-0-22\",{\"className\":\"token operator\",\"children\":[\":\"]}],\" \",[\"$\",\"span\",\"fract-0-24\",{\"className\":\"token string\",\"children\":[\"\\\"${issuer URL}\\\"\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-26\",{\"className\":\"token punctuation\",\"children\":[\"}\"]}],\"\\n \",[\"$\",\"span\",\"fract-0-28\",{\"className\":\"token punctuation\",\"children\":[\"]\"]}],\"\\n\",[\"$\",\"span\",\"fract-0-30\",{\"className\":\"token punctuation\",\"children\":[\"}\"]}],\"\\n\"]}]}]]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"The WebFinger endpoint must be hosted at the domain of the email address provided during setup. The issuer URL specified in your JRD must exactly match the issuer URL in your \",[\"$\",\"code\",null,{\"children\":\"/.well-known/openid-configuration\"}],\". For more information, refer to the \",[\"$\",\"a\",null,{\"href\":\"https://www.rfc-editor.org/rfc/rfc7033#section-3.1\",\"children\":\"Identity Provider Discovery for OpenID Connect\"}],\" section in the RFC 7033: WebFinger specification.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"To verify your WebFinger endpoint:\"}],\"\\n\",[\"$\",\"ol\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"In your browser, open the \",[\"$\",\"a\",null,{\"href\":\"https://webfinger.net/lookup\",\"children\":\"WebFinger Lookup tool\"}],\".\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"In the \",[\"$\",\"strong\",null,{\"children\":\"Lookup WebFinger\"}],\" search box, enter the user's email address.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Select the search icon.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Examine the results to see if your endpoint is valid.\"}],\"\\n\"]}],\"\\n\",[\"$\",\"div\",null,{\"className\":\"note border-grey-200 relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"absolute left-3 top-3 inline-block h-[18px] w-[18px]\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"18px\",\"height\":\"18px\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[[\"$\",\"circle\",null,{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}],[\"$\",\"line\",null,{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"12\"}],[\"$\",\"line\",null,{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12.01\",\"y2\":\"8\"}]]}]}],[\"$\",\"p\",null,{\"children\":[\"Tailscale uses the issuer value from your WebFinger endpoint \",[\"$\",\"em\",null,{\"children\":\"only\"}],\" during the initial setup. After you have started using a custom OIDC provider with Tailscale, to use a new issuer, update the issue in your WebFinger endpoint and then \",[\"$\",\"$L16\",null,{\"href\":\"/contact/support\",\"children\":\"contact support\"}],\" so we can finalize your integration with the new issuer.\"]}]]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"identity-provider-setup\",\"children\":\"Identity provider setup\",\"level\":2}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"The identity provider used for your custom OIDC setup must comply with the OIDC specification and the Tailscale requirements.\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Tailscale\"}],\" requires you to provide the following:\"]}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Issuer URL retrieved from the WebFinger endpoint, described in the \",[\"$\",\"a\",null,{\"href\":\"#webfinger-setup\",\"children\":\"previous section\"}],\".\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Client ID.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Client secret from your identity provider.\"}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Scopes\"}],\" specify the required information to include in the authentication request. The required scopes are \",[\"$\",\"code\",null,{\"children\":\"openid\"}],\", \",[\"$\",\"code\",null,{\"children\":\"profile\"}],\", and \",[\"$\",\"code\",null,{\"children\":\"email\"}],\". Tailscale requests the minimum number scopes required to operate, and the information on how we use your data can be found in our \",[\"$\",\"$L16\",null,{\"href\":\"/privacy-policy\",\"children\":\"privacy policy\"}],\".\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Prompts\"}],\" specify the requirements and behavior on the authentication page for the user. Prompts are optional, and the supported values within the Tailscale\\nsetup UI are \",[\"$\",\"code\",null,{\"children\":\"none\"}],\", \",[\"$\",\"code\",null,{\"children\":\"consent\"}],\" (the default), \",[\"$\",\"code\",null,{\"children\":\"login\"}],\", and \",[\"$\",\"code\",null,{\"children\":\"select_account\"}],\". Note that individual identity providers or identity provider\\nconfiguration may not support any or all of these values. For more information, refer to the OIDC \",[\"$\",\"a\",null,{\"href\":\"https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\",\"children\":\"Authentication Request\"}],\" specification.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Callback URL\"}],\" must be configured in your identity provider settings, with the following URL:\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"$\",\"code\",null,{\"children\":\"https://login.tailscale.com/a/oauth_response\"}]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"additional-provider-configurations\",\"children\":\"Additional provider configurations\",\"level\":3}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"Specific identity providers may require additional configurations:\"}],\"\\n\",[\"$\",\"table\",null,{\"children\":[[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",null,{\"children\":[\"$\",\"strong\",null,{\"children\":\"Identity provider\"}]}],[\"$\",\"th\",null,{\"children\":[\"$\",\"strong\",null,{\"children\":\"Additional configurations needed\"}]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Auth0\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Authelia\"}],[\"$\",\"td\",null,{\"children\":[\"Refer to the instructions in the \",[\"$\",\"a\",null,{\"href\":\"https://www.authelia.com/integration/openid-connect/tailscale/\",\"children\":\"Authelia topic about Tailscale\"}],\".\"]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Authentik\"}],[\"$\",\"td\",null,{\"children\":[\"Use an \",[\"$\",\"code\",null,{\"children\":\"RS256\"}],\" signing token as the signing key.\"]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"AWS Cognito\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Codeberg\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Dex\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Duo\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Gitea\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"GitLab\"}],[\"$\",\"td\",null,{\"children\":\"You must have an active GitLab session in your browser when signing up or in.\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"GitLab self-managed\"}],[\"$\",\"td\",null,{\"children\":\"You must have an active GitLab session in your browser when signing up or in.\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"JumpCloud\"}],[\"$\",\"td\",null,{\"children\":[\"Service Provider Attribute Name for \",[\"$\",\"code\",null,{\"children\":\"email\"}],\" and \",[\"$\",\"code\",null,{\"children\":\"name\"}],\" mapped to \",[\"$\",\"code\",null,{\"children\":\"email\"}],\" and \",[\"$\",\"code\",null,{\"children\":\"fullname\"}],\" as a JumpCloud Attribute Name, and Client Authentication Type set to Client Secret Basic.\"]}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Keycloak\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Ory Network\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Ory self-hosted\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Ping Identity\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"ZITADEL Cloud\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"ZITADEL Open Source\"}],[\"$\",\"td\",null,{\"children\":\"None\"}]]}],[\"$\",\"tr\",null,{\"children\":[[\"$\",\"td\",null,{\"children\":\"Zoho\"}],[\"$\",\"td\",null,{\"children\":[\"You must set up a Server-based Applications client type. The Issuer URL for your application must match the data center region the application was created in. As examples, US-based applications must use \",[\"$\",\"code\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://accounts.zoho.com\",\"children\":\"https://accounts.zoho.com\"}]}],\" whereas Canada-based applications must use \",[\"$\",\"code\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://accounts.zohocloud.ca\",\"children\":\"https://accounts.zohocloud.ca\"}]}],\". Your Zoho region is the domain you navigate to in order to view your Zoho Dashboard. If you have users based in different Zoho regions, you must check the \",[\"$\",\"b\",null,{\"children\":\"Use the same OAuth credentials for all data centers\"}],\" box under the \",[\"$\",\"b\",null,{\"children\":\"Settings\"}],\" tab for the application.\"]}]]}]]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"tailscale-setup\",\"children\":\"Tailscale setup\",\"level\":2}],\"\\n\",[\"$\",\"ol\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Go to the \",[\"$\",\"a\",null,{\"href\":\"https://login.tailscale.com/start/oidc\",\"children\":[\"$\",\"strong\",null,{\"children\":\"Sign up with OIDC\"}]}],\" page of the admin console.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Or, when \",[\"$\",\"a\",null,{\"href\":\"https://login.tailscale.com/start\",\"children\":\"signing up for your Tailscale account\"}],\", select \",[\"$\",\"strong\",null,{\"children\":\"Sign up with OIDC\"}],\".\"]}],\"\\n\",[\"$\",\"figure\",null,{\"className\":\"bordered\",\"children\":[null,[\"$\",\"$L2c7\",null,{\"src\":{\"src\":\"/_next/static/media/sign-up-oidc.b699a417.png\",\"height\":1254,\"width\":1168,\"blurDataURL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAICAMAAAAC2hU0AAAADFBMVEX08vL+/v74+Pjv6+vdWwfqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAJ0lEQVR4nCXJsREAMAyDQJD23zmnmOYL0DSKlDKX5EID+xtnv9DiAwgvAD3B55L9AAAAAElFTkSuQmCC\",\"blurWidth\":7,\"blurHeight\":8},\"alt\":\"Select OIDC when signing up to Tailscale\",\"width\":\"450\",\"height\":\"$undefined\"}],null]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"In the \",[\"$\",\"strong\",null,{\"children\":\"Email address\"}],\" field, enter the administrator’s full email address. The domain in the email address must match the domain where the WebFinger endpoint is served, and the domain you will use for Tailscale.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Select \",[\"$\",\"strong\",null,{\"children\":\"Get OIDC Issuer\"}],\". If Tailscale is able to retrieve an issuer from your WebFinger endpoint, it will be displayed in the \",[\"$\",\"strong\",null,{\"children\":\"Issuer\"}],\" field.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"In the \",[\"$\",\"strong\",null,{\"children\":\"Client ID\"}],\" field, enter the ID that is generated for Tailscale by your OIDC provider.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"In the \",[\"$\",\"strong\",null,{\"children\":\"Client secret\"}],\" field, enter the client secret generated for Tailscale by your OIDC provider.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"(Optional) In the \",[\"$\",\"strong\",null,{\"children\":\"Prompts\"}],\" field, select one or more prompts to use for the user\\nauthentication flow. Note that you are not required to pick a value. These values are defined in\\nthe OIDC \",[\"$\",\"a\",null,{\"href\":\"https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\",\"children\":\"Authentication Request\"}],\" specification. If you select \",[\"$\",\"code\",null,{\"children\":\"none\"}],\", you\\ncannot select any other prompt.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Select \",[\"$\",\"strong\",null,{\"children\":\"Sign up with OIDC\"}],\". You will be redirected to your provider for authentication.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":\"Log in to your provider using the email you entered in step 2. Upon authentication, you will be redirected to the Tailscale admin console.\"}],\"\\n\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"The user that configures OIDC for Tailscale becomes the first user in the \",[\"$\",\"$L16\",null,{\"href\":\"/kb/1155/terminology-and-concepts/#tailnet\",\"children\":\"tailnet\"}],\" and \",[\"$\",\"$L16\",null,{\"href\":\"/kb/1138/user-roles/\",\"className\":\"!font-medium !text-blue-500 underline decoration-blue-50 underline-offset-4 hover:!text-blue-700 hover:!decoration-blue-500 focus-visible:no-underline\",\"children\":\"Owner\"}],\" of the tailnet.\"]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"additional-tailnet-users\",\"children\":\"Additional tailnet users\",\"level\":2}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"When additional users from the same domain log in to Tailscale, they can enter their email, and will be redirected for authentication to the recognized identity provider.\"}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"migrate-an-existing-tailnet\",\"children\":\"Migrate an existing tailnet\",\"level\":2}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"If you have an existing tailnet, \",[\"$\",\"$L16\",null,{\"href\":\"/contact/support\",\"children\":\"contact support\"}],\" to migrate to a custom OIDC provider. You must have a WebFinger endpoint correctly configured on your domain.\"]}],\"\\n\",[\"$\",\"div\",null,{\"className\":\"note border-grey-200 relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm\",\"children\":[[\"$\",\"span\",null,{\"className\":\"absolute left-3 top-3 inline-block h-[18px] w-[18px]\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"18px\",\"height\":\"18px\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[[\"$\",\"circle\",null,{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}],[\"$\",\"line\",null,{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"12\"}],[\"$\",\"line\",null,{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12.01\",\"y2\":\"8\"}]]}]}],[\"$\",\"p\",null,{\"children\":\"We can only migrate a Tailscale account that uses a custom domain to a custom OIDC provider. For example, @yourcustomdomain.com can be migrated, while non-custom domains such as @gmail.com cannot be migrated.\"}]]}],\"\\n\",[\"$\",\"$L2c5\",null,{\"id\":\"notes\",\"children\":\"Notes\",\"level\":2}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":\"Self-hosted identity providers must be publicly accessible on the internet. IP block listing may interfere with the ability to sign up or authenticate to your tailnet.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"User and group provisioning is not supported for custom OIDC provider setups.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"All users connecting to a tailnet from the same domain must use the same identity provider.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"When a user logs out of Tailscale, they are not logged out of their identity provider automatically. If users do not log out of the identity provider, then when they reconnect to Tailscale, they will not need to reauthenticate.\"}],\"\\n\"]}]]}]}]}]]}],[\"$\",\"p\",null,{\"className\":\"mt-6 text-sm leading-snug text-gray-600\",\"children\":[\"Last updated \",\"Aug 16, 2024\"]}]]}]}],[\"$\",\"aside\",null,{\"className\":\"js-docHighlight col-span-10 h-full pb-8 md:col-span-8 md:col-start-4 xl:col-span-2 xl:col-start-auto\",\"children\":[\"$\",\"div\",null,{\"className\":\"sticky top-16 flex flex-col gap-8\",\"children\":[[\"$\",\"$L2c8\",null,{\"data\":[{\"id\":\"requirements\",\"text\":\"Requirements\",\"level\":2},{\"id\":\"webfinger-setup\",\"text\":\"WebFinger setup\",\"level\":2},{\"id\":\"identity-provider-setup\",\"text\":\"Identity provider setup\",\"level\":2},{\"id\":\"additional-provider-configurations\",\"text\":\"Additional provider configurations\",\"level\":3},{\"id\":\"tailscale-setup\",\"text\":\"Tailscale setup\",\"level\":2},{\"id\":\"additional-tailnet-users\",\"text\":\"Additional tailnet users\",\"level\":2},{\"id\":\"migrate-an-existing-tailnet\",\"text\":\"Migrate an existing tailnet\",\"level\":2},{\"id\":\"notes\",\"text\":\"Notes\",\"level\":2}]}],null]}]}]]}]\n"])</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10