CINXE.COM

Requirements 路 Install 路 Help 路 GitLab

<!DOCTYPE html> <html class="gl-light ui-neutral with-top-bar with-header " lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>Requirements 路 Install 路 Help 路 GitLab</title> <script nonce="S59wNFRd/65l1xw/kKqM0A=="> //<![CDATA[ window.gon={}; //]]> </script> <link rel="stylesheet" href="/assets/application-1fdb53bdcbf63d97ab4fadb617fa5184d10646d1f0314d4526607d54dbe2cc5b.css" /> <link rel="stylesheet" href="/assets/page_bundles/commit_description-1e2cba4dda3c7b30dd84924809020c569f1308dea51520fe1dd5d4ce31403195.css" /><link rel="stylesheet" href="/assets/page_bundles/work_items-d9603c98e9259c19bbb47784abf3b63b5cb7ce8d7463608443b907773ab7197d.css" /><link rel="stylesheet" href="/assets/page_bundles/notes_shared-985467dc606e2acde1735b642c5ce237ef7e965ad1c35cf33a4c9beb2ecb05b8.css" /> <link rel="stylesheet" href="/assets/application_utilities-6e9d4ced3f78abb4b0b5d21e2c5069b8c88f8e045babafc20e3c7f57893d3ee1.css" /> <link rel="stylesheet" href="/assets/tailwind-963352f5d79b0e81c8ff62ae97285b924988e6177494aaefaf1f5f466542142c.css" /> <link rel="stylesheet" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" /> <link rel="stylesheet" href="/assets/highlight/themes/white-9fc2e7ab1cefbb5a525a1e1b06c04b3141c2179a6d572b1d390cf9db8def8104.css" /> <link rel="preload" href="/assets/application_utilities-6e9d4ced3f78abb4b0b5d21e2c5069b8c88f8e045babafc20e3c7f57893d3ee1.css" as="style" type="text/css" nonce="d83/9bCKDle9KmFuas5UHg=="> <link rel="preload" href="/assets/application-1fdb53bdcbf63d97ab4fadb617fa5184d10646d1f0314d4526607d54dbe2cc5b.css" as="style" type="text/css" nonce="d83/9bCKDle9KmFuas5UHg=="> <link rel="preload" href="/assets/highlight/themes/white-9fc2e7ab1cefbb5a525a1e1b06c04b3141c2179a6d572b1d390cf9db8def8104.css" as="style" type="text/css" nonce="d83/9bCKDle9KmFuas5UHg=="> <script src="/assets/webpack/runtime.d62b9a76.bundle.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/main.8ef36d88.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/graphql.e1f11a07.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.admin.topics.edit-pages.admin.topics.new-pages.dashboar-bfe2356d.ee9898b8.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.dashboard.milestones.show-pages.-13e11bbf.31cf9968.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-8dfa5f96.e0a3e16a.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-f804d6c2.3cc37ebf.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.branches.new-pages.projects.commits.show-pages.proje-25ebd1ad.04ee6931.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.groups.new-pages.import.gitlab_projects.new-pages.import.manifest.new-pages.projects.n-44c6c18e.03dad955.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/commons-pages.search.show-super_sidebar.05f8455b.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/super_sidebar.5540ac2a.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <script src="/assets/webpack/default.152b9dad.chunk.js" defer="defer" nonce="S59wNFRd/65l1xw/kKqM0A=="></script> <meta content="object" property="og:type"> <meta content="GitLab" property="og:site_name"> <meta content="Requirements 路 Install 路 Help 路 GitLab" property="og:title"> <meta content="Debian Salsa Gitlab" property="og:description"> <meta content="https://salsa.debian.org/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="og:image"> <meta content="64" property="og:image:width"> <meta content="64" property="og:image:height"> <meta content="https://salsa.debian.org/help/install/requirements" property="og:url"> <meta content="summary" property="twitter:card"> <meta content="Requirements 路 Install 路 Help 路 GitLab" property="twitter:title"> <meta content="Debian Salsa Gitlab" property="twitter:description"> <meta content="https://salsa.debian.org/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="twitter:image"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="tiLoDOjx0W0H55DEs3vz4r7nWbjMiNGbKfYxNcG10AYgSVQe0x8C93ADK1xwQbstsKQQnxjkJDDp60yRqKW3Jg" /> <meta name="csp-nonce" content="S59wNFRd/65l1xw/kKqM0A==" /> <meta name="action-cable-url" content="/-/cable" /> <link href="/-/manifest.json" rel="manifest"> <link rel="icon" type="image/png" href="/uploads/-/system/appearance/favicon/1/gitlabian_32.png" id="favicon" data-original-href="/uploads/-/system/appearance/favicon/1/gitlabian_32.png" /> <link rel="apple-touch-icon" type="image/x-icon" href="/assets/apple-touch-icon-b049d4bc0dd9626f31db825d61880737befc7835982586d015bded10b4435460.png" /> <link href="/search/opensearch.xml" rel="search" title="Search GitLab" type="application/opensearchdescription+xml"> <meta content="Debian Salsa Gitlab" name="description"> <meta content="#ececef" name="theme-color"> </head> <body class="tab-width-8 gl-browser-ie gl-platform-windows" data-page="help:show"> <script nonce="S59wNFRd/65l1xw/kKqM0A=="> //<![CDATA[ gl = window.gl || {}; gl.client = {"isIe":true,"isWindows":true}; //]]> </script> <header class="header-logged-out" data-testid="navbar"> <a class="gl-sr-only gl-accessibility" href="#content-body">Skip to content</a> <div class="container-fluid"> <nav aria-label="Explore GitLab" class="header-logged-out-nav gl-flex gl-gap-3 gl-justify-between"> <div class="gl-flex gl-items-center gl-gap-1"> <span class="gl-sr-only">GitLab</span> <a title="Homepage" id="logo" class="header-logged-out-logo has-tooltip" aria-label="Homepage" href="/"><img class="brand-header-logo lazy" alt="" data-src="/uploads/-/system/appearance/header_logo/1/salsa-debian-icon.png" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" /> </a></div> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-grow"> <li class="header-logged-out-nav-item"> <a class="" href="/explore">Explore</a> </li> </ul> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-justify-end"> <li class="header-logged-out-nav-item"> <a href="/users/sign_in?redirect_to_referer=yes">Sign in</a> </li> <li class="header-logged-out-nav-item"> <a class="gl-button btn btn-md btn-confirm " href="/users/sign_up"><span class="gl-button-text"> Register </span> </a></li> </ul> </nav> </div> </header> <div class="layout-page page-with-super-sidebar"> <aside class="js-super-sidebar super-sidebar super-sidebar-loading" data-command-palette="{}" data-force-desktop-expanded-sidebar="true" data-is-saas="false" data-root-path="/" data-sidebar="{&quot;is_logged_in&quot;:false,&quot;context_switcher_links&quot;:[{&quot;title&quot;:&quot;Explore&quot;,&quot;link&quot;:&quot;/explore&quot;,&quot;icon&quot;:&quot;compass&quot;}],&quot;current_menu_items&quot;:[{&quot;id&quot;:&quot;projects_menu&quot;,&quot;title&quot;:&quot;Projects&quot;,&quot;icon&quot;:&quot;project&quot;,&quot;avatar&quot;:null,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;entity_id&quot;:null,&quot;link&quot;:&quot;/explore/projects/starred&quot;,&quot;is_active&quot;:false,&quot;pill_count&quot;:null,&quot;items&quot;:[],&quot;separated&quot;:false},{&quot;id&quot;:&quot;groups_menu&quot;,&quot;title&quot;:&quot;Groups&quot;,&quot;icon&quot;:&quot;group&quot;,&quot;avatar&quot;:null,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;entity_id&quot;:null,&quot;link&quot;:&quot;/explore/groups&quot;,&quot;is_active&quot;:false,&quot;pill_count&quot;:null,&quot;items&quot;:[],&quot;separated&quot;:false},{&quot;id&quot;:&quot;catalog_menu&quot;,&quot;title&quot;:&quot;CI/CD Catalog&quot;,&quot;icon&quot;:&quot;catalog-checkmark&quot;,&quot;avatar&quot;:null,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;entity_id&quot;:null,&quot;link&quot;:&quot;/explore/catalog&quot;,&quot;is_active&quot;:false,&quot;pill_count&quot;:null,&quot;items&quot;:[],&quot;separated&quot;:false},{&quot;id&quot;:&quot;topics_menu&quot;,&quot;title&quot;:&quot;Topics&quot;,&quot;icon&quot;:&quot;labels&quot;,&quot;avatar&quot;:null,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;entity_id&quot;:null,&quot;link&quot;:&quot;/explore/projects/topics&quot;,&quot;is_active&quot;:false,&quot;pill_count&quot;:null,&quot;items&quot;:[],&quot;separated&quot;:false},{&quot;id&quot;:&quot;snippets_menu&quot;,&quot;title&quot;:&quot;Snippets&quot;,&quot;icon&quot;:&quot;snippet&quot;,&quot;avatar&quot;:null,&quot;avatar_shape&quot;:&quot;rect&quot;,&quot;entity_id&quot;:null,&quot;link&quot;:&quot;/explore/snippets&quot;,&quot;is_active&quot;:false,&quot;pill_count&quot;:null,&quot;items&quot;:[],&quot;separated&quot;:false}],&quot;current_context_header&quot;:&quot;Explore&quot;,&quot;support_path&quot;:&quot;https://wiki.debian.org/Salsa/Doc&quot;,&quot;docs_path&quot;:&quot;/help/docs&quot;,&quot;display_whats_new&quot;:false,&quot;show_version_check&quot;:null,&quot;search&quot;:{&quot;search_path&quot;:&quot;/search&quot;,&quot;issues_path&quot;:&quot;/dashboard/issues&quot;,&quot;mr_path&quot;:&quot;/dashboard/merge_requests&quot;,&quot;autocomplete_path&quot;:&quot;/search/autocomplete&quot;,&quot;settings_path&quot;:&quot;/search/settings&quot;,&quot;search_context&quot;:{&quot;for_snippets&quot;:null}},&quot;panel_type&quot;:null,&quot;shortcut_links&quot;:[{&quot;title&quot;:&quot;Snippets&quot;,&quot;href&quot;:&quot;/explore/snippets&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-snippets&quot;},{&quot;title&quot;:&quot;Groups&quot;,&quot;href&quot;:&quot;/explore/groups&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-groups&quot;},{&quot;title&quot;:&quot;Projects&quot;,&quot;href&quot;:&quot;/explore/projects/starred&quot;,&quot;css_class&quot;:&quot;dashboard-shortcuts-projects&quot;}],&quot;terms&quot;:null}"></aside> <div class="content-wrapper"> <div class="broadcast-wrapper"> </div> <div class="alert-wrapper alert-wrapper-top-space gl-flex gl-flex-col gl-gap-3 container-fluid container-limited"> <div class="gl-alert gl-alert-danger gl-alert-not-dismissible" role="alert"> <div class="gl-alert-icon-container"> <svg class="s16 gl-alert-icon gl-alert-icon-no-title" data-testid="error-icon"><use href="/assets/icons-236e3b687d786d9dfe4709143a94d4c53b8d5a1f235775401e5825148297fa84.svg#error"></use></svg> </div> <div class="gl-alert-content" role="alert"> <div class="gl-alert-body"> GitLab may not work properly, because you are using an outdated web browser. <br> Please install a <a target="_blank" rel="noopener noreferrer" href="/help/install/requirements.md#supported-web-browsers">supported web browser</a> for a better experience. </div> </div> </div> </div> <div class="top-bar-fixed container-fluid" data-testid="top-bar"> <div class="top-bar-container gl-flex gl-items-center gl-gap-2"> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-start"> <button class="gl-button btn btn-icon btn-md btn-default btn-default-tertiary js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3" aria-controls="super-sidebar" aria-expanded="false" aria-label="Primary navigation sidebar" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="sidebar-icon"><use href="/assets/icons-236e3b687d786d9dfe4709143a94d4c53b8d5a1f235775401e5825148297fa84.svg#sidebar"></use></svg> </button> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Help","item":"https://salsa.debian.org/help"},{"@type":"ListItem","position":2,"name":"Help","item":"https://salsa.debian.org/help/install/requirements"}]} </script> <div data-testid="breadcrumb-links" id="js-vue-page-breadcrumbs-wrapper"> <div data-breadcrumbs-json="[{&quot;text&quot;:&quot;Help&quot;,&quot;href&quot;:&quot;/help&quot;,&quot;avatarPath&quot;:null},{&quot;text&quot;:&quot;Help&quot;,&quot;href&quot;:&quot;/help/install/requirements&quot;,&quot;avatarPath&quot;:null}]" id="js-vue-page-breadcrumbs"></div> <div id="js-injected-page-breadcrumbs"></div> </div> </div> <div class="gl-flex-none gl-flex gl-items-center gl-justify-center"> <div id="js-advanced-search-modal"></div> </div> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-end"> <div id="js-work-item-feedback"></div> </div> </div> </div> <div class="container-fluid container-limited limit-container-width"> <main class="content" id="content-body"> <div class="flash-container flash-container-page sticky" data-testid="flash-container"> <div id="js-global-alerts"></div> </div> <div class="md gl-text-lg gl-mt-3"> <h1 data-sourcepos="1:1-1:34" dir="auto">&#x000A;<a href="#gitlab-installation-requirements" aria-hidden="true" class="anchor" id="user-content-gitlab-installation-requirements"></a>GitLab installation requirements</h1>&#x000A;<p data-sourcepos="3:1-5:26" dir="auto">DETAILS:&#x000A;<strong data-sourcepos="4:1-4:9">Tier:</strong> Free, Premium, Ultimate&#x000A;<strong data-sourcepos="5:1-5:13">Offering:</strong> Self-managed</p>&#x000A;<p data-sourcepos="7:1-7:79" dir="auto">This page contains information about the system requirements to install GitLab.</p>&#x000A;<h2 data-sourcepos="9:1-9:10" dir="auto">&#x000A;<a href="#storage" aria-hidden="true" class="anchor" id="user-content-storage"></a>Storage</h2>&#x000A;<p data-sourcepos="11:1-12:94" dir="auto">The necessary storage space largely depends on the size of the repositories you want to have in GitLab.&#x000A;As a guideline, you should have at least as much free space as all your repositories combined.</p>&#x000A;<p data-sourcepos="14:1-16:101" dir="auto">The Linux package requires about 2.5 GB of storage space for installation.&#x000A;For storage flexibility, consider mounting your hard drive through logical volume management.&#x000A;You should have a hard drive with at least 7,200 RPM or a solid-state drive to reduce response times.</p>&#x000A;<p data-sourcepos="18:1-19:114" dir="auto">Because file system performance might affect the overall performance of GitLab, you should&#x000A;<a data-sourcepos="19:1-19:113" href="../administration/nfs.md#avoid-using-cloud-based-file-systems">avoid using cloud-based file systems for storage</a>.</p>&#x000A;<h2 data-sourcepos="21:1-21:6" dir="auto">&#x000A;<a href="#cpu" aria-hidden="true" class="anchor" id="user-content-cpu"></a>CPU</h2>&#x000A;<p data-sourcepos="23:1-24:97" dir="auto">CPU requirements depend on the number of users and expected workload.&#x000A;The workload includes your users' activity, use of automation and mirroring, and repository size.</p>&#x000A;<p data-sourcepos="26:1-28:82" dir="auto">For a maximum of 20 requests per second or 1,000 users, you should have 8 vCPU.&#x000A;For more users or higher workload,&#x000A;see <a data-sourcepos="28:5-28:81" href="../administration/reference_architectures/index.md">reference architectures</a>.</p>&#x000A;<h2 data-sourcepos="30:1-30:9" dir="auto">&#x000A;<a href="#memory" aria-hidden="true" class="anchor" id="user-content-memory"></a>Memory</h2>&#x000A;<p data-sourcepos="32:1-33:97" dir="auto">Memory requirements depend on the number of users and expected workload.&#x000A;The workload includes your users' activity, use of automation and mirroring, and repository size.</p>&#x000A;<p data-sourcepos="35:1-37:82" dir="auto">For a maximum of 20 requests per second or 1,000 users, you should have 16 GB of memory.&#x000A;For more users or higher workload,&#x000A;see <a data-sourcepos="37:5-37:81" href="../administration/reference_architectures/index.md">reference architectures</a>.</p>&#x000A;<p data-sourcepos="39:1-41:124" dir="auto">In some cases, GitLab can run with at least 8 GB of memory.&#x000A;For more information, see&#x000A;<a data-sourcepos="41:1-41:123" href="https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html" rel="nofollow noreferrer noopener" target="_blank">running GitLab in a memory-constrained environment</a>.</p>&#x000A;<h2 data-sourcepos="43:1-43:13" dir="auto">&#x000A;<a href="#postgresql" aria-hidden="true" class="anchor" id="user-content-postgresql"></a>PostgreSQL</h2>&#x000A;<p data-sourcepos="45:1-46:166" dir="auto"><a data-sourcepos="45:1-45:41" href="https://www.postgresql.org/" rel="nofollow noreferrer noopener" target="_blank">PostgreSQL</a> is the only supported database and is bundled with the Linux package.&#x000A;You can also use an <a data-sourcepos="46:21-46:165" href="https://docs.gitlab.com/omnibus/settings/database.html#using-a-non-packaged-postgresql-database-management-server" rel="nofollow noreferrer noopener" target="_blank">external PostgreSQL database</a>.</p>&#x000A;<p data-sourcepos="48:1-49:34" dir="auto">Depending on the <a data-sourcepos="48:18-48:86" href="../administration/reference_architectures/index.md">number of users</a>,&#x000A;the PostgreSQL server should have:</p>&#x000A;<ul data-sourcepos="51:1-54:0" dir="auto">&#x000A;<li data-sourcepos="51:1-51:59">For most GitLab instances, at least 5 to 10 GB of storage</li>&#x000A;<li data-sourcepos="52:1-54:0">For GitLab Ultimate, at least 12 GB of storage&#x000A;(1 GB of vulnerability data must be imported)</li>&#x000A;</ul>&#x000A;<p data-sourcepos="55:1-55:68" dir="auto">For the following versions of GitLab, use these PostgreSQL versions:</p>&#x000A;<table data-sourcepos="57:1-61:159" dir="auto">&#x000A;<thead>&#x000A;<tr data-sourcepos="57:1-57:76">&#x000A;<th data-sourcepos="57:2-57:17">GitLab version</th>&#x000A;<th data-sourcepos="57:19-57:46">Minimum PostgreSQL version</th>&#x000A;<th data-sourcepos="57:48-57:75">Maximum PostgreSQL version</th>&#x000A;</tr>&#x000A;</thead>&#x000A;<tbody>&#x000A;<tr data-sourcepos="59:1-59:76">&#x000A;<td data-sourcepos="59:2-59:17">17.x</td>&#x000A;<td data-sourcepos="59:19-59:46">14.9</td>&#x000A;<td data-sourcepos="59:48-59:75">15.x</td>&#x000A;</tr>&#x000A;<tr data-sourcepos="60:1-60:157">&#x000A;<td data-sourcepos="60:2-60:17">16.x</td>&#x000A;<td data-sourcepos="60:19-60:46">13.6</td>&#x000A;<td data-sourcepos="60:48-60:156">15.x (<a data-sourcepos="60:55-60:154" href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119344" rel="nofollow noreferrer noopener" target="_blank">tested against GitLab 16.1 and later</a>)</td>&#x000A;</tr>&#x000A;<tr data-sourcepos="61:1-61:159">&#x000A;<td data-sourcepos="61:2-61:17">15.x</td>&#x000A;<td data-sourcepos="61:19-61:46">12.10</td>&#x000A;<td data-sourcepos="61:48-61:158">14.x (<a data-sourcepos="61:55-61:150" href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114624" rel="nofollow noreferrer noopener" target="_blank">tested against GitLab 15.11 only</a>), 13.x</td>&#x000A;</tr>&#x000A;</tbody>&#x000A;</table>&#x000A;<p data-sourcepos="63:1-65:95" dir="auto">Minor PostgreSQL releases <a data-sourcepos="63:27-63:111" href="https://www.postgresql.org/support/versioning/" rel="nofollow noreferrer noopener" target="_blank">include only bug and security fixes</a>.&#x000A;Always use the latest minor version to avoid known issues in PostgreSQL.&#x000A;For more information, see <a data-sourcepos="65:27-65:94" href="https://gitlab.com/gitlab-org/gitlab/-/issues/364763" rel="nofollow noreferrer noopener" target="_blank">issue 364763</a>.</p>&#x000A;<p data-sourcepos="67:1-68:108" dir="auto">To use a later major version of PostgreSQL than specified, check if a&#x000A;<a data-sourcepos="68:1-68:107" href="http://gitlab-org.gitlab.io/omnibus-gitlab/licenses.html" rel="nofollow noreferrer noopener" target="_blank">later version is bundled with the Linux package</a>.</p>&#x000A;<p data-sourcepos="70:1-71:85" dir="auto">You must also ensure some extensions are loaded into every GitLab database.&#x000A;For more information, see <a data-sourcepos="71:27-71:84" href="postgresql_extensions.md">managing PostgreSQL extensions</a>.</p>&#x000A;<h3 data-sourcepos="73:1-73:14" dir="auto">&#x000A;<a href="#gitlab-geo" aria-hidden="true" class="anchor" id="user-content-gitlab-geo"></a>GitLab Geo</h3>&#x000A;<p data-sourcepos="75:1-78:62" dir="auto">For <a data-sourcepos="75:5-75:48" href="../administration/geo/index.md">GitLab Geo</a>, you should use the Linux package or&#x000A;<a data-sourcepos="76:1-76:120" href="../administration/reference_architectures/index.md#recommended-cloud-providers-and-services">validated cloud providers</a>&#x000A;to install GitLab.&#x000A;Compatibility with other external databases is not guaranteed.</p>&#x000A;<p data-sourcepos="80:1-80:118" dir="auto">For more information, see <a data-sourcepos="80:27-80:117" href="../administration/geo/index.md#requirements-for-running-geo">requirements for running Geo</a>.</p>&#x000A;<h3 data-sourcepos="82:1-82:24" dir="auto">&#x000A;<a href="#locale-compatibility" aria-hidden="true" class="anchor" id="user-content-locale-compatibility"></a>Locale compatibility</h3>&#x000A;<p data-sourcepos="84:1-88:9" dir="auto">When you change locale data in <code data-sourcepos="84:33-84:37">glibc</code>, PostgreSQL database files are&#x000A;no longer fully compatible between different operating systems.&#x000A;To avoid index corruption,&#x000A;<a data-sourcepos="87:1-87:128" href="../administration/geo/replication/troubleshooting/common.md#check-os-locale-data-compatibility">check for locale compatibility</a>&#x000A;when you:</p>&#x000A;<ul data-sourcepos="90:1-93:0" dir="auto">&#x000A;<li data-sourcepos="90:1-90:46">Move binary PostgreSQL data between servers.</li>&#x000A;<li data-sourcepos="91:1-91:34">Upgrade your Linux distribution.</li>&#x000A;<li data-sourcepos="92:1-93:0">Update or change third-party container images.</li>&#x000A;</ul>&#x000A;<p data-sourcepos="94:1-94:117" dir="auto">For more information, see <a data-sourcepos="94:27-94:116" href="../administration/postgresql/upgrading_os.md">upgrading operating systems for PostgreSQL</a>.</p>&#x000A;<h3 data-sourcepos="96:1-96:18" dir="auto">&#x000A;<a href="#gitlab-schemas" aria-hidden="true" class="anchor" id="user-content-gitlab-schemas"></a>GitLab schemas</h3>&#x000A;<p data-sourcepos="98:1-100:94" dir="auto">You should create or use databases exclusively for GitLab, <a data-sourcepos="98:60-98:96" href="../administration/geo/index.md">Geo</a>,&#x000A;<a data-sourcepos="99:1-99:54" href="../administration/gitaly/praefect.md">Gitaly Cluster</a>, or other components.&#x000A;Do not create or modify databases, schemas, users, or other properties except when you follow:</p>&#x000A;<ul data-sourcepos="102:1-104:0" dir="auto">&#x000A;<li data-sourcepos="102:1-102:40">Procedures in the GitLab documentation</li>&#x000A;<li data-sourcepos="103:1-104:0">The directions of GitLab Support or engineers</li>&#x000A;</ul>&#x000A;<p data-sourcepos="105:1-105:47" dir="auto">The main GitLab application uses three schemas:</p>&#x000A;<ul data-sourcepos="107:1-110:0" dir="auto">&#x000A;<li data-sourcepos="107:1-107:29">The default <code data-sourcepos="107:16-107:21">public</code> schema</li>&#x000A;<li data-sourcepos="108:1-108:52">&#x000A;<code data-sourcepos="108:4-108:27">gitlab_partitions_static</code> (created automatically)</li>&#x000A;<li data-sourcepos="109:1-110:0">&#x000A;<code data-sourcepos="109:4-109:28">gitlab_partitions_dynamic</code> (created automatically)</li>&#x000A;</ul>&#x000A;<p data-sourcepos="111:1-113:75" dir="auto">During Rails database migrations, GitLab might create or modify schemas or tables.&#x000A;Database migrations are tested against the schema definition in the GitLab codebase.&#x000A;If you modify any schema, <a data-sourcepos="113:27-113:63" href="../update/index.md">GitLab upgrades</a> might fail.</p>&#x000A;<h2 data-sourcepos="115:1-115:7" dir="auto">&#x000A;<a href="#puma" aria-hidden="true" class="anchor" id="user-content-puma"></a>Puma</h2>&#x000A;<p data-sourcepos="117:1-118:60" dir="auto">The recommended <a data-sourcepos="117:17-117:40" href="https://puma.io/" rel="nofollow noreferrer noopener" target="_blank">Puma</a> settings depend on your <a data-sourcepos="117:66-117:99" href="install_methods.md">installation</a>.&#x000A;By default, the Linux package uses the recommended settings.</p>&#x000A;<p data-sourcepos="120:1-120:24" dir="auto">To adjust Puma settings:</p>&#x000A;<ul data-sourcepos="122:1-125:0" dir="auto">&#x000A;<li data-sourcepos="122:1-122:83">For the Linux package, see <a data-sourcepos="122:30-122:82" href="../administration/operations/puma.md">Puma settings</a>.</li>&#x000A;<li data-sourcepos="123:1-125:0">For the GitLab Helm chart, see the&#x000A;<a data-sourcepos="124:3-124:90" href="https://docs.gitlab.com/charts/charts/gitlab/webservice/index.html" rel="nofollow noreferrer noopener" target="_blank"><code data-sourcepos="124:5-124:14">webservice</code> chart</a>.</li>&#x000A;</ul>&#x000A;<h3 data-sourcepos="126:1-126:11" dir="auto">&#x000A;<a href="#workers" aria-hidden="true" class="anchor" id="user-content-workers"></a>Workers</h3>&#x000A;<p data-sourcepos="128:1-131:146" dir="auto">The recommended number of Puma workers largely depends on CPU and memory capacity.&#x000A;By default, the Linux package uses the recommended number of workers.&#x000A;For more information about how this number is calculated,&#x000A;see <a data-sourcepos="131:5-131:145" href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/master/files/gitlab-cookbooks/gitlab/libraries/puma.rb?ref_type=heads#L46-69" rel="nofollow noreferrer noopener" target="_blank"><code data-sourcepos="131:7-131:13">puma.rb</code></a>.</p>&#x000A;<p data-sourcepos="133:1-134:32" dir="auto">A node must never have fewer than two Puma workers.&#x000A;For example, a node should have:</p>&#x000A;<ul data-sourcepos="136:1-141:0" dir="auto">&#x000A;<li data-sourcepos="136:1-136:48">Two workers for 2 CPU cores and 8 GB of memory</li>&#x000A;<li data-sourcepos="137:1-137:48">Two workers for 4 CPU cores and 4 GB of memory</li>&#x000A;<li data-sourcepos="138:1-138:49">Four workers for 4 CPU cores and 8 GB of memory</li>&#x000A;<li data-sourcepos="139:1-139:48">Six workers for 8 CPU cores and 8 GB of memory</li>&#x000A;<li data-sourcepos="140:1-141:0">Eight workers for 8 CPU cores and 16 GB of memory</li>&#x000A;</ul>&#x000A;<p data-sourcepos="142:1-143:115" dir="auto">By default, each Puma worker is limited to 1.2 GB of memory.&#x000A;You can <a data-sourcepos="143:9-143:87" href="../administration/operations/puma.md#reducing-memory-use">adjust this setting</a> in <code data-sourcepos="143:93-143:113">/etc/gitlab/gitlab.rb</code>.</p>&#x000A;<p data-sourcepos="145:1-147:94" dir="auto">You can also increase the number of Puma workers, provided enough CPU and memory capacity is available.&#x000A;More workers would reduce response times and improve the ability to handle parallel requests.&#x000A;Run tests to verify the optimal number of workers for your <a data-sourcepos="147:60-147:93" href="install_methods.md">installation</a>.</p>&#x000A;<h3 data-sourcepos="149:1-149:11" dir="auto">&#x000A;<a href="#threads" aria-hidden="true" class="anchor" id="user-content-threads"></a>Threads</h3>&#x000A;<p data-sourcepos="151:1-152:18" dir="auto">The recommended number of Puma threads depends on total system memory.&#x000A;A node should use:</p>&#x000A;<ul data-sourcepos="154:1-156:0" dir="auto">&#x000A;<li data-sourcepos="154:1-154:69">One thread for an operating system with a maximum of 2 GB of memory</li>&#x000A;<li data-sourcepos="155:1-156:0">Four threads for an operating system with more than 2 GB of memory</li>&#x000A;</ul>&#x000A;<p data-sourcepos="157:1-157:68" dir="auto">More threads would lead to excessive swapping and lower performance.</p>&#x000A;<h2 data-sourcepos="159:1-159:8" dir="auto">&#x000A;<a href="#redis" aria-hidden="true" class="anchor" id="user-content-redis"></a>Redis</h2>&#x000A;<p data-sourcepos="161:1-162:45" dir="auto"><a data-sourcepos="161:1-161:26" href="https://redis.io/" rel="nofollow noreferrer noopener" target="_blank">Redis</a> stores all user sessions and background tasks&#x000A;and requires about 25 kB per user on average.</p>&#x000A;<p data-sourcepos="164:1-166:103" dir="auto">In GitLab 16.0 and later, Redis 6.x or 7.x is required.&#x000A;For more information about end-of-life dates, see the&#x000A;<a data-sourcepos="166:1-166:102" href="https://redis.io/docs/latest/operate/rs/installing-upgrading/product-lifecycle/" rel="nofollow noreferrer noopener" target="_blank">Redis documentation</a>.</p>&#x000A;<p data-sourcepos="168:1-168:10" dir="auto">For Redis:</p>&#x000A;<ul data-sourcepos="170:1-173:0" dir="auto">&#x000A;<li data-sourcepos="170:1-171:33">Use a standalone instance (with or without high availability).&#x000A;Redis Cluster is not supported.</li>&#x000A;<li data-sourcepos="172:1-173:0">Set the <a data-sourcepos="172:11-172:117" href="../administration/redis/replication_and_failover_external.md#setting-the-eviction-policy">eviction policy</a> as appropriate.</li>&#x000A;</ul>&#x000A;<h2 data-sourcepos="174:1-174:10" dir="auto">&#x000A;<a href="#sidekiq" aria-hidden="true" class="anchor" id="user-content-sidekiq"></a>Sidekiq</h2>&#x000A;<p data-sourcepos="176:1-178:45" dir="auto"><a data-sourcepos="176:1-176:31" href="https://sidekiq.org/" rel="nofollow noreferrer noopener" target="_blank">Sidekiq</a> uses a multi-threaded process for background jobs.&#x000A;This process initially consumes more than 200 MB of memory&#x000A;and might grow over time due to memory leaks.</p>&#x000A;<p data-sourcepos="180:1-181:59" dir="auto">On a very active server with more than 10,000 billable users,&#x000A;the Sidekiq process might consume more than 1 GB of memory.</p>&#x000A;<h2 data-sourcepos="183:1-183:13" dir="auto">&#x000A;<a href="#prometheus" aria-hidden="true" class="anchor" id="user-content-prometheus"></a>Prometheus</h2>&#x000A;<p data-sourcepos="185:1-186:55" dir="auto">By default, <a data-sourcepos="185:13-185:47" href="https://prometheus.io" rel="nofollow noreferrer noopener" target="_blank">Prometheus</a> and its related exporters are enabled to monitor GitLab.&#x000A;These processes consume approximately 200 MB of memory.</p>&#x000A;<p data-sourcepos="188:1-189:86" dir="auto">For more information, see&#x000A;<a data-sourcepos="189:1-189:85" href="../administration/monitoring/prometheus/index.md">monitoring GitLab with Prometheus</a>.</p>&#x000A;<h2 data-sourcepos="191:1-191:25" dir="auto">&#x000A;<a href="#supported-web-browsers" aria-hidden="true" class="anchor" id="user-content-supported-web-browsers"></a>Supported web browsers</h2>&#x000A;<p data-sourcepos="193:1-193:43" dir="auto">GitLab supports the following web browsers:</p>&#x000A;<ul data-sourcepos="195:1-200:0" dir="auto">&#x000A;<li data-sourcepos="195:1-195:63"><a data-sourcepos="195:3-195:63" href="https://www.mozilla.org/en-US/firefox/new/" rel="nofollow noreferrer noopener" target="_blank">Mozilla Firefox</a></li>&#x000A;<li data-sourcepos="196:1-196:49"><a data-sourcepos="196:3-196:49" href="https://www.google.com/chrome/" rel="nofollow noreferrer noopener" target="_blank">Google Chrome</a></li>&#x000A;<li data-sourcepos="197:1-197:68"><a data-sourcepos="197:3-197:68" href="https://www.chromium.org/getting-involved/dev-channel/" rel="nofollow noreferrer noopener" target="_blank">Chromium</a></li>&#x000A;<li data-sourcepos="198:1-198:47"><a data-sourcepos="198:3-198:47" href="https://www.apple.com/safari/" rel="nofollow noreferrer noopener" target="_blank">Apple Safari</a></li>&#x000A;<li data-sourcepos="199:1-200:0"><a data-sourcepos="199:3-199:68" href="https://www.microsoft.com/en-us/edge?form=MA13QK" rel="nofollow noreferrer noopener" target="_blank">Microsoft Edge</a></li>&#x000A;</ul>&#x000A;<p data-sourcepos="201:1-201:16" dir="auto">GitLab supports:</p>&#x000A;<ul data-sourcepos="203:1-205:0" dir="auto">&#x000A;<li data-sourcepos="203:1-203:58">The current and earlier major versions of these browsers</li>&#x000A;<li data-sourcepos="204:1-205:0">The current minor version of a supported major version</li>&#x000A;</ul>&#x000A;<p data-sourcepos="206:1-206:75" dir="auto">Running GitLab with JavaScript disabled in these browsers is not supported.</p>&#x000A;<h2 data-sourcepos="208:1-208:17" dir="auto">&#x000A;<a href="#related-topics" aria-hidden="true" class="anchor" id="user-content-related-topics"></a>Related topics</h2>&#x000A;<ul data-sourcepos="210:1-211:50" dir="auto">&#x000A;<li data-sourcepos="210:1-210:66"><a data-sourcepos="210:3-210:66" href="https://docs.gitlab.com/runner/install/" rel="nofollow noreferrer noopener" target="_blank">Install GitLab Runner</a></li>&#x000A;<li data-sourcepos="211:1-211:50"><a data-sourcepos="211:3-211:50" href="../security/index.md">Secure your installation</a></li>&#x000A;</ul> </div> </main> </div> </div> </div> <script nonce="S59wNFRd/65l1xw/kKqM0A=="> //<![CDATA[ if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img.lazy').forEach(img => { img.loading = 'lazy'; let imgUrl = img.dataset.src; // Only adding width + height for avatars for now if (imgUrl.indexOf('/avatar/') > -1 && imgUrl.indexOf('?') === -1) { const targetWidth = img.getAttribute('width') || img.width; imgUrl += `?width=${targetWidth}`; } img.src = imgUrl; img.removeAttribute('data-src'); img.classList.remove('lazy'); img.classList.add('js-lazy-loaded'); img.dataset.testid = 'js-lazy-loaded-content'; }); } //]]> </script> <script nonce="S59wNFRd/65l1xw/kKqM0A=="> //<![CDATA[ gl = window.gl || {}; gl.experiments = {}; //]]> </script> </body> </html>

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