FossilRepo

Source Blame History 1108 lines
2eca4eb… ragelink 1
2eca4eb… ragelink 2 <!doctype html>
2eca4eb… ragelink 3 <html lang="en" class="no-js">
2eca4eb… ragelink 4 <head>
2eca4eb… ragelink 5
2eca4eb… ragelink 6 <meta charset="utf-8">
2eca4eb… ragelink 7 <meta name="viewport" content="width=device-width,initial-scale=1">
2eca4eb… ragelink 8
2eca4eb… ragelink 9 <meta name="description" content="Self-hosted Fossil forge -- omnibus installer for production Fossil SCM hosting">
2eca4eb… ragelink 10
2eca4eb… ragelink 11
2eca4eb… ragelink 12 <meta name="author" content="CONFLICT LLC">
2eca4eb… ragelink 13
2eca4eb… ragelink 14
2eca4eb… ragelink 15 <link rel="canonical" href="https://fossilrepo.dev/getting-started/prerequisites/">
2eca4eb… ragelink 16
2eca4eb… ragelink 17
2eca4eb… ragelink 18 <link rel="prev" href="../..">
2eca4eb… ragelink 19
2eca4eb… ragelink 20
2eca4eb… ragelink 21 <link rel="next" href="../installation/">
2eca4eb… ragelink 22
2eca4eb… ragelink 23
2eca4eb… ragelink 24
2eca4eb… ragelink 25
2eca4eb… ragelink 26
2eca4eb… ragelink 27 <link rel="icon" href="../../assets/images/favicon.png">
2eca4eb… ragelink 28 <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
2eca4eb… ragelink 29
2eca4eb… ragelink 30
2eca4eb… ragelink 31
2eca4eb… ragelink 32 <title>Prerequisites - Fossilrepo</title>
2eca4eb… ragelink 33
2eca4eb… ragelink 34
2eca4eb… ragelink 35
2eca4eb… ragelink 36 <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
2eca4eb… ragelink 37
2eca4eb… ragelink 38
2eca4eb… ragelink 39 <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
2eca4eb… ragelink 40
2eca4eb… ragelink 41
2eca4eb… ragelink 42
2eca4eb… ragelink 43
2eca4eb… ragelink 44
2eca4eb… ragelink 45
2eca4eb… ragelink 46
2eca4eb… ragelink 47
2eca4eb… ragelink 48
2eca4eb… ragelink 49
2eca4eb… ragelink 50
2eca4eb… ragelink 51
2eca4eb… ragelink 52 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
2eca4eb… ragelink 53 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
2eca4eb… ragelink 54 <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
2eca4eb… ragelink 55
2eca4eb… ragelink 56
2eca4eb… ragelink 57
2eca4eb… ragelink 58 <link rel="stylesheet" href="../../assets/css/custom.css">
2eca4eb… ragelink 59
2eca4eb… ragelink 60 <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
2eca4eb… ragelink 61
2eca4eb… ragelink 62
2eca4eb… ragelink 63
2eca4eb… ragelink 64
2eca4eb… ragelink 65
2eca4eb… ragelink 66 </head>
2eca4eb… ragelink 67
2eca4eb… ragelink 68
2eca4eb… ragelink 69
2eca4eb… ragelink 70
2eca4eb… ragelink 71
2eca4eb… ragelink 72
2eca4eb… ragelink 73
2eca4eb… ragelink 74
2eca4eb… ragelink 75
2eca4eb… ragelink 76 <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
2eca4eb… ragelink 77
2eca4eb… ragelink 78
2eca4eb… ragelink 79 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
2eca4eb… ragelink 80 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
2eca4eb… ragelink 81 <label class="md-overlay" for="__drawer"></label>
2eca4eb… ragelink 82 <div data-md-component="skip">
2eca4eb… ragelink 83
2eca4eb… ragelink 84
2eca4eb… ragelink 85 <a href="#prerequisites" class="md-skip">
2eca4eb… ragelink 86 Skip to content
2eca4eb… ragelink 87 </a>
2eca4eb… ragelink 88
2eca4eb… ragelink 89 </div>
2eca4eb… ragelink 90 <div data-md-component="announce">
2eca4eb… ragelink 91
2eca4eb… ragelink 92 </div>
2eca4eb… ragelink 93
2eca4eb… ragelink 94
2eca4eb… ragelink 95
2eca4eb… ragelink 96
2eca4eb… ragelink 97 <header class="md-header" data-md-component="header">
2eca4eb… ragelink 98 <nav class="md-header__inner md-grid" aria-label="Header">
2eca4eb… ragelink 99 <a href="../.." title="Fossilrepo" class="md-header__button md-logo" aria-label="Fossilrepo" data-md-component="logo">
2eca4eb… ragelink 100 <div style="display: flex; align-items: center; gap: 0.6rem;">
2eca4eb… ragelink 101 <img src="../../assets/images/conflict-logo.svg" alt="CONFLICT" style="height: 1.4rem; width: auto;">
2eca4eb… ragelink 102 <img src="../../assets/images/fossilrepo-logo.svg" alt="Fossilrepo" style="height: 1.2rem; width: auto;">
2eca4eb… ragelink 103 </div>
2eca4eb… ragelink 104 </a>
2eca4eb… ragelink 105 <label class="md-header__button md-icon" for="__drawer">
2eca4eb… ragelink 106
2eca4eb… ragelink 107 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
2eca4eb… ragelink 108 </label>
2eca4eb… ragelink 109 <div class="md-header__title" data-md-component="header-title">
2eca4eb… ragelink 110 <div class="md-header__ellipsis">
2eca4eb… ragelink 111 <div class="md-header__topic">
2eca4eb… ragelink 112 <span class="md-ellipsis">
2eca4eb… ragelink 113 Fossilrepo
2eca4eb… ragelink 114 </span>
2eca4eb… ragelink 115 </div>
2eca4eb… ragelink 116 <div class="md-header__topic" data-md-component="header-topic">
2eca4eb… ragelink 117 <span class="md-ellipsis">
2eca4eb… ragelink 118
2eca4eb… ragelink 119 Prerequisites
2eca4eb… ragelink 120
2eca4eb… ragelink 121 </span>
2eca4eb… ragelink 122 </div>
2eca4eb… ragelink 123 </div>
2eca4eb… ragelink 124 </div>
2eca4eb… ragelink 125
2eca4eb… ragelink 126
2eca4eb… ragelink 127 <form class="md-header__option" data-md-component="palette">
2eca4eb… ragelink 128
2eca4eb… ragelink 129
2eca4eb… ragelink 130
2eca4eb… ragelink 131
2eca4eb… ragelink 132 <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
2eca4eb… ragelink 133
2eca4eb… ragelink 134 <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
2eca4eb… ragelink 135 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
2eca4eb… ragelink 136 </label>
2eca4eb… ragelink 137
2eca4eb… ragelink 138
2eca4eb… ragelink 139
2eca4eb… ragelink 140
2eca4eb… ragelink 141
2eca4eb… ragelink 142 <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
2eca4eb… ragelink 143
2eca4eb… ragelink 144 <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
2eca4eb… ragelink 145 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
2eca4eb… ragelink 146 </label>
2eca4eb… ragelink 147
2eca4eb… ragelink 148
2eca4eb… ragelink 149 </form>
2eca4eb… ragelink 150
2eca4eb… ragelink 151
2eca4eb… ragelink 152
2eca4eb… ragelink 153 <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
2eca4eb… ragelink 154
2eca4eb… ragelink 155
2eca4eb… ragelink 156
2eca4eb… ragelink 157
2eca4eb… ragelink 158
2eca4eb… ragelink 159 <label class="md-header__button md-icon" for="__search">
2eca4eb… ragelink 160
2eca4eb… ragelink 161 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
2eca4eb… ragelink 162 </label>
2eca4eb… ragelink 163 <div class="md-search" data-md-component="search" role="dialog">
2eca4eb… ragelink 164 <label class="md-search__overlay" for="__search"></label>
2eca4eb… ragelink 165 <div class="md-search__inner" role="search">
2eca4eb… ragelink 166 <form class="md-search__form" name="search">
2eca4eb… ragelink 167 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
2eca4eb… ragelink 168 <label class="md-search__icon md-icon" for="__search">
2eca4eb… ragelink 169
2eca4eb… ragelink 170 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
2eca4eb… ragelink 171
2eca4eb… ragelink 172 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
2eca4eb… ragelink 173 </label>
2eca4eb… ragelink 174 <nav class="md-search__options" aria-label="Search">
2eca4eb… ragelink 175
2eca4eb… ragelink 176 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
2eca4eb… ragelink 177
2eca4eb… ragelink 178 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
2eca4eb… ragelink 179 </button>
2eca4eb… ragelink 180 </nav>
2eca4eb… ragelink 181
2eca4eb… ragelink 182 <div class="md-search__suggest" data-md-component="search-suggest"></div>
2eca4eb… ragelink 183
2eca4eb… ragelink 184 </form>
2eca4eb… ragelink 185 <div class="md-search__output">
2eca4eb… ragelink 186 <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
2eca4eb… ragelink 187 <div class="md-search-result" data-md-component="search-result">
2eca4eb… ragelink 188 <div class="md-search-result__meta">
2eca4eb… ragelink 189 Initializing search
2eca4eb… ragelink 190 </div>
2eca4eb… ragelink 191 <ol class="md-search-result__list" role="presentation"></ol>
2eca4eb… ragelink 192 </div>
2eca4eb… ragelink 193 </div>
2eca4eb… ragelink 194 </div>
2eca4eb… ragelink 195 </div>
2eca4eb… ragelink 196 </div>
2eca4eb… ragelink 197
2eca4eb… ragelink 198
2eca4eb… ragelink 199
2eca4eb… ragelink 200 <div class="md-header__source">
2eca4eb… ragelink 201 <a href="https://github.com/ConflictHQ/fossilrepo" title="Go to repository" class="md-source" data-md-component="source">
2eca4eb… ragelink 202 <div class="md-source__icon md-icon">
2eca4eb… ragelink 203
2eca4eb… ragelink 204 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 205 </div>
2eca4eb… ragelink 206 <div class="md-source__repository">
2eca4eb… ragelink 207 ConflictHQ/fossilrepo
2eca4eb… ragelink 208 </div>
2eca4eb… ragelink 209 </a>
2eca4eb… ragelink 210 </div>
2eca4eb… ragelink 211
2eca4eb… ragelink 212 </nav>
2eca4eb… ragelink 213
2eca4eb… ragelink 214 </header>
2eca4eb… ragelink 215
2eca4eb… ragelink 216 <div class="md-container" data-md-component="container">
2eca4eb… ragelink 217
2eca4eb… ragelink 218
2eca4eb… ragelink 219
2eca4eb… ragelink 220
2eca4eb… ragelink 221
2eca4eb… ragelink 222 <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
2eca4eb… ragelink 223 <div class="md-grid">
2eca4eb… ragelink 224 <ul class="md-tabs__list">
2eca4eb… ragelink 225
2eca4eb… ragelink 226
2eca4eb… ragelink 227
2eca4eb… ragelink 228
2eca4eb… ragelink 229
2eca4eb… ragelink 230
2eca4eb… ragelink 231 <li class="md-tabs__item">
2eca4eb… ragelink 232 <a href="../.." class="md-tabs__link">
2eca4eb… ragelink 233
2eca4eb… ragelink 234
2eca4eb… ragelink 235
2eca4eb… ragelink 236
2eca4eb… ragelink 237
2eca4eb… ragelink 238 Home
2eca4eb… ragelink 239
2eca4eb… ragelink 240 </a>
2eca4eb… ragelink 241 </li>
2eca4eb… ragelink 242
2eca4eb… ragelink 243
2eca4eb… ragelink 244
2eca4eb… ragelink 245
2eca4eb… ragelink 246
2eca4eb… ragelink 247
2eca4eb… ragelink 248
2eca4eb… ragelink 249
2eca4eb… ragelink 250
2eca4eb… ragelink 251
2eca4eb… ragelink 252
2eca4eb… ragelink 253
2eca4eb… ragelink 254 <li class="md-tabs__item md-tabs__item--active">
2eca4eb… ragelink 255 <a href="./" class="md-tabs__link">
2eca4eb… ragelink 256
2eca4eb… ragelink 257
2eca4eb… ragelink 258
2eca4eb… ragelink 259 Getting Started
2eca4eb… ragelink 260
2eca4eb… ragelink 261 </a>
2eca4eb… ragelink 262 </li>
2eca4eb… ragelink 263
2eca4eb… ragelink 264
2eca4eb… ragelink 265
2eca4eb… ragelink 266
2eca4eb… ragelink 267
2eca4eb… ragelink 268
2eca4eb… ragelink 269
2eca4eb… ragelink 270
2eca4eb… ragelink 271
2eca4eb… ragelink 272
2eca4eb… ragelink 273
2eca4eb… ragelink 274 <li class="md-tabs__item">
2eca4eb… ragelink 275 <a href="../../architecture/overview/" class="md-tabs__link">
2eca4eb… ragelink 276
2eca4eb… ragelink 277
2eca4eb… ragelink 278
2eca4eb… ragelink 279 Architecture
2eca4eb… ragelink 280
2eca4eb… ragelink 281 </a>
2eca4eb… ragelink 282 </li>
2eca4eb… ragelink 283
2eca4eb… ragelink 284
2eca4eb… ragelink 285
2eca4eb… ragelink 286
2eca4eb… ragelink 287 </ul>
2eca4eb… ragelink 288 </div>
2eca4eb… ragelink 289 </nav>
2eca4eb… ragelink 290
2eca4eb… ragelink 291
2eca4eb… ragelink 292
2eca4eb… ragelink 293 <main class="md-main" data-md-component="main">
2eca4eb… ragelink 294 <div class="md-main__inner md-grid">
2eca4eb… ragelink 295
2eca4eb… ragelink 296
2eca4eb… ragelink 297
2eca4eb… ragelink 298 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
2eca4eb… ragelink 299 <div class="md-sidebar__scrollwrap">
2eca4eb… ragelink 300 <div class="md-sidebar__inner">
2eca4eb… ragelink 301
2eca4eb… ragelink 302
2eca4eb… ragelink 303
2eca4eb… ragelink 304
2eca4eb… ragelink 305
2eca4eb… ragelink 306
2eca4eb… ragelink 307 <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
2eca4eb… ragelink 308 <label class="md-nav__title" for="__drawer">
2eca4eb… ragelink 309 <a href="../.." title="Fossilrepo" class="md-nav__button md-logo" aria-label="Fossilrepo" data-md-component="logo">
2eca4eb… ragelink 310 <div style="display: flex; align-items: center; gap: 0.6rem;">
2eca4eb… ragelink 311 <img src="../../assets/images/conflict-logo.svg" alt="CONFLICT" style="height: 1.4rem; width: auto;">
2eca4eb… ragelink 312 <img src="../../assets/images/fossilrepo-logo.svg" alt="Fossilrepo" style="height: 1.2rem; width: auto;">
2eca4eb… ragelink 313 </div>
2eca4eb… ragelink 314 </a>
2eca4eb… ragelink 315 Fossilrepo
2eca4eb… ragelink 316 </label>
2eca4eb… ragelink 317
2eca4eb… ragelink 318 <div class="md-nav__source">
2eca4eb… ragelink 319 <a href="https://github.com/ConflictHQ/fossilrepo" title="Go to repository" class="md-source" data-md-component="source">
2eca4eb… ragelink 320 <div class="md-source__icon md-icon">
2eca4eb… ragelink 321
2eca4eb… ragelink 322 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 323 </div>
2eca4eb… ragelink 324 <div class="md-source__repository">
2eca4eb… ragelink 325 ConflictHQ/fossilrepo
2eca4eb… ragelink 326 </div>
2eca4eb… ragelink 327 </a>
2eca4eb… ragelink 328 </div>
2eca4eb… ragelink 329
2eca4eb… ragelink 330 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 331
2eca4eb… ragelink 332
2eca4eb… ragelink 333
2eca4eb… ragelink 334
2eca4eb… ragelink 335
2eca4eb… ragelink 336
2eca4eb… ragelink 337
2eca4eb… ragelink 338 <li class="md-nav__item">
2eca4eb… ragelink 339 <a href="../.." class="md-nav__link">
2eca4eb… ragelink 340
2eca4eb… ragelink 341
2eca4eb… ragelink 342
2eca4eb… ragelink 343 <span class="md-ellipsis">
2eca4eb… ragelink 344
2eca4eb… ragelink 345
2eca4eb… ragelink 346 Home
2eca4eb… ragelink 347
2eca4eb… ragelink 348
2eca4eb… ragelink 349
2eca4eb… ragelink 350 </span>
2eca4eb… ragelink 351
2eca4eb… ragelink 352
2eca4eb… ragelink 353
2eca4eb… ragelink 354 </a>
2eca4eb… ragelink 355 </li>
2eca4eb… ragelink 356
2eca4eb… ragelink 357
2eca4eb… ragelink 358
2eca4eb… ragelink 359
2eca4eb… ragelink 360
2eca4eb… ragelink 361
2eca4eb… ragelink 362
2eca4eb… ragelink 363
2eca4eb… ragelink 364
2eca4eb… ragelink 365
2eca4eb… ragelink 366
2eca4eb… ragelink 367
2eca4eb… ragelink 368
2eca4eb… ragelink 369
2eca4eb… ragelink 370
2eca4eb… ragelink 371
2eca4eb… ragelink 372
2eca4eb… ragelink 373
2eca4eb… ragelink 374
2eca4eb… ragelink 375
2eca4eb… ragelink 376
2eca4eb… ragelink 377
2eca4eb… ragelink 378
2eca4eb… ragelink 379
2eca4eb… ragelink 380 <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
2eca4eb… ragelink 381
2eca4eb… ragelink 382
2eca4eb… ragelink 383
2eca4eb… ragelink 384 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
2eca4eb… ragelink 385
2eca4eb… ragelink 386
2eca4eb… ragelink 387 <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
2eca4eb… ragelink 388
2eca4eb… ragelink 389
2eca4eb… ragelink 390
2eca4eb… ragelink 391 <span class="md-ellipsis">
2eca4eb… ragelink 392
2eca4eb… ragelink 393
2eca4eb… ragelink 394 Getting Started
2eca4eb… ragelink 395
2eca4eb… ragelink 396
2eca4eb… ragelink 397
2eca4eb… ragelink 398 </span>
2eca4eb… ragelink 399
2eca4eb… ragelink 400
2eca4eb… ragelink 401
2eca4eb… ragelink 402 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 403 </label>
2eca4eb… ragelink 404
2eca4eb… ragelink 405 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
2eca4eb… ragelink 406 <label class="md-nav__title" for="__nav_2">
2eca4eb… ragelink 407 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 408
2eca4eb… ragelink 409
2eca4eb… ragelink 410 Getting Started
2eca4eb… ragelink 411
2eca4eb… ragelink 412
2eca4eb… ragelink 413 </label>
2eca4eb… ragelink 414 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 415
2eca4eb… ragelink 416
2eca4eb… ragelink 417
2eca4eb… ragelink 418
2eca4eb… ragelink 419
2eca4eb… ragelink 420
2eca4eb… ragelink 421
2eca4eb… ragelink 422
2eca4eb… ragelink 423
2eca4eb… ragelink 424 <li class="md-nav__item md-nav__item--active">
2eca4eb… ragelink 425
2eca4eb… ragelink 426 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
2eca4eb… ragelink 427
2eca4eb… ragelink 428
2eca4eb… ragelink 429
2eca4eb… ragelink 430
2eca4eb… ragelink 431
2eca4eb… ragelink 432 <label class="md-nav__link md-nav__link--active" for="__toc">
2eca4eb… ragelink 433
2eca4eb… ragelink 434
2eca4eb… ragelink 435
2eca4eb… ragelink 436 <span class="md-ellipsis">
2eca4eb… ragelink 437
2eca4eb… ragelink 438
2eca4eb… ragelink 439 Prerequisites
2eca4eb… ragelink 440
2eca4eb… ragelink 441
2eca4eb… ragelink 442
2eca4eb… ragelink 443 </span>
2eca4eb… ragelink 444
2eca4eb… ragelink 445
2eca4eb… ragelink 446
2eca4eb… ragelink 447 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 448 </label>
2eca4eb… ragelink 449
2eca4eb… ragelink 450 <a href="./" class="md-nav__link md-nav__link--active">
2eca4eb… ragelink 451
2eca4eb… ragelink 452
2eca4eb… ragelink 453
2eca4eb… ragelink 454 <span class="md-ellipsis">
2eca4eb… ragelink 455
2eca4eb… ragelink 456
2eca4eb… ragelink 457 Prerequisites
2eca4eb… ragelink 458
2eca4eb… ragelink 459
2eca4eb… ragelink 460
2eca4eb… ragelink 461 </span>
2eca4eb… ragelink 462
2eca4eb… ragelink 463
2eca4eb… ragelink 464
2eca4eb… ragelink 465 </a>
2eca4eb… ragelink 466
2eca4eb… ragelink 467
2eca4eb… ragelink 468
2eca4eb… ragelink 469 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 470
2eca4eb… ragelink 471
2eca4eb… ragelink 472
2eca4eb… ragelink 473
2eca4eb… ragelink 474
2eca4eb… ragelink 475
2eca4eb… ragelink 476 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 477 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 478 Table of contents
2eca4eb… ragelink 479 </label>
2eca4eb… ragelink 480 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 481
2eca4eb… ragelink 482 <li class="md-nav__item">
2eca4eb… ragelink 483 <a href="#system-requirements" class="md-nav__link">
2eca4eb… ragelink 484 <span class="md-ellipsis">
2eca4eb… ragelink 485
2eca4eb… ragelink 486 System Requirements
2eca4eb… ragelink 487
2eca4eb… ragelink 488 </span>
2eca4eb… ragelink 489 </a>
2eca4eb… ragelink 490
2eca4eb… ragelink 491 </li>
2eca4eb… ragelink 492
2eca4eb… ragelink 493 <li class="md-nav__item">
2eca4eb… ragelink 494 <a href="#required-software" class="md-nav__link">
2eca4eb… ragelink 495 <span class="md-ellipsis">
2eca4eb… ragelink 496
2eca4eb… ragelink 497 Required Software
2eca4eb… ragelink 498
2eca4eb… ragelink 499 </span>
2eca4eb… ragelink 500 </a>
2eca4eb… ragelink 501
2eca4eb… ragelink 502 <nav class="md-nav" aria-label="Required Software">
2eca4eb… ragelink 503 <ul class="md-nav__list">
2eca4eb… ragelink 504
2eca4eb… ragelink 505 <li class="md-nav__item">
2eca4eb… ragelink 506 <a href="#docker-docker-compose" class="md-nav__link">
2eca4eb… ragelink 507 <span class="md-ellipsis">
2eca4eb… ragelink 508
2eca4eb… ragelink 509 Docker &amp; Docker Compose
2eca4eb… ragelink 510
2eca4eb… ragelink 511 </span>
2eca4eb… ragelink 512 </a>
2eca4eb… ragelink 513
2eca4eb… ragelink 514 </li>
2eca4eb… ragelink 515
2eca4eb… ragelink 516 <li class="md-nav__item">
2eca4eb… ragelink 517 <a href="#git" class="md-nav__link">
2eca4eb… ragelink 518 <span class="md-ellipsis">
2eca4eb… ragelink 519
2eca4eb… ragelink 520 Git
2eca4eb… ragelink 521
2eca4eb… ragelink 522 </span>
2eca4eb… ragelink 523 </a>
2eca4eb… ragelink 524
2eca4eb… ragelink 525 </li>
2eca4eb… ragelink 526
2eca4eb… ragelink 527 <li class="md-nav__item">
2eca4eb… ragelink 528 <a href="#make" class="md-nav__link">
2eca4eb… ragelink 529 <span class="md-ellipsis">
2eca4eb… ragelink 530
2eca4eb… ragelink 531 Make
2eca4eb… ragelink 532
2eca4eb… ragelink 533 </span>
2eca4eb… ragelink 534 </a>
2eca4eb… ragelink 535
2eca4eb… ragelink 536 </li>
2eca4eb… ragelink 537
2eca4eb… ragelink 538 </ul>
2eca4eb… ragelink 539 </nav>
2eca4eb… ragelink 540
2eca4eb… ragelink 541 </li>
2eca4eb… ragelink 542
2eca4eb… ragelink 543 <li class="md-nav__item">
2eca4eb… ragelink 544 <a href="#optional-s3-compatible-storage" class="md-nav__link">
2eca4eb… ragelink 545 <span class="md-ellipsis">
2eca4eb… ragelink 546
2eca4eb… ragelink 547 Optional: S3-Compatible Storage
2eca4eb… ragelink 548
2eca4eb… ragelink 549 </span>
2eca4eb… ragelink 550 </a>
2eca4eb… ragelink 551
2eca4eb… ragelink 552 </li>
2eca4eb… ragelink 553
2eca4eb… ragelink 554 <li class="md-nav__item">
2eca4eb… ragelink 555 <a href="#ports" class="md-nav__link">
2eca4eb… ragelink 556 <span class="md-ellipsis">
2eca4eb… ragelink 557
2eca4eb… ragelink 558 Ports
2eca4eb… ragelink 559
2eca4eb… ragelink 560 </span>
2eca4eb… ragelink 561 </a>
2eca4eb… ragelink 562
2eca4eb… ragelink 563 </li>
2eca4eb… ragelink 564
2eca4eb… ragelink 565 </ul>
2eca4eb… ragelink 566
2eca4eb… ragelink 567 </nav>
2eca4eb… ragelink 568
2eca4eb… ragelink 569 </li>
2eca4eb… ragelink 570
2eca4eb… ragelink 571
2eca4eb… ragelink 572
2eca4eb… ragelink 573
2eca4eb… ragelink 574
2eca4eb… ragelink 575
2eca4eb… ragelink 576
2eca4eb… ragelink 577
2eca4eb… ragelink 578
2eca4eb… ragelink 579
2eca4eb… ragelink 580 <li class="md-nav__item">
2eca4eb… ragelink 581 <a href="../installation/" class="md-nav__link">
2eca4eb… ragelink 582
2eca4eb… ragelink 583
2eca4eb… ragelink 584
2eca4eb… ragelink 585 <span class="md-ellipsis">
2eca4eb… ragelink 586
2eca4eb… ragelink 587
2eca4eb… ragelink 588 Installation
2eca4eb… ragelink 589
2eca4eb… ragelink 590
2eca4eb… ragelink 591
2eca4eb… ragelink 592 </span>
2eca4eb… ragelink 593
2eca4eb… ragelink 594
2eca4eb… ragelink 595
2eca4eb… ragelink 596 </a>
2eca4eb… ragelink 597 </li>
2eca4eb… ragelink 598
2eca4eb… ragelink 599
2eca4eb… ragelink 600
2eca4eb… ragelink 601
2eca4eb… ragelink 602
2eca4eb… ragelink 603
2eca4eb… ragelink 604
2eca4eb… ragelink 605
2eca4eb… ragelink 606
2eca4eb… ragelink 607
2eca4eb… ragelink 608 <li class="md-nav__item">
2eca4eb… ragelink 609 <a href="../configuration/" class="md-nav__link">
2eca4eb… ragelink 610
2eca4eb… ragelink 611
2eca4eb… ragelink 612
2eca4eb… ragelink 613 <span class="md-ellipsis">
2eca4eb… ragelink 614
2eca4eb… ragelink 615
2eca4eb… ragelink 616 Configuration
2eca4eb… ragelink 617
2eca4eb… ragelink 618
2eca4eb… ragelink 619
2eca4eb… ragelink 620 </span>
2eca4eb… ragelink 621
2eca4eb… ragelink 622
2eca4eb… ragelink 623
2eca4eb… ragelink 624 </a>
2eca4eb… ragelink 625 </li>
2eca4eb… ragelink 626
2eca4eb… ragelink 627
2eca4eb… ragelink 628
2eca4eb… ragelink 629
2eca4eb… ragelink 630
2eca4eb… ragelink 631
2eca4eb… ragelink 632
2eca4eb… ragelink 633
2eca4eb… ragelink 634
2eca4eb… ragelink 635
2eca4eb… ragelink 636 <li class="md-nav__item">
2eca4eb… ragelink 637 <a href="../first-repo/" class="md-nav__link">
2eca4eb… ragelink 638
2eca4eb… ragelink 639
2eca4eb… ragelink 640
2eca4eb… ragelink 641 <span class="md-ellipsis">
2eca4eb… ragelink 642
2eca4eb… ragelink 643
2eca4eb… ragelink 644 First Repository
2eca4eb… ragelink 645
2eca4eb… ragelink 646
2eca4eb… ragelink 647
2eca4eb… ragelink 648 </span>
2eca4eb… ragelink 649
2eca4eb… ragelink 650
2eca4eb… ragelink 651
2eca4eb… ragelink 652 </a>
2eca4eb… ragelink 653 </li>
2eca4eb… ragelink 654
2eca4eb… ragelink 655
2eca4eb… ragelink 656
2eca4eb… ragelink 657
2eca4eb… ragelink 658 </ul>
2eca4eb… ragelink 659 </nav>
2eca4eb… ragelink 660
2eca4eb… ragelink 661 </li>
2eca4eb… ragelink 662
2eca4eb… ragelink 663
2eca4eb… ragelink 664
2eca4eb… ragelink 665
2eca4eb… ragelink 666
2eca4eb… ragelink 667
2eca4eb… ragelink 668
2eca4eb… ragelink 669
2eca4eb… ragelink 670
2eca4eb… ragelink 671
2eca4eb… ragelink 672
2eca4eb… ragelink 673
2eca4eb… ragelink 674
2eca4eb… ragelink 675
2eca4eb… ragelink 676
2eca4eb… ragelink 677
2eca4eb… ragelink 678
2eca4eb… ragelink 679
2eca4eb… ragelink 680
2eca4eb… ragelink 681 <li class="md-nav__item md-nav__item--nested">
2eca4eb… ragelink 682
2eca4eb… ragelink 683
2eca4eb… ragelink 684
2eca4eb… ragelink 685
2eca4eb… ragelink 686
2eca4eb… ragelink 687 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
2eca4eb… ragelink 688
2eca4eb… ragelink 689
2eca4eb… ragelink 690 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
2eca4eb… ragelink 691
2eca4eb… ragelink 692
2eca4eb… ragelink 693
2eca4eb… ragelink 694 <span class="md-ellipsis">
2eca4eb… ragelink 695
2eca4eb… ragelink 696
2eca4eb… ragelink 697 Architecture
2eca4eb… ragelink 698
2eca4eb… ragelink 699
2eca4eb… ragelink 700
2eca4eb… ragelink 701 </span>
2eca4eb… ragelink 702
2eca4eb… ragelink 703
2eca4eb… ragelink 704
2eca4eb… ragelink 705 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 706 </label>
2eca4eb… ragelink 707
2eca4eb… ragelink 708 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
2eca4eb… ragelink 709 <label class="md-nav__title" for="__nav_3">
2eca4eb… ragelink 710 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 711
2eca4eb… ragelink 712
2eca4eb… ragelink 713 Architecture
2eca4eb… ragelink 714
2eca4eb… ragelink 715
2eca4eb… ragelink 716 </label>
2eca4eb… ragelink 717 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 718
2eca4eb… ragelink 719
2eca4eb… ragelink 720
2eca4eb… ragelink 721
2eca4eb… ragelink 722
2eca4eb… ragelink 723
2eca4eb… ragelink 724
2eca4eb… ragelink 725 <li class="md-nav__item">
2eca4eb… ragelink 726 <a href="../../architecture/overview/" class="md-nav__link">
2eca4eb… ragelink 727
2eca4eb… ragelink 728
2eca4eb… ragelink 729
2eca4eb… ragelink 730 <span class="md-ellipsis">
2eca4eb… ragelink 731
2eca4eb… ragelink 732
2eca4eb… ragelink 733 Overview
2eca4eb… ragelink 734
2eca4eb… ragelink 735
2eca4eb… ragelink 736
2eca4eb… ragelink 737 </span>
2eca4eb… ragelink 738
2eca4eb… ragelink 739
2eca4eb… ragelink 740
2eca4eb… ragelink 741 </a>
2eca4eb… ragelink 742 </li>
2eca4eb… ragelink 743
2eca4eb… ragelink 744
2eca4eb… ragelink 745
2eca4eb… ragelink 746
2eca4eb… ragelink 747
2eca4eb… ragelink 748
2eca4eb… ragelink 749
2eca4eb… ragelink 750
2eca4eb… ragelink 751
2eca4eb… ragelink 752
2eca4eb… ragelink 753 <li class="md-nav__item">
2eca4eb… ragelink 754 <a href="../../architecture/sync-bridge/" class="md-nav__link">
2eca4eb… ragelink 755
2eca4eb… ragelink 756
2eca4eb… ragelink 757
2eca4eb… ragelink 758 <span class="md-ellipsis">
2eca4eb… ragelink 759
2eca4eb… ragelink 760
2eca4eb… ragelink 761 Sync Bridge
2eca4eb… ragelink 762
2eca4eb… ragelink 763
2eca4eb… ragelink 764
2eca4eb… ragelink 765 </span>
2eca4eb… ragelink 766
2eca4eb… ragelink 767
2eca4eb… ragelink 768
2eca4eb… ragelink 769 </a>
2eca4eb… ragelink 770 </li>
2eca4eb… ragelink 771
2eca4eb… ragelink 772
2eca4eb… ragelink 773
2eca4eb… ragelink 774
2eca4eb… ragelink 775 </ul>
2eca4eb… ragelink 776 </nav>
2eca4eb… ragelink 777
2eca4eb… ragelink 778 </li>
2eca4eb… ragelink 779
2eca4eb… ragelink 780
2eca4eb… ragelink 781
2eca4eb… ragelink 782 </ul>
2eca4eb… ragelink 783 </nav>
2eca4eb… ragelink 784 </div>
2eca4eb… ragelink 785 </div>
2eca4eb… ragelink 786 </div>
2eca4eb… ragelink 787
2eca4eb… ragelink 788
2eca4eb… ragelink 789
2eca4eb… ragelink 790 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2eca4eb… ragelink 791 <div class="md-sidebar__scrollwrap">
2eca4eb… ragelink 792 <div class="md-sidebar__inner">
2eca4eb… ragelink 793
2eca4eb… ragelink 794
2eca4eb… ragelink 795 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 796
2eca4eb… ragelink 797
2eca4eb… ragelink 798
2eca4eb… ragelink 799
2eca4eb… ragelink 800
2eca4eb… ragelink 801
2eca4eb… ragelink 802 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 803 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 804 Table of contents
2eca4eb… ragelink 805 </label>
2eca4eb… ragelink 806 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 807
2eca4eb… ragelink 808 <li class="md-nav__item">
2eca4eb… ragelink 809 <a href="#system-requirements" class="md-nav__link">
2eca4eb… ragelink 810 <span class="md-ellipsis">
2eca4eb… ragelink 811
2eca4eb… ragelink 812 System Requirements
2eca4eb… ragelink 813
2eca4eb… ragelink 814 </span>
2eca4eb… ragelink 815 </a>
2eca4eb… ragelink 816
2eca4eb… ragelink 817 </li>
2eca4eb… ragelink 818
2eca4eb… ragelink 819 <li class="md-nav__item">
2eca4eb… ragelink 820 <a href="#required-software" class="md-nav__link">
2eca4eb… ragelink 821 <span class="md-ellipsis">
2eca4eb… ragelink 822
2eca4eb… ragelink 823 Required Software
2eca4eb… ragelink 824
2eca4eb… ragelink 825 </span>
2eca4eb… ragelink 826 </a>
2eca4eb… ragelink 827
2eca4eb… ragelink 828 <nav class="md-nav" aria-label="Required Software">
2eca4eb… ragelink 829 <ul class="md-nav__list">
2eca4eb… ragelink 830
2eca4eb… ragelink 831 <li class="md-nav__item">
2eca4eb… ragelink 832 <a href="#docker-docker-compose" class="md-nav__link">
2eca4eb… ragelink 833 <span class="md-ellipsis">
2eca4eb… ragelink 834
2eca4eb… ragelink 835 Docker &amp; Docker Compose
2eca4eb… ragelink 836
2eca4eb… ragelink 837 </span>
2eca4eb… ragelink 838 </a>
2eca4eb… ragelink 839
2eca4eb… ragelink 840 </li>
2eca4eb… ragelink 841
2eca4eb… ragelink 842 <li class="md-nav__item">
2eca4eb… ragelink 843 <a href="#git" class="md-nav__link">
2eca4eb… ragelink 844 <span class="md-ellipsis">
2eca4eb… ragelink 845
2eca4eb… ragelink 846 Git
2eca4eb… ragelink 847
2eca4eb… ragelink 848 </span>
2eca4eb… ragelink 849 </a>
2eca4eb… ragelink 850
2eca4eb… ragelink 851 </li>
2eca4eb… ragelink 852
2eca4eb… ragelink 853 <li class="md-nav__item">
2eca4eb… ragelink 854 <a href="#make" class="md-nav__link">
2eca4eb… ragelink 855 <span class="md-ellipsis">
2eca4eb… ragelink 856
2eca4eb… ragelink 857 Make
2eca4eb… ragelink 858
2eca4eb… ragelink 859 </span>
2eca4eb… ragelink 860 </a>
2eca4eb… ragelink 861
2eca4eb… ragelink 862 </li>
2eca4eb… ragelink 863
2eca4eb… ragelink 864 </ul>
2eca4eb… ragelink 865 </nav>
2eca4eb… ragelink 866
2eca4eb… ragelink 867 </li>
2eca4eb… ragelink 868
2eca4eb… ragelink 869 <li class="md-nav__item">
2eca4eb… ragelink 870 <a href="#optional-s3-compatible-storage" class="md-nav__link">
2eca4eb… ragelink 871 <span class="md-ellipsis">
2eca4eb… ragelink 872
2eca4eb… ragelink 873 Optional: S3-Compatible Storage
2eca4eb… ragelink 874
2eca4eb… ragelink 875 </span>
2eca4eb… ragelink 876 </a>
2eca4eb… ragelink 877
2eca4eb… ragelink 878 </li>
2eca4eb… ragelink 879
2eca4eb… ragelink 880 <li class="md-nav__item">
2eca4eb… ragelink 881 <a href="#ports" class="md-nav__link">
2eca4eb… ragelink 882 <span class="md-ellipsis">
2eca4eb… ragelink 883
2eca4eb… ragelink 884 Ports
2eca4eb… ragelink 885
2eca4eb… ragelink 886 </span>
2eca4eb… ragelink 887 </a>
2eca4eb… ragelink 888
2eca4eb… ragelink 889 </li>
2eca4eb… ragelink 890
2eca4eb… ragelink 891 </ul>
2eca4eb… ragelink 892
2eca4eb… ragelink 893 </nav>
2eca4eb… ragelink 894 </div>
2eca4eb… ragelink 895 </div>
2eca4eb… ragelink 896 </div>
2eca4eb… ragelink 897
2eca4eb… ragelink 898
2eca4eb… ragelink 899
2eca4eb… ragelink 900 <div class="md-content" data-md-component="content">
2eca4eb… ragelink 901
2eca4eb… ragelink 902 <article class="md-content__inner md-typeset">
2eca4eb… ragelink 903
2eca4eb… ragelink 904
2eca4eb… ragelink 905
2eca4eb… ragelink 906
2eca4eb… ragelink 907
2eca4eb… ragelink 908
2eca4eb… ragelink 909
2eca4eb… ragelink 910
2eca4eb… ragelink 911 <h1 id="prerequisites">Prerequisites<a class="headerlink" href="#prerequisites" title="Permanent link">&para;</a></h1>
2eca4eb… ragelink 912 <p>Before installing fossilrepo, ensure your server meets these requirements.</p>
2eca4eb… ragelink 913 <h2 id="system-requirements">System Requirements<a class="headerlink" href="#system-requirements" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 914 <table>
2eca4eb… ragelink 915 <thead>
2eca4eb… ragelink 916 <tr>
2eca4eb… ragelink 917 <th>Requirement</th>
2eca4eb… ragelink 918 <th>Minimum</th>
2eca4eb… ragelink 919 </tr>
2eca4eb… ragelink 920 </thead>
2eca4eb… ragelink 921 <tbody>
2eca4eb… ragelink 922 <tr>
2eca4eb… ragelink 923 <td><strong>OS</strong></td>
2eca4eb… ragelink 924 <td>Linux (Ubuntu 22.04+, Debian 12+, RHEL 9+) or macOS 13+</td>
2eca4eb… ragelink 925 </tr>
2eca4eb… ragelink 926 <tr>
2eca4eb… ragelink 927 <td><strong>CPU</strong></td>
2eca4eb… ragelink 928 <td>1 vCPU</td>
2eca4eb… ragelink 929 </tr>
2eca4eb… ragelink 930 <tr>
2eca4eb… ragelink 931 <td><strong>RAM</strong></td>
2eca4eb… ragelink 932 <td>1 GB</td>
2eca4eb… ragelink 933 </tr>
2eca4eb… ragelink 934 <tr>
2eca4eb… ragelink 935 <td><strong>Disk</strong></td>
2eca4eb… ragelink 936 <td>10 GB (scales with repo count)</td>
2eca4eb… ragelink 937 </tr>
2eca4eb… ragelink 938 <tr>
2eca4eb… ragelink 939 <td><strong>Python</strong></td>
2eca4eb… ragelink 940 <td>3.12+</td>
2eca4eb… ragelink 941 </tr>
2eca4eb… ragelink 942 </tbody>
2eca4eb… ragelink 943 </table>
2eca4eb… ragelink 944 <h2 id="required-software">Required Software<a class="headerlink" href="#required-software" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 945 <h3 id="docker-docker-compose">Docker &amp; Docker Compose<a class="headerlink" href="#docker-docker-compose" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 946 <p>Fossilrepo runs its infrastructure stack via Docker Compose.</p>
2eca4eb… ragelink 947 <div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Ubuntu/Debian</label><label for="__tabbed_1_2">macOS</label></div>
2eca4eb… ragelink 948 <div class="tabbed-content">
2eca4eb… ragelink 949 <div class="tabbed-block">
2eca4eb… ragelink 950 <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1"># Install Docker</span>
2eca4eb… ragelink 951 <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://get.docker.com<span class="w"> </span><span class="p">|</span><span class="w"> </span>sh
2eca4eb… ragelink 952 <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>sudo<span class="w"> </span>usermod<span class="w"> </span>-aG<span class="w"> </span>docker<span class="w"> </span><span class="nv">$USER</span>
2eca4eb… ragelink 953 <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
2eca4eb… ragelink 954 <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="c1"># Verify</span>
2eca4eb… ragelink 955 <a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>docker<span class="w"> </span>compose<span class="w"> </span>version
2eca4eb… ragelink 956 </code></pre></div>
2eca4eb… ragelink 957 </div>
2eca4eb… ragelink 958 <div class="tabbed-block">
2eca4eb… ragelink 959 <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1"># Install Docker Desktop</span>
2eca4eb… ragelink 960 <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>brew<span class="w"> </span>install<span class="w"> </span>--cask<span class="w"> </span>docker
2eca4eb… ragelink 961 <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
2eca4eb… ragelink 962 <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="c1"># Verify</span>
2eca4eb… ragelink 963 <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>docker<span class="w"> </span>compose<span class="w"> </span>version
2eca4eb… ragelink 964 </code></pre></div>
2eca4eb… ragelink 965 </div>
2eca4eb… ragelink 966 </div>
2eca4eb… ragelink 967 </div>
2eca4eb… ragelink 968 <h3 id="git">Git<a class="headerlink" href="#git" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 969 <p>Required for the sync bridge (mirroring to GitHub/GitLab).</p>
2eca4eb… ragelink 970 <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>git<span class="w"> </span>--version<span class="w"> </span><span class="c1"># 2.30+</span>
2eca4eb… ragelink 971 </code></pre></div>
2eca4eb… ragelink 972 <h3 id="make">Make<a class="headerlink" href="#make" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 973 <p>Used for running common commands.</p>
2eca4eb… ragelink 974 <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>make<span class="w"> </span>--version
2eca4eb… ragelink 975 </code></pre></div>
2eca4eb… ragelink 976 <h2 id="optional-s3-compatible-storage">Optional: S3-Compatible Storage<a class="headerlink" href="#optional-s3-compatible-storage" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 977 <p>For continuous backups via Litestream, you need an S3-compatible bucket:</p>
2eca4eb… ragelink 978 <ul>
2eca4eb… ragelink 979 <li><strong>AWS S3</strong></li>
2eca4eb… ragelink 980 <li><strong>MinIO</strong> (self-hosted)</li>
2eca4eb… ragelink 981 <li><strong>Backblaze B2</strong></li>
2eca4eb… ragelink 982 <li><strong>DigitalOcean Spaces</strong></li>
2eca4eb… ragelink 983 </ul>
2eca4eb… ragelink 984 <div class="admonition info">
2eca4eb… ragelink 985 <p class="admonition-title">Local development</p>
2eca4eb… ragelink 986 <p>S3 is not required for local development. Litestream is disabled by default in the dev Docker Compose configuration.</p>
2eca4eb… ragelink 987 </div>
2eca4eb… ragelink 988 <h2 id="ports">Ports<a class="headerlink" href="#ports" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 989 <p>The following ports are used by the stack:</p>
2eca4eb… ragelink 990 <table>
2eca4eb… ragelink 991 <thead>
2eca4eb… ragelink 992 <tr>
2eca4eb… ragelink 993 <th>Port</th>
2eca4eb… ragelink 994 <th>Service</th>
2eca4eb… ragelink 995 </tr>
2eca4eb… ragelink 996 </thead>
2eca4eb… ragelink 997 <tbody>
2eca4eb… ragelink 998 <tr>
2eca4eb… ragelink 999 <td><code>8000</code></td>
2eca4eb… ragelink 1000 <td>Django (management UI)</td>
2eca4eb… ragelink 1001 </tr>
2eca4eb… ragelink 1002 <tr>
2eca4eb… ragelink 1003 <td><code>443</code></td>
2eca4eb… ragelink 1004 <td>Caddy (HTTPS, production)</td>
2eca4eb… ragelink 1005 </tr>
2eca4eb… ragelink 1006 <tr>
2eca4eb… ragelink 1007 <td><code>80</code></td>
2eca4eb… ragelink 1008 <td>Caddy (HTTP redirect, production)</td>
2eca4eb… ragelink 1009 </tr>
2eca4eb… ragelink 1010 <tr>
2eca4eb… ragelink 1011 <td><code>5432</code></td>
2eca4eb… ragelink 1012 <td>PostgreSQL</td>
2eca4eb… ragelink 1013 </tr>
2eca4eb… ragelink 1014 <tr>
2eca4eb… ragelink 1015 <td><code>6379</code></td>
2eca4eb… ragelink 1016 <td>Redis</td>
2eca4eb… ragelink 1017 </tr>
2eca4eb… ragelink 1018 <tr>
2eca4eb… ragelink 1019 <td><code>8025</code></td>
2eca4eb… ragelink 1020 <td>Mailpit (dev only)</td>
2eca4eb… ragelink 1021 </tr>
2eca4eb… ragelink 1022 </tbody>
2eca4eb… ragelink 1023 </table>
2eca4eb… ragelink 1024
2eca4eb… ragelink 1025
2eca4eb… ragelink 1026
2eca4eb… ragelink 1027
2eca4eb… ragelink 1028
2eca4eb… ragelink 1029
2eca4eb… ragelink 1030
2eca4eb… ragelink 1031
2eca4eb… ragelink 1032
2eca4eb… ragelink 1033
2eca4eb… ragelink 1034
2eca4eb… ragelink 1035
2eca4eb… ragelink 1036
2eca4eb… ragelink 1037 </article>
2eca4eb… ragelink 1038 </div>
2eca4eb… ragelink 1039
2eca4eb… ragelink 1040
2eca4eb… ragelink 1041 <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
2eca4eb… ragelink 1042
2eca4eb… ragelink 1043 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2eca4eb… ragelink 1044 </div>
2eca4eb… ragelink 1045
2eca4eb… ragelink 1046 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2eca4eb… ragelink 1047
2eca4eb… ragelink 1048 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
2eca4eb… ragelink 1049 Back to top
2eca4eb… ragelink 1050 </button>
2eca4eb… ragelink 1051
2eca4eb… ragelink 1052 </main>
2eca4eb… ragelink 1053
2eca4eb… ragelink 1054 <footer class="md-footer">
2eca4eb… ragelink 1055
2eca4eb… ragelink 1056 <div class="md-footer-meta md-typeset">
2eca4eb… ragelink 1057 <div class="md-footer-meta__inner md-grid">
2eca4eb… ragelink 1058 <div class="md-copyright">
2eca4eb… ragelink 1059
2eca4eb… ragelink 1060 <div class="md-copyright__highlight">
2eca4eb… ragelink 1061 Copyright &copy; 2026 CONFLICT LLC
2eca4eb… ragelink 1062 </div>
2eca4eb… ragelink 1063
2eca4eb… ragelink 1064
2eca4eb… ragelink 1065 Made with
2eca4eb… ragelink 1066 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2eca4eb… ragelink 1067 Material for MkDocs
2eca4eb… ragelink 1068 </a>
2eca4eb… ragelink 1069
2eca4eb… ragelink 1070 </div>
2eca4eb… ragelink 1071
2eca4eb… ragelink 1072
2eca4eb… ragelink 1073 <div class="md-social">
2eca4eb… ragelink 1074
2eca4eb… ragelink 1075
2eca4eb… ragelink 1076
2eca4eb… ragelink 1077
2eca4eb… ragelink 1078
2eca4eb… ragelink 1079
2eca4eb… ragelink 1080
2eca4eb… ragelink 1081
2eca4eb… ragelink 1082 <a href="https://github.com/ConflictHQ/fossilrepo" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2eca4eb… ragelink 1083 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 1084 </a>
2eca4eb… ragelink 1085
2eca4eb… ragelink 1086 </div>
2eca4eb… ragelink 1087
2eca4eb… ragelink 1088 </div>
2eca4eb… ragelink 1089 </div>
2eca4eb… ragelink 1090 </footer>
2eca4eb… ragelink 1091
2eca4eb… ragelink 1092 </div>
2eca4eb… ragelink 1093 <div class="md-dialog" data-md-component="dialog">
2eca4eb… ragelink 1094 <div class="md-dialog__inner md-typeset"></div>
2eca4eb… ragelink 1095 </div>
2eca4eb… ragelink 1096
2eca4eb… ragelink 1097
2eca4eb… ragelink 1098
2eca4eb… ragelink 1099
2eca4eb… ragelink 1100
2eca4eb… ragelink 1101 <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2eca4eb… ragelink 1102
2eca4eb… ragelink 1103
2eca4eb… ragelink 1104 <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2eca4eb… ragelink 1105
2eca4eb… ragelink 1106
2eca4eb… ragelink 1107 </body>
2eca4eb… ragelink 1108 </html>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button