Files
bracket/docs/getting-started/configuration/index.html

43 lines
20 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-getting-started/configuration" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">Configuration | Bracket</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://your-docusaurus-test-site.com/bracket/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://your-docusaurus-test-site.com/bracket/img/logo.svg"><meta data-rh="true" property="og:url" content="https://your-docusaurus-test-site.com/bracket/docs/getting-started/configuration"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Configuration | Bracket"><meta data-rh="true" name="description" content="Backend"><meta data-rh="true" property="og:description" content="Backend"><link data-rh="true" rel="icon" href="/bracket/img/logo.svg"><link data-rh="true" rel="canonical" href="https://your-docusaurus-test-site.com/bracket/docs/getting-started/configuration"><link data-rh="true" rel="alternate" href="https://your-docusaurus-test-site.com/bracket/docs/getting-started/configuration" hreflang="en"><link data-rh="true" rel="alternate" href="https://your-docusaurus-test-site.com/bracket/docs/getting-started/configuration" hreflang="x-default"><link rel="stylesheet" href="/bracket/assets/css/styles.8446d7d4.css">
<script src="/bracket/assets/js/runtime~main.7d2e3a0c.js" defer="defer"></script>
<script src="/bracket/assets/js/main.3c933846.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/bracket/"><div class="navbar__logo"><img src="/bracket/img/logo.svg" alt="Bracket Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/bracket/img/logo.svg" alt="Bracket Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Bracket</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/bracket/docs/intro">Docs</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/evroon/bracket" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="navbarSearchContainer_Bca1"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/bracket/docs/intro">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" href="/bracket/docs/category/getting-started">Getting Started</a><button aria-label="Collapse sidebar category &#x27;Getting Started&#x27;" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/bracket/docs/getting-started/quickstart">Quickstart</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/bracket/docs/getting-started/installation">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/bracket/docs/getting-started/configuration">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/bracket/docs/getting-started/deployment">Deployment</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/bracket/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/bracket/docs/category/getting-started"><span itemprop="name">Getting Started</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Configuration</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>Configuration</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="backend">Backend<a href="#backend" class="hash-link" aria-label="Direct link to Backend" title="Direct link to Backend"></a></h2>
<p>Copy <code>ci.env</code> to <code>prod.env</code> and fill in the values:</p>
<ul>
<li><code>PG_DSN</code>: The URL of the PostgreSQL database</li>
<li><code>JWT_SECRET</code>: Create a random secret using <code>openssl rand -hex 32</code></li>
<li><code>CORS_ORIGINS</code> and <code>CORS_ORIGIN_REGEX</code>: Specify allowed frontend domain names for CORS (see the
<a href="https://fastapi.tiangolo.com/tutorial/cors/" target="_blank" rel="noopener noreferrer">FastAPI docs</a>)</li>
<li><code>ADMIN_EMAIL</code> and <code>ADMIN_PASSWORD</code>: The credentials of the admin user, which is created when
initializing the database</li>
<li><code>SENTRY_DSN</code>: The <a href="https://sentry.io" target="_blank" rel="noopener noreferrer">Sentry</a> DSN for monitoring and error tracking</li>
<li><code>BASE_URL</code>: The base url of the API used for SSO</li>
<li><code>ALLOW_USER_REGISTRATION</code>: Can be used to disallow user registration in the web app, currently
used for production while bracket is still in beta</li>
<li><code>ALLOW_INSECURE_HTTP_SSO</code>: Should not be used in production. Allows use of INSECURE requests for
SSO auth.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="backend-example-configuration-file">Backend: Example configuration file<a href="#backend-example-configuration-file" class="hash-link" aria-label="Direct link to Backend: Example configuration file" title="Direct link to Backend: Example configuration file"></a></h3>
<p>This is an example of how the config file should look like:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">PG_DSN</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;postgresql://bracket_ci:bracket_ci@localhost:5532/bracket_ci&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">JWT_SECRET</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;60eed5c5dc7a919b8595a23d6c42ddd8274e4feea651dc028d9bee495bbb9acd&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">CORS_ORIGINS</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;https://bracket.mydomain.com&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">CORS_ORIGIN_REGEX</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;https://.*\.vercel\.app&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ADMIN_EMAIL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;admin@example.com&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ADMIN_PASSWORD</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;some unused password&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SENTRY_DSN</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;my sentry dsn&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ALLOW_USER_REGISTRATION</span><span class="token operator">=</span><span class="token plain">false</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ALLOW_INSECURE_HTTP_SSO</span><span class="token operator">=</span><span class="token plain">false</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">CAPTCHA_SECRET</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;xxx&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="frontend">Frontend<a href="#frontend" class="hash-link" aria-label="Direct link to Frontend" title="Direct link to Frontend"></a></h2>
<ul>
<li><code>NEXT_PUBLIC_HCAPTCHA_SITE_KEY</code>: The HCaptcha key used for captcha challenges when creating new
accounts. You get the secret when you create a new site in HCaptcha.</li>
<li><code>NEXT_PUBLIC_API_BASE_URL</code>: The base URL of the backend API to which the frontend sends requests.
For example: <code>https://api.bracket.com</code></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="frontend-example-configuration-file">Frontend: Example configuration file<a href="#frontend-example-configuration-file" class="hash-link" aria-label="Direct link to Frontend: Example configuration file" title="Direct link to Frontend: Example configuration file"></a></h3>
<p>You can store the config in <code>.env.local</code> (as described in the <a href="https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables#loading-environment-variables" target="_blank" rel="noopener noreferrer">Next docs</a>).</p>
<p>This is an example of how the config file should look like:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">NEXT_PUBLIC_HCAPTCHA_SITE_KEY</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;10000000-ffff-ffff-ffff-000000000001&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">NEXT_PUBLIC_API_BASE_URL</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">&#x27;https://api.bracket.com&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/getting-started/configuration.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/bracket/docs/getting-started/installation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installation</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/bracket/docs/getting-started/deployment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Deployment</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#backend" class="table-of-contents__link toc-highlight">Backend</a><ul><li><a href="#backend-example-configuration-file" class="table-of-contents__link toc-highlight">Backend: Example configuration file</a></li></ul></li><li><a href="#frontend" class="table-of-contents__link toc-highlight">Frontend</a><ul><li><a href="#frontend-example-configuration-file" class="table-of-contents__link toc-highlight">Frontend: Example configuration file</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/bracket/docs/intro">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/bracket/docs/getting-started/configuration">Configuration</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/evroon/bracket" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/evroon/bracket/releases" target="_blank" rel="noopener noreferrer" class="footer__link-item">Changelog<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 Bracket. Built with Docusaurus.</div></div></div></footer></div>
</body>
</html>