Starting from version 0.6.0, self-hosted deployments include a dedicated System Admin area.Think of it as the place where you manage things that belong to the whole instance, not just a single project. That includes:
Instance metadata and policies
Authentication behavior
Instance-level subscription and licensing
Global user management
Global project management
Open System Admin from the account menu in the bottom-left corner of the app.
On a fresh self-hosted deployment, the first person who opens the site will be asked to set up the first admin account.This account becomes the instance’s first System Admin. After setup, you can open System Admin from the account menu to manage:
instance settings
authentication policy
instance subscription
users
projects
If you’re upgrading an older self-hosted deployment and you don’t yet have any System Admin, assign that permission manually first. A simple PostgreSQL example looks like this:
The Authentication page also hosts the instance-wide Two-factor authentication policy. This is where a System Admin can require every user on the instance to set up 2FA with an authenticator app before they can use Usertour.For the per-user setup flow (scanning a QR code, saving recovery codes, signing in), see the user-facing guide: Two-Factor Authentication.
Turn on Require 2FA for all users to enforce 2FA across the entire instance.When the toggle is on:
Users who haven’t set up 2FA yet are taken to a setup page the next time they open Usertour, and they can’t use anything else until setup is finished.
Any active sessions those users have on other devices are signed out, so they’re prompted to set up 2FA right away rather than continuing in an unprotected session.
On their Settings → Account page, the Disable 2FA option is locked. A tooltip explains that the administrator requires 2FA.
A System Admin can still turn the policy off later — but only after enabling 2FA on their own account.
You must have 2FA enabled on your own account. Otherwise you’d lock yourself out the moment the policy takes effect. The toggle stays disabled and an inline message links to your account settings.
Your instance license must cover two-factor authentication. This is an Enterprise feature on self-hosted plans. If the current license doesn’t include it, the toggle stays disabled and the page shows an upgrade message.
For more on instance licensing and how to upload an instance license, see License Management.
Two-factor authentication is a self-hosted Enterprise feature. If the instance license expires or stops covering it, the feature as a whole is paused on the instance — not silently switched off, but not actively enforced either:
The Require 2FA for all users toggle stays in its current position, with an inline notice telling the admin that the policy is not currently being applied.
Users who haven’t set up 2FA yet are not forced to do so.
Users who already set up 2FA sign in with just their password while the license is unlicensed. Their stored authenticator secret and unused recovery codes are preserved in the database untouched.
Once a valid license is in place again, everything snaps back: enrolled users are asked for their authenticator code at the next sign-in, the policy starts forcing un-enrolled users through setup again, and the Account page lets users manage 2FA again.
We treat 2FA as license-gated end-to-end rather than splitting “new enrollment” from “existing enrollment”. A self-hosted instance that no longer pays for the feature simply doesn’t have it; renewing the license restores it without anyone losing their setup.
The instance-wide Require 2FA for all users toggle exists only in self-hosted deployments. On Usertour Cloud (SaaS), each user manages 2FA on their own account from Settings → Account; there is no instance-wide enforcement.
By design, Usertour does not offer an admin button for resetting another user’s 2FA — handing one person the ability to silently drop someone else’s second factor would defeat the point of having it. The escape hatch is database-level: if a user has lost both their authenticator app and their recovery codes, a System Admin can reset 2FA directly in PostgreSQL.
-- Replace 'lost-access@example.com' with the actual user's email.WITH target AS ( SELECT id FROM "User" WHERE email = 'lost-access@example.com')UPDATE "User"SET "twoFactorEnabled" = false, "twoFactorSecret" = NULL, "twoFactorEnabledAt" = NULLWHERE id IN (SELECT id FROM target);DELETE FROM "TwoFactorRecoveryCode"WHERE "userId" IN (SELECT id FROM target);
After the reset, ask the user to sign in again and re-enable 2FA. If the instance-wide policy is on, they’ll be taken to the setup page automatically.
Only use this path when there is no other way back in. Confirm the user’s identity through a side channel (a video call, a known internal account, etc.) before resetting their second factor.
The Subscription page is the main place to manage instance-level licensing in self-hosted mode.From here you can:
review the current instance plan
copy the Instance ID
paste an instance license
review project usage against the current instance license
For most self-hosted setups, this is the licensing page you’ll use most often.The current System Admin subscription flow uses a write-only license field. Paste the instance
license, submit it, and the stored license text will not be shown again afterward.For a full explanation of instance-level vs. project-level licensing, see License Management.
The Projects page gives you a top-level view of every project in the instance.From here you can:
search projects by name
create a new project
inspect project owners and member counts
open project member management
add or remove members
control whether a project uses the instance license when applicable
If your instance license has a limited project allowance, this page is also where you decide which projects should use it. If the instance license is unlimited, projects can inherit it automatically.
In practice, most teams will want to use instance-level subscription as the default and only use project-level subscription when a specific project needs separate handling. The Allow project-level subscription management setting helps reduce duplicate entry points in the UI without taking away support for project licenses.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Usertour documention","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/usertour/fGy2waOqk2YYQ2QK/logo-dark.svg?fit=max\u0026auto=format\u0026n=fGy2waOqk2YYQ2QK\u0026q=85\u0026s=841070ff620cff55401ec69cfc514e27","dark":"https://mintcdn.com/usertour/fGy2waOqk2YYQ2QK/logo-light.svg?fit=max\u0026auto=format\u0026n=fGy2waOqk2YYQ2QK\u0026q=85\u0026s=28f06f1ac3d117bd77837574e801ed7b","href":"https://www.usertour.io/"},"favicon":"https://mintcdn.com/usertour/nYBy6MD0LzNhBLol/images/favicon.png?fit=max\u0026auto=format\u0026n=nYBy6MD0LzNhBLol\u0026q=85\u0026s=2d933e312d87107d569af0615a00225b","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"mailto:support@usertour.io","label":"Support"}]},"footer":{"socials":{"x":"https://x.com/usertourio","github":"https://github.com/usertour/usertour","discord":"https://discord.gg/WPVJPX8fJh"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"usertour","hasAudioNarration":false,"actualSubdomain":"usertour","customDomains":["docs.usertour.io"],"gitSource":{"type":"github","owner":"usertour","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae457b0f07304f334661ff9","collectionId":"54f391ea-697b-4bbd-b9b7-0e3285667723","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae457b0f07304f334661ff9"},"entitlements":{},"buildId":"6ae457b0f07304f334661ff9","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":92},{"language":"default","tag":"Endpoints","count":79},{"language":"default","tag":"Documentation","count":48},{"language":"default","tag":"API Reference (v1)","count":37},{"language":"default","tag":"Usertour.js Reference","count":31},{"language":"default","tag":"How-to Guides","count":30},{"language":"default","tag":"Self-Hosting","count":20},{"language":"default","tag":"Content","count":15},{"language":"default","tag":"Users","count":14},{"language":"default","tag":"Companies","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"open-source/system-admin","slug":"/open-source/system-admin","pageMetadata":{"title":"System Admin","description":"Manage self-hosted instance settings, licensing, users, and projects","icon":"shield","href":"/open-source/system-admin"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Manage self-hosted instance settings, licensing, users, and projects\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Starting from version `,_jsx(_components.code,{children:`0.6.0`}),`, self-hosted deployments include a dedicated `,_jsx(_components.strong,{children:`System Admin`}),` area.`]}),`\n`,_jsx(_components.p,{children:`Think of it as the place where you manage things that belong to the whole instance, not just a single project. That includes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Instance metadata and policies`}),`\n`,_jsx(_components.li,{children:`Authentication behavior`}),`\n`,_jsx(_components.li,{children:`Instance-level subscription and licensing`}),`\n`,_jsx(_components.li,{children:`Global user management`}),`\n`,_jsx(_components.li,{children:`Global project management`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`System Admin`}),` from the account menu in the bottom-left corner of the app.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=2a722ec48a8eeff9af89b5a00bccdbf9`,alt:``,\"data-og-width\":`2534`,width:`2534`,\"data-og-height\":`1334`,height:`1334`,\"data-path\":`images/admin-11.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=1313b6b4d30d9e2a267e7dd73e98952a 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=21a17b0024e8dc3b41b1a836f5a58652 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=d0f0e3f4ca61586a7da26a01e12fd81e 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=c5575679fc26b5f0c9be7164763cd5ec 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=ee9b2007a68f32268d8cdb4645abc8e6 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-11.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=50f38652ad9002d399ec1689a564ea39 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`first-time-setup`,children:`First-time setup`}),`\n`,_jsxs(_components.p,{children:[`On a fresh self-hosted deployment, the first person who opens the site will be asked to `,_jsx(_components.strong,{children:`set up the first admin account`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=8fc0a31c2172e64fa5f9ed184d257c77`,alt:``,\"data-og-width\":`2144`,width:`2144`,\"data-og-height\":`1378`,height:`1378`,\"data-path\":`images/admin-12.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=313509c55046d8a4d34d5249c6530b76 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=34ffbb666eeeade7523b5d0d29741646 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=c5a5b18719e310ff385b7d58e6ef4ae5 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=220f17c131279730cccfeb42d7085ce1 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=e42aae109f4ff7265f18b2ba19f53e2e 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-12.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=5446df3a3de933cbe2582a40960caa53 2500w`}),`\n`,_jsxs(_components.p,{children:[`This account becomes the instance’s first `,_jsx(_components.strong,{children:`System Admin`}),`. After setup, you can open `,_jsx(_components.strong,{children:`System Admin`}),` from the account menu to manage:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`instance settings`}),`\n`,_jsx(_components.li,{children:`authentication policy`}),`\n`,_jsx(_components.li,{children:`instance subscription`}),`\n`,_jsx(_components.li,{children:`users`}),`\n`,_jsx(_components.li,{children:`projects`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`If you’re upgrading an older self-hosted deployment and you don’t yet have any `,_jsx(_components.code,{children:`System Admin`}),`, assign that permission manually first. A simple PostgreSQL example looks like this:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`UPDATE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"User\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"isSystemAdmin\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'your-admin@example.com'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`After that user signs in again, the `,_jsx(_components.strong,{children:`System Admin`}),` entry will appear in the account menu.`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`For version `,_jsx(_components.code,{children:`0.5.0`}),` and earlier, self-hosted deployments still seed a default bootstrap admin account:`]}),`\n`,_jsxs(_components.p,{children:[`Email: `,_jsx(_components.code,{children:`lisa@simpson.com`}),`\nPassword: `,_jsx(_components.code,{children:`secret42`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`navigation`,children:`Navigation`}),`\n`,_jsx(_components.p,{children:`The current System Admin navigation includes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`General`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Authentication`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Subscription`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Users`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Projects`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`The idea is simple:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`General`}),` and `,_jsx(_components.strong,{children:`Authentication`}),` are instance-level settings`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Subscription`}),` is where instance licensing lives`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Users`}),` and `,_jsx(_components.strong,{children:`Projects`}),` are global management pages`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`general`,children:`General`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`General`}),` page is where you manage basic instance information and a few global behaviors.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Instance ID`}),`\nRead-only identifier used for instance-scoped licensing`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Instance Name`}),`\nFriendly name for identifying the deployment`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`System Admin Contact Email`}),`\nContact email for the instance`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Allow project-level subscription management`}),`\nControls whether self-hosted projects show a project-level `,_jsx(_components.strong,{children:`Subscription`}),` entry in project settings`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`When `,_jsx(_components.strong,{children:`Allow project-level subscription management`}),` is disabled:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the project settings sidebar no longer shows `,_jsx(_components.strong,{children:`Subscription`})]}),`\n`,_jsx(_components.li,{children:`instance-level subscription becomes the preferred management entry point`}),`\n`,_jsx(_components.li,{children:`existing project licenses continue to work`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=bdb5b079dd65541f33e065ccb43847d4`,alt:``,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`1414`,height:`1414`,\"data-path\":`images/admin-01.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=3b88a457e409bf1cdff437837602a80c 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=655321138a4002a196af9dd7dc07d554 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=a05f243631ae3d3386a281a1cfd06413 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=4ebdad4c88cbbf0e37f9bc9b979ebc56 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=ede7892d3c9a7f4d7f111d9ada92ca0c 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-01.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=4f6e377b0e62c5256e7489206512bee3 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Authentication`}),` page is intentionally small right now. It currently exposes one instance-wide policy:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Allow new user registration`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`When enabled:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`users can create new accounts from the public signup flow`}),`\n`]}),`\n`,_jsx(_components.p,{children:`When disabled:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`public signup is blocked`}),`\n`,_jsxs(_components.li,{children:[`system admins can still create users from `,_jsx(_components.strong,{children:`System Admin > Users`})]}),`\n`,_jsx(_components.li,{children:`invite-based join flows continue to work`}),`\n`,_jsx(_components.li,{children:`existing users can still sign in with enabled auth providers`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=b648ef3148b8b469fb44a5c505872614`,alt:``,\"data-og-width\":`2586`,width:`2586`,\"data-og-height\":`1422`,height:`1422`,\"data-path\":`images/admin-02.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=986b9041c9b4b76ff4e60e265e4a6ca8 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=69462187167b3a7c0a83f0e1290c7341 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=b0b933ed2f88d92d178d430f4fd917ed 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=006313ea7f7016f24d7b7403fd4185c1 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=66da65efdd992517785ae7db89732902 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-02.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=c4743420fcef151864395e01e53aff47 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`two-factor-authentication`,children:`Two-Factor Authentication`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Authentication`}),` page also hosts the instance-wide `,_jsx(_components.strong,{children:`Two-factor authentication`}),` policy. This is where a System Admin can require every user on the instance to set up 2FA with an authenticator app before they can use Usertour.`]}),`\n`,_jsxs(_components.p,{children:[`For the per-user setup flow (scanning a QR code, saving recovery codes, signing in), see the user-facing guide: `,_jsx(_components.a,{href:`/how-to-guides/two-factor-authentication`,children:`Two-Factor Authentication`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`require-2fa-for-all-users`,children:`Require 2FA for all users`}),`\n`,_jsxs(_components.p,{children:[`Turn on `,_jsx(_components.strong,{children:`Require 2FA for all users`}),` to enforce 2FA across the entire instance.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=61361c2e31325e654d08c0d92bdf049b`,alt:`Require 2FA for all users — toggle`,\"data-og-width\":`2880`,width:`2880`,\"data-og-height\":`1624`,height:`1624`,\"data-path\":`images/admin-2fa-01.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=280\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=735c1474ce49500b276da7b7abb6a883 280w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=560\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=e3164c5129f0e49a0d9520aabb236994 560w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=840\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=cc5efc6fd92a5c6257b2d4732e8fe381 840w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=5777d907b092977236a08eb44f4abeaa 1100w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=06299aa0e6af33b026b032fb089c12ac 1650w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-01.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=8ad78146379366089eff721b0a040418 2500w`}),`\n`,_jsx(_components.p,{children:`When the toggle is on:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Users who haven’t set up 2FA yet are taken to a setup page the next time they open Usertour, and they can’t use anything else until setup is finished.`}),`\n`,_jsx(_components.li,{children:`Any active sessions those users have on other devices are signed out, so they’re prompted to set up 2FA right away rather than continuing in an unprotected session.`}),`\n`,_jsxs(_components.li,{children:[`On their `,_jsx(_components.strong,{children:`Settings → Account`}),` page, the `,_jsx(_components.strong,{children:`Disable 2FA`}),` option is locked. A tooltip explains that the administrator requires 2FA.`]}),`\n`,_jsx(_components.li,{children:`A System Admin can still turn the policy off later — but only after enabling 2FA on their own account.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Before you can turn the policy on:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`You must have 2FA enabled on your own account.`}),` Otherwise you’d lock yourself out the moment the policy takes effect. The toggle stays disabled and an inline message links to your account settings.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=a4eddecc1ee6763332954110efafd1ea`,alt:`Admin must enable 2FA on their own account first`,\"data-og-width\":`2880`,width:`2880`,\"data-og-height\":`1624`,height:`1624`,\"data-path\":`images/admin-2fa-02.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=280\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=3430d84d19cbe3db1ebf17b5d27dde2b 280w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=560\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=8ea93a6c784bf5c0defc8d4037293532 560w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=840\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=b337ea19a65c933420cf332ece424736 840w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=5e8b68baf82d21f8d0378b5da5eddf9e 1100w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=6ab452d877771dc65375cc2705666672 1650w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-02.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=9aefcac54fdb2102e1c97b614a74e118 2500w`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Your instance license must cover two-factor authentication.`}),` This is an Enterprise feature on self-hosted plans. If the current license doesn’t include it, the toggle stays disabled and the page shows an upgrade message.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=d058a0e9b68c59e1b4334dae17ccb92f`,alt:`Instance license must cover two-factor authentication`,\"data-og-width\":`2880`,width:`2880`,\"data-og-height\":`1624`,height:`1624`,\"data-path\":`images/admin-2fa-03.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=280\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=0df40229e1c94f9e4eb6df74f66a95cb 280w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=560\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=2c2b08147a345133b7ebcf7df81f2219 560w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=840\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=c6668ff1adaa883727d7d77636ff4f7f 840w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=6dd9242389f9cf798470e1e19d3b7e77 1100w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=856e0ab4c2394f3062659f8919f90bc5 1650w, https://mintcdn.com/usertour/Th50UQ3SaJwGkvuL/images/admin-2fa-03.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Th50UQ3SaJwGkvuL\u0026q=85\u0026s=fbc195eb494ef4dddc5a888623dc4fe6 2500w`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For more on instance licensing and how to upload an instance license, see `,_jsx(_components.a,{href:`/open-source/license-management`,children:`License Management`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`behavior-when-the-license-lapses`,children:`Behavior when the license lapses`}),`\n`,_jsxs(_components.p,{children:[`Two-factor authentication is a self-hosted Enterprise feature. If the instance license expires or stops covering it, the feature as a whole is `,_jsx(_components.strong,{children:`paused`}),` on the instance — not silently switched off, but not actively enforced either:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`Require 2FA for all users`}),` toggle stays in its current position, with an inline notice telling the admin that the policy is not currently being applied.`]}),`\n`,_jsxs(_components.li,{children:[`Users who haven’t set up 2FA yet are `,_jsx(_components.strong,{children:`not`}),` forced to do so.`]}),`\n`,_jsx(_components.li,{children:`Users who already set up 2FA sign in with just their password while the license is unlicensed. Their stored authenticator secret and unused recovery codes are preserved in the database untouched.`}),`\n`,_jsx(_components.li,{children:`Once a valid license is in place again, everything snaps back: enrolled users are asked for their authenticator code at the next sign-in, the policy starts forcing un-enrolled users through setup again, and the Account page lets users manage 2FA again.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`We treat 2FA as license-gated end-to-end rather than splitting “new enrollment” from “existing enrollment”. A self-hosted instance that no longer pays for the feature simply doesn’t have it; renewing the license restores it without anyone losing their setup.`}),`\n`,_jsx(Heading,{level:`3`,id:`saas-vs-self-hosted`,children:`SaaS vs. self-hosted`}),`\n`,_jsxs(_components.p,{children:[`The instance-wide `,_jsx(_components.strong,{children:`Require 2FA for all users`}),` toggle exists only in self-hosted deployments. On Usertour Cloud (SaaS), each user manages 2FA on their own account from `,_jsx(_components.a,{href:`/how-to-guides/two-factor-authentication`,children:`Settings → Account`}),`; there is no instance-wide enforcement.`]}),`\n`,_jsx(Heading,{level:`3`,id:`emergency-2fa-reset`,children:`Emergency 2FA reset`}),`\n`,_jsxs(_components.p,{children:[`By design, Usertour does not offer an admin button for resetting another user’s 2FA — handing one person the ability to silently drop someone else’s second factor would defeat the point of having it. The escape hatch is database-level: if a user has lost both their authenticator app `,_jsx(_components.strong,{children:`and`}),` their recovery codes, a System Admin can reset 2FA directly in PostgreSQL.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`sql`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`sql`,children:_jsxs(_components.code,{language:`sql`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- Replace 'lost-access@example.com' with the actual user's email.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WITH`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` target`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` AS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"User\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'lost-access@example.com'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`UPDATE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"User\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"twoFactorEnabled\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` false,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"twoFactorSecret\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` NULL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"twoFactorEnabledAt\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` NULL`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`IN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` target`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`DELETE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` FROM`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"TwoFactorRecoveryCode\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`WHERE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"userId\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` IN`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`SELECT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` id `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`FROM`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` target`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`After the reset, ask the user to sign in again and re-enable 2FA. If the instance-wide policy is on, they’ll be taken to the setup page automatically.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Only use this path when there is no other way back in. Confirm the user’s identity through a side channel (a video call, a known internal account, etc.) before resetting their second factor.`})}),`\n`,_jsx(Heading,{level:`2`,id:`subscription`,children:`Subscription`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Subscription`}),` page is the main place to manage instance-level licensing in self-hosted mode.`]}),`\n`,_jsx(_components.p,{children:`From here you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`review the current instance plan`}),`\n`,_jsxs(_components.li,{children:[`copy the `,_jsx(_components.strong,{children:`Instance ID`})]}),`\n`,_jsx(_components.li,{children:`paste an instance license`}),`\n`,_jsx(_components.li,{children:`review project usage against the current instance license`}),`\n`]}),`\n`,_jsx(_components.p,{children:`For most self-hosted setups, this is the licensing page you’ll use most often.`}),`\n`,_jsx(_components.p,{children:`The current System Admin subscription flow uses a write-only license field. Paste the instance\nlicense, submit it, and the stored license text will not be shown again afterward.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=8bbea8b862630c6c71cd4ccb7d3cb2b2`,alt:``,\"data-og-width\":`1445`,width:`1445`,\"data-og-height\":`886`,height:`886`,\"data-path\":`images/admin-13.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=733408c115ef37ada21d8a77103d814a 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=4abe4806e8cbc32cfb5b10db3ab45f2d 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=02cea584707501a597efd60335335c60 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=17df1205eef70a225316765c31cc38b4 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=3b0840ae91974495a3dd1fc35f606d72 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-13.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=4ea30922b2247d9ef62019ce5812389c 2500w`}),`\n`,_jsxs(_components.p,{children:[`For a full explanation of instance-level vs. project-level licensing, see `,_jsx(_components.a,{href:`/open-source/license-management`,children:`License Management`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`users`,children:`Users`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Users`}),` page gives you instance-wide user management.`]}),`\n`,_jsx(_components.p,{children:`This is where you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`search users by name or email`}),`\n`,_jsx(_components.li,{children:`add users directly with a password`}),`\n`,_jsx(_components.li,{children:`disable or re-enable users`}),`\n`,_jsxs(_components.li,{children:[`grant or remove `,_jsx(_components.strong,{children:`System Admin`}),` access`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`When public registration is disabled, this page becomes the main entry point for creating users.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=52df59161ae23fc8ebfcbc317689284e`,alt:``,\"data-og-width\":`2590`,width:`2590`,\"data-og-height\":`1424`,height:`1424`,\"data-path\":`images/admin-04.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=d978f557a3d9fe22f03b53329ad88d90 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=878adc5832396e2270be706727bb3be2 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=ac5741db4e42213dbe59e4cc360b8e9d 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=0d7c1c5e2287087c3485fe1ddc5fe9b7 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=0534f3df622d3aaa51e8ad9563d3136c 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-04.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=d3f0c8530184547feb4e0a15378008e5 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`projects`,children:`Projects`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Projects`}),` page gives you a top-level view of every project in the instance.`]}),`\n`,_jsx(_components.p,{children:`From here you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`search projects by name`}),`\n`,_jsx(_components.li,{children:`create a new project`}),`\n`,_jsx(_components.li,{children:`inspect project owners and member counts`}),`\n`,_jsx(_components.li,{children:`open project member management`}),`\n`,_jsx(_components.li,{children:`add or remove members`}),`\n`,_jsx(_components.li,{children:`control whether a project uses the instance license when applicable`}),`\n`]}),`\n`,_jsx(_components.p,{children:`If your instance license has a limited project allowance, this page is also where you decide which projects should use it. If the instance license is unlimited, projects can inherit it automatically.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=75d0c5d24c3a584c7f840eb7a564d3f0`,alt:``,\"data-og-width\":`2584`,width:`2584`,\"data-og-height\":`1422`,height:`1422`,\"data-path\":`images/admin-08.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=280\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=5ab8d5982582900027dbd0f3a2a79ebe 280w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=560\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=393defd05ca26f49e0a0eb365fa049a7 560w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=840\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=5aa47e72bc315b2dadab13eefc0c95b5 840w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=1100\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=3600c192e91edf06ca10666747b79edf 1100w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=1650\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=068d82856a93cfeea3045232c456fda5 1650w, https://mintcdn.com/usertour/I9ah3sSWOBK8hSzg/images/admin-08.png?w=2500\u0026fit=max\u0026auto=format\u0026n=I9ah3sSWOBK8hSzg\u0026q=85\u0026s=b59a13743425d42e602c97dbae5af416 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`project-level-vs-instance-level-subscription`,children:`Project-level vs. instance-level subscription`}),`\n`,_jsx(_components.p,{children:`Self-hosted Usertour supports both:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`project-level subscription`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`instance-level subscription`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`In practice, most teams will want to use instance-level subscription as the default and only use project-level subscription when a specific project needs separate handling. The `,_jsx(_components.strong,{children:`Allow project-level subscription management`}),` setting helps reduce duplicate entry points in the UI without taking away support for project licenses.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsx(_components.p,{children:`After configuring System Admin, you may also want to review:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/open-source/self-hosting`,children:`Deploy with Docker`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/open-source/env`,children:`Environment Variables`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/open-source/business-enterprise`,children:`Business + Enterprise`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"System Admin","description":"Manage self-hosted instance settings, licensing, users, and projects","icon":"shield","href":"/open-source/system-admin"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"First-time setup","slug":"first-time-setup","depth":2,"children":[]},{"title":"Navigation","slug":"navigation","depth":2,"children":[]},{"title":"General","slug":"general","depth":2,"children":[]},{"title":"Authentication","slug":"authentication","depth":2,"children":[]},{"title":"Two-Factor Authentication","slug":"two-factor-authentication","depth":2,"children":[{"title":"Require 2FA for all users","slug":"require-2fa-for-all-users","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":3,"children":[]},{"title":"Behavior when the license lapses","slug":"behavior-when-the-license-lapses","depth":3,"children":[]},{"title":"SaaS vs. self-hosted","slug":"saas-vs-self-hosted","depth":3,"children":[]},{"title":"Emergency 2FA reset","slug":"emergency-2fa-reset","depth":3,"children":[]}]},{"title":"Subscription","slug":"subscription","depth":2,"children":[]},{"title":"Users","slug":"users","depth":2,"children":[]},{"title":"Projects","slug":"projects","depth":2,"children":[]},{"title":"Project-level vs. instance-level subscription","slug":"project-level-vs-instance-level-subscription","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"usertour","siteName":"Usertour documention","title":"System Admin - Usertour documention","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-15T13:22:59.904Z","originalFileLocation":"open-source/system-admin.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Manage self-hosted instance settings, licensing, users, and projects\">\u003cmeta data-mint-head name=\"application-name\" content=\"Usertour documention\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"System Admin - Usertour documention\">\u003cmeta data-mint-head property=\"og:description\" content=\"Manage self-hosted instance settings, licensing, users, and projects\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Usertour documention\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.usertour.io/open-source/system-admin\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://usertour.mintlify.app/_mintlify/api/og/v2?division=Self-Hosting\u0026amp;title=System+Admin\u0026amp;description=Manage+self-hosted+instance+settings%2C+licensing%2C+users%2C+and+projects\u0026amp;theme=e8ff6aa64680886dad37379c\u0026amp;signature=96608b928efa30819bab43b6672fe82f0f35e6bd5217892abdc8514df14f5033\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"System Admin - Usertour documention\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Manage self-hosted instance settings, licensing, users, and projects\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://usertour.mintlify.app/_mintlify/api/og/v2?division=Self-Hosting\u0026amp;title=System+Admin\u0026amp;description=Manage+self-hosted+instance+settings%2C+licensing%2C+users%2C+and+projects\u0026amp;theme=e8ff6aa64680886dad37379c\u0026amp;signature=96608b928efa30819bab43b6672fe82f0f35e6bd5217892abdc8514df14f5033\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/usertour/vM2wRfIVfuMnzscJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Usertour documention\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.usertour.io/open-source/system-admin\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/open-source/system-admin.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.usertour.io/#organization\",\"name\":\"Usertour documention\",\"url\":\"https://docs.usertour.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/usertour/fGy2waOqk2YYQ2QK/logo-dark.svg?fit=max\u0026auto=format\u0026n=fGy2waOqk2YYQ2QK\u0026q=85\u0026s=841070ff620cff55401ec69cfc514e27\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.usertour.io#website\",\"name\":\"Usertour documention\",\"url\":\"https://docs.usertour.io\",\"publisher\":{\"@id\":\"https://docs.usertour.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.usertour.io/open-source/system-admin#webpage\",\"url\":\"https://docs.usertour.io/open-source/system-admin\",\"name\":\"System Admin\",\"description\":\"Manage self-hosted instance settings, licensing, users, and projects\",\"dateModified\":\"2026-05-15T13:22:59.904Z\",\"isPartOf\":{\"@id\":\"https://docs.usertour.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.usertour.io/open-source/system-admin#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.usertour.io/open-source/system-admin#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Self-Hosting\",\"item\":\"https://docs.usertour.io/open-source/self-hosting\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"System Admin\",\"item\":\"https://docs.usertour.io/open-source/system-admin\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.usertour.io/open-source/system-admin#article\",\"headline\":\"System Admin\",\"name\":\"System Admin\",\"description\":\"Manage self-hosted instance settings, licensing, users, and projects\",\"url\":\"https://docs.usertour.io/open-source/system-admin\",\"mainEntityOfPage\":{\"@id\":\"https://docs.usertour.io/open-source/system-admin#webpage\"},\"dateModified\":\"2026-05-15T13:22:59.904Z\",\"publisher\":{\"@id\":\"https://docs.usertour.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.usertour.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Usertour documention\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Usertour documention","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/build-onboarding-with-ai"}]},{"anchor":"Usertour.js Reference","icon":"connectdevelop","pages":[{"title":"Usertour.js Reference","href":"/developers/usertourjs-reference/overview"}]},{"anchor":"API Reference","icon":"terminal","pages":[{"title":"API Reference","href":"/api-reference-v2/introduction"}]},{"anchor":"Self-Hosting","icon":"github","groups":[{"group":"Self-Hosting","pages":[{"group":"Deployments","icon":"server","pages":[{"title":"Deploy with Docker","icon":"docker","href":"/open-source/self-hosting"},{"title":"Deploy with Coolify","icon":"cloud","href":"/open-source/coolify-deployment"}]},{"title":"Local Development","icon":"code","href":"/open-source/local-development"},{"title":"Environment Variables","icon":"paper-plane","href":"/open-source/env"},{"title":"Usertour.js Installation","description":"Install and configure Usertour.js in your self-hosted environment","icon":"js","href":"/open-source/usertourjs"},{"title":"System Admin","icon":"shield","href":"/open-source/system-admin"},{"title":"License Management","description":"Manage instance-level and project-level licenses for self-hosted Usertour deployments","icon":"key","href":"/open-source/license-management"},{"title":"Business + Enterprise","icon":"building","href":"/open-source/business-enterprise"},{"title":"Backups","icon":"database","href":"/open-source/backups"},{"title":"Troubleshooting","icon":"wrench","href":"/open-source/troubleshooting"}]}]},{"anchor":"Use Cases","icon":"route","pages":[{"title":"Use Cases","href":"/use-cases/analyze-onboarding-with-ai"}]},{"anchor":"API Reference (v1)","icon":"terminal","pages":[{"title":"API Reference (v1)","href":"/api-reference/introduction"}]},{"anchor":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog/2026"}]}]},"basePath":"","title":"System Admin - Usertour documention","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}