FossilRepo

Source Blame History 1089 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/installation/">
2eca4eb… ragelink 16
2eca4eb… ragelink 17
2eca4eb… ragelink 18 <link rel="prev" href="../prerequisites/">
2eca4eb… ragelink 19
2eca4eb… ragelink 20
2eca4eb… ragelink 21 <link rel="next" href="../configuration/">
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>Installation - 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="#installation" 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 Installation
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="../prerequisites/" 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 <li class="md-nav__item">
2eca4eb… ragelink 423 <a href="../prerequisites/" class="md-nav__link">
2eca4eb… ragelink 424
2eca4eb… ragelink 425
2eca4eb… ragelink 426
2eca4eb… ragelink 427 <span class="md-ellipsis">
2eca4eb… ragelink 428
2eca4eb… ragelink 429
2eca4eb… ragelink 430 Prerequisites
2eca4eb… ragelink 431
2eca4eb… ragelink 432
2eca4eb… ragelink 433
2eca4eb… ragelink 434 </span>
2eca4eb… ragelink 435
2eca4eb… ragelink 436
2eca4eb… ragelink 437
2eca4eb… ragelink 438 </a>
2eca4eb… ragelink 439 </li>
2eca4eb… ragelink 440
2eca4eb… ragelink 441
2eca4eb… ragelink 442
2eca4eb… ragelink 443
2eca4eb… ragelink 444
2eca4eb… ragelink 445
2eca4eb… ragelink 446
2eca4eb… ragelink 447
2eca4eb… ragelink 448
2eca4eb… ragelink 449
2eca4eb… ragelink 450
2eca4eb… ragelink 451
2eca4eb… ragelink 452 <li class="md-nav__item md-nav__item--active">
2eca4eb… ragelink 453
2eca4eb… ragelink 454 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
2eca4eb… ragelink 455
2eca4eb… ragelink 456
2eca4eb… ragelink 457
2eca4eb… ragelink 458
2eca4eb… ragelink 459
2eca4eb… ragelink 460 <label class="md-nav__link md-nav__link--active" for="__toc">
2eca4eb… ragelink 461
2eca4eb… ragelink 462
2eca4eb… ragelink 463
2eca4eb… ragelink 464 <span class="md-ellipsis">
2eca4eb… ragelink 465
2eca4eb… ragelink 466
2eca4eb… ragelink 467 Installation
2eca4eb… ragelink 468
2eca4eb… ragelink 469
2eca4eb… ragelink 470
2eca4eb… ragelink 471 </span>
2eca4eb… ragelink 472
2eca4eb… ragelink 473
2eca4eb… ragelink 474
2eca4eb… ragelink 475 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 476 </label>
2eca4eb… ragelink 477
2eca4eb… ragelink 478 <a href="./" class="md-nav__link md-nav__link--active">
2eca4eb… ragelink 479
2eca4eb… ragelink 480
2eca4eb… ragelink 481
2eca4eb… ragelink 482 <span class="md-ellipsis">
2eca4eb… ragelink 483
2eca4eb… ragelink 484
2eca4eb… ragelink 485 Installation
2eca4eb… ragelink 486
2eca4eb… ragelink 487
2eca4eb… ragelink 488
2eca4eb… ragelink 489 </span>
2eca4eb… ragelink 490
2eca4eb… ragelink 491
2eca4eb… ragelink 492
2eca4eb… ragelink 493 </a>
2eca4eb… ragelink 494
2eca4eb… ragelink 495
2eca4eb… ragelink 496
2eca4eb… ragelink 497 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 498
2eca4eb… ragelink 499
2eca4eb… ragelink 500
2eca4eb… ragelink 501
2eca4eb… ragelink 502
2eca4eb… ragelink 503
2eca4eb… ragelink 504 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 505 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 506 Table of contents
2eca4eb… ragelink 507 </label>
2eca4eb… ragelink 508 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 509
2eca4eb… ragelink 510 <li class="md-nav__item">
2eca4eb… ragelink 511 <a href="#clone-the-repository" class="md-nav__link">
2eca4eb… ragelink 512 <span class="md-ellipsis">
2eca4eb… ragelink 513
2eca4eb… ragelink 514 Clone the Repository
2eca4eb… ragelink 515
2eca4eb… ragelink 516 </span>
2eca4eb… ragelink 517 </a>
2eca4eb… ragelink 518
2eca4eb… ragelink 519 </li>
2eca4eb… ragelink 520
2eca4eb… ragelink 521 <li class="md-nav__item">
2eca4eb… ragelink 522 <a href="#environment-configuration" class="md-nav__link">
2eca4eb… ragelink 523 <span class="md-ellipsis">
2eca4eb… ragelink 524
2eca4eb… ragelink 525 Environment Configuration
2eca4eb… ragelink 526
2eca4eb… ragelink 527 </span>
2eca4eb… ragelink 528 </a>
2eca4eb… ragelink 529
2eca4eb… ragelink 530 </li>
2eca4eb… ragelink 531
2eca4eb… ragelink 532 <li class="md-nav__item">
2eca4eb… ragelink 533 <a href="#start-the-stack" class="md-nav__link">
2eca4eb… ragelink 534 <span class="md-ellipsis">
2eca4eb… ragelink 535
2eca4eb… ragelink 536 Start the Stack
2eca4eb… ragelink 537
2eca4eb… ragelink 538 </span>
2eca4eb… ragelink 539 </a>
2eca4eb… ragelink 540
2eca4eb… ragelink 541 <nav class="md-nav" aria-label="Start the Stack">
2eca4eb… ragelink 542 <ul class="md-nav__list">
2eca4eb… ragelink 543
2eca4eb… ragelink 544 <li class="md-nav__item">
2eca4eb… ragelink 545 <a href="#development" class="md-nav__link">
2eca4eb… ragelink 546 <span class="md-ellipsis">
2eca4eb… ragelink 547
2eca4eb… ragelink 548 Development
2eca4eb… ragelink 549
2eca4eb… ragelink 550 </span>
2eca4eb… ragelink 551 </a>
2eca4eb… ragelink 552
2eca4eb… ragelink 553 </li>
2eca4eb… ragelink 554
2eca4eb… ragelink 555 <li class="md-nav__item">
2eca4eb… ragelink 556 <a href="#production" class="md-nav__link">
2eca4eb… ragelink 557 <span class="md-ellipsis">
2eca4eb… ragelink 558
2eca4eb… ragelink 559 Production
2eca4eb… ragelink 560
2eca4eb… ragelink 561 </span>
2eca4eb… ragelink 562 </a>
2eca4eb… ragelink 563
2eca4eb… ragelink 564 </li>
2eca4eb… ragelink 565
2eca4eb… ragelink 566 </ul>
2eca4eb… ragelink 567 </nav>
2eca4eb… ragelink 568
2eca4eb… ragelink 569 </li>
2eca4eb… ragelink 570
2eca4eb… ragelink 571 <li class="md-nav__item">
2eca4eb… ragelink 572 <a href="#verify-installation" class="md-nav__link">
2eca4eb… ragelink 573 <span class="md-ellipsis">
2eca4eb… ragelink 574
2eca4eb… ragelink 575 Verify Installation
2eca4eb… ragelink 576
2eca4eb… ragelink 577 </span>
2eca4eb… ragelink 578 </a>
2eca4eb… ragelink 579
2eca4eb… ragelink 580 </li>
2eca4eb… ragelink 581
2eca4eb… ragelink 582 <li class="md-nav__item">
2eca4eb… ragelink 583 <a href="#common-issues" class="md-nav__link">
2eca4eb… ragelink 584 <span class="md-ellipsis">
2eca4eb… ragelink 585
2eca4eb… ragelink 586 Common Issues
2eca4eb… ragelink 587
2eca4eb… ragelink 588 </span>
2eca4eb… ragelink 589 </a>
2eca4eb… ragelink 590
2eca4eb… ragelink 591 </li>
2eca4eb… ragelink 592
2eca4eb… ragelink 593 </ul>
2eca4eb… ragelink 594
2eca4eb… ragelink 595 </nav>
2eca4eb… ragelink 596
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="#clone-the-repository" class="md-nav__link">
2eca4eb… ragelink 810 <span class="md-ellipsis">
2eca4eb… ragelink 811
2eca4eb… ragelink 812 Clone the Repository
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="#environment-configuration" class="md-nav__link">
2eca4eb… ragelink 821 <span class="md-ellipsis">
2eca4eb… ragelink 822
2eca4eb… ragelink 823 Environment Configuration
2eca4eb… ragelink 824
2eca4eb… ragelink 825 </span>
2eca4eb… ragelink 826 </a>
2eca4eb… ragelink 827
2eca4eb… ragelink 828 </li>
2eca4eb… ragelink 829
2eca4eb… ragelink 830 <li class="md-nav__item">
2eca4eb… ragelink 831 <a href="#start-the-stack" class="md-nav__link">
2eca4eb… ragelink 832 <span class="md-ellipsis">
2eca4eb… ragelink 833
2eca4eb… ragelink 834 Start the Stack
2eca4eb… ragelink 835
2eca4eb… ragelink 836 </span>
2eca4eb… ragelink 837 </a>
2eca4eb… ragelink 838
2eca4eb… ragelink 839 <nav class="md-nav" aria-label="Start the Stack">
2eca4eb… ragelink 840 <ul class="md-nav__list">
2eca4eb… ragelink 841
2eca4eb… ragelink 842 <li class="md-nav__item">
2eca4eb… ragelink 843 <a href="#development" class="md-nav__link">
2eca4eb… ragelink 844 <span class="md-ellipsis">
2eca4eb… ragelink 845
2eca4eb… ragelink 846 Development
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="#production" class="md-nav__link">
2eca4eb… ragelink 855 <span class="md-ellipsis">
2eca4eb… ragelink 856
2eca4eb… ragelink 857 Production
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="#verify-installation" class="md-nav__link">
2eca4eb… ragelink 871 <span class="md-ellipsis">
2eca4eb… ragelink 872
2eca4eb… ragelink 873 Verify Installation
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="#common-issues" class="md-nav__link">
2eca4eb… ragelink 882 <span class="md-ellipsis">
2eca4eb… ragelink 883
2eca4eb… ragelink 884 Common Issues
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="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h1>
2eca4eb… ragelink 912 <h2 id="clone-the-repository">Clone the Repository<a class="headerlink" href="#clone-the-repository" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 913 <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/ConflictHQ/fossilrepo.git
2eca4eb… ragelink 914 <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="nb">cd</span><span class="w"> </span>fossilrepo
2eca4eb… ragelink 915 </code></pre></div>
2eca4eb… ragelink 916 <h2 id="environment-configuration">Environment Configuration<a class="headerlink" href="#environment-configuration" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 917 <p>Copy the example environment file and configure it:</p>
2eca4eb… ragelink 918 <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>cp<span class="w"> </span>.env.example<span class="w"> </span>.env
2eca4eb… ragelink 919 </code></pre></div>
2eca4eb… ragelink 920 <p>Edit <code>.env</code> with your settings:</p>
2eca4eb… ragelink 921 <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="c1"># Django</span>
2eca4eb… ragelink 922 <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="na">SECRET_KEY</span><span class="o">=</span><span class="s">your-secret-key-here</span>
2eca4eb… ragelink 923 <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="na">DEBUG</span><span class="o">=</span><span class="s">True</span>
2eca4eb… ragelink 924 <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="na">ALLOWED_HOSTS</span><span class="o">=</span><span class="s">localhost,127.0.0.1</span>
2eca4eb… ragelink 925 <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>
2eca4eb… ragelink 926 <a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="c1"># Database</span>
2eca4eb… ragelink 927 <a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="na">POSTGRES_DB</span><span class="o">=</span><span class="s">fossilrepo</span>
2eca4eb… ragelink 928 <a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a><span class="na">POSTGRES_USER</span><span class="o">=</span><span class="s">fossilrepo</span>
2eca4eb… ragelink 929 <a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="na">POSTGRES_PASSWORD</span><span class="o">=</span><span class="s">your-db-password</span>
2eca4eb… ragelink 930 <a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a>
2eca4eb… ragelink 931 <a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="c1"># Redis</span>
2eca4eb… ragelink 932 <a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a><span class="na">REDIS_URL</span><span class="o">=</span><span class="s">redis://redis:6379/0</span>
2eca4eb… ragelink 933 <a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a>
2eca4eb… ragelink 934 <a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a><span class="c1"># Fossil</span>
2eca4eb… ragelink 935 <a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="na">FOSSIL_REPO_DIR</span><span class="o">=</span><span class="s">/data/repos</span>
2eca4eb… ragelink 936 <a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a><span class="na">FOSSIL_BASE_URL</span><span class="o">=</span><span class="s">https://your-domain.com</span>
2eca4eb… ragelink 937 </code></pre></div>
2eca4eb… ragelink 938 <h2 id="start-the-stack">Start the Stack<a class="headerlink" href="#start-the-stack" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 939 <h3 id="development">Development<a class="headerlink" href="#development" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 940 <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="c1"># Build and start all services</span>
2eca4eb… ragelink 941 <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>make<span class="w"> </span>build
2eca4eb… ragelink 942 <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>
2eca4eb… ragelink 943 <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="c1"># Run database migrations</span>
2eca4eb… ragelink 944 <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>make<span class="w"> </span>migrate
2eca4eb… ragelink 945 <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>
2eca4eb… ragelink 946 <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="c1"># Create an admin user</span>
2eca4eb… ragelink 947 <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>make<span class="w"> </span>superuser
2eca4eb… ragelink 948 <a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>
2eca4eb… ragelink 949 <a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="c1"># Load sample data (optional)</span>
2eca4eb… ragelink 950 <a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a>make<span class="w"> </span>seed
2eca4eb… ragelink 951 </code></pre></div>
2eca4eb… ragelink 952 <p>The development stack includes:</p>
2eca4eb… ragelink 953 <ul>
2eca4eb… ragelink 954 <li>Django dev server on <code>http://localhost:8000</code></li>
2eca4eb… ragelink 955 <li>PostgreSQL 16</li>
2eca4eb… ragelink 956 <li>Redis</li>
2eca4eb… ragelink 957 <li>Celery worker + beat</li>
2eca4eb… ragelink 958 <li>Mailpit on <code>http://localhost:8025</code></li>
2eca4eb… ragelink 959 </ul>
2eca4eb… ragelink 960 <h3 id="production">Production<a class="headerlink" href="#production" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 961 <p>For production, you'll also configure Caddy and Litestream:</p>
2eca4eb… ragelink 962 <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1"># Copy production configs</span>
2eca4eb… ragelink 963 <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>cp<span class="w"> </span>docker/Caddyfile.example<span class="w"> </span>docker/Caddyfile
2eca4eb… ragelink 964 <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>cp<span class="w"> </span>docker/litestream.yml.example<span class="w"> </span>docker/litestream.yml
2eca4eb… ragelink 965 <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>
2eca4eb… ragelink 966 <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="c1"># Edit with your domain and S3 credentials</span>
2eca4eb… ragelink 967 <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="c1"># Then start with the production compose file</span>
2eca4eb… ragelink 968 <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.prod.yml<span class="w"> </span>up<span class="w"> </span>-d
2eca4eb… ragelink 969 </code></pre></div>
2eca4eb… ragelink 970 <h2 id="verify-installation">Verify Installation<a class="headerlink" href="#verify-installation" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 971 <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1"># Check all services are running</span>
2eca4eb… ragelink 972 <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>ps
2eca4eb… ragelink 973 <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
2eca4eb… ragelink 974 <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="c1"># Hit the health endpoint</span>
2eca4eb… ragelink 975 <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>curl<span class="w"> </span>http://localhost:8000/health/
2eca4eb… ragelink 976 <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a>
2eca4eb… ragelink 977 <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="c1"># Open the dashboard</span>
2eca4eb… ragelink 978 <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a>open<span class="w"> </span>http://localhost:8000
2eca4eb… ragelink 979 </code></pre></div>
2eca4eb… ragelink 980 <div class="admonition success">
2eca4eb… ragelink 981 <p class="admonition-title">You should see</p>
2eca4eb… ragelink 982 <p>The fossilrepo dashboard with navigation, login page, and (after seeding) sample repositories.</p>
2eca4eb… ragelink 983 </div>
2eca4eb… ragelink 984 <h2 id="common-issues">Common Issues<a class="headerlink" href="#common-issues" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 985 <details class="question">
2eca4eb… ragelink 986 <summary>Port 8000 already in use</summary>
2eca4eb… ragelink 987 <p>Change the Django port mapping in <code>docker-compose.yml</code>:
2eca4eb… ragelink 988 <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nt">ports</span><span class="p">:</span>
2eca4eb… ragelink 989 <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;8001:8000&quot;</span>
2eca4eb… ragelink 990 </code></pre></div></p>
2eca4eb… ragelink 991 </details>
2eca4eb… ragelink 992 <details class="question">
2eca4eb… ragelink 993 <summary>Database connection refused</summary>
2eca4eb… ragelink 994 <p>Ensure PostgreSQL has started before Django:
2eca4eb… ragelink 995 <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>postgres
2eca4eb… ragelink 996 </code></pre></div>
2eca4eb… ragelink 997 The Django container waits for Postgres to be ready, but network issues on some Docker Desktop versions can cause timeouts. Restart with <code>make down &amp;&amp; make up</code>.</p>
2eca4eb… ragelink 998 </details>
2eca4eb… ragelink 999 <details class="question">
2eca4eb… ragelink 1000 <summary>Permission denied on /data/repos</summary>
2eca4eb… ragelink 1001 <p>The Fossil repo directory needs to be writable by the container user:
2eca4eb… ragelink 1002 <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>sudo<span class="w"> </span>chown<span class="w"> </span>-R<span class="w"> </span><span class="m">1000</span>:1000<span class="w"> </span>/data/repos
2eca4eb… ragelink 1003 </code></pre></div></p>
2eca4eb… ragelink 1004 </details>
2eca4eb… ragelink 1005
2eca4eb… ragelink 1006
2eca4eb… ragelink 1007
2eca4eb… ragelink 1008
2eca4eb… ragelink 1009
2eca4eb… ragelink 1010
2eca4eb… ragelink 1011
2eca4eb… ragelink 1012
2eca4eb… ragelink 1013
2eca4eb… ragelink 1014
2eca4eb… ragelink 1015
2eca4eb… ragelink 1016
2eca4eb… ragelink 1017
2eca4eb… ragelink 1018 </article>
2eca4eb… ragelink 1019 </div>
2eca4eb… ragelink 1020
2eca4eb… ragelink 1021
2eca4eb… ragelink 1022 <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 1023
2eca4eb… ragelink 1024 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2eca4eb… ragelink 1025 </div>
2eca4eb… ragelink 1026
2eca4eb… ragelink 1027 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2eca4eb… ragelink 1028
2eca4eb… ragelink 1029 <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 1030 Back to top
2eca4eb… ragelink 1031 </button>
2eca4eb… ragelink 1032
2eca4eb… ragelink 1033 </main>
2eca4eb… ragelink 1034
2eca4eb… ragelink 1035 <footer class="md-footer">
2eca4eb… ragelink 1036
2eca4eb… ragelink 1037 <div class="md-footer-meta md-typeset">
2eca4eb… ragelink 1038 <div class="md-footer-meta__inner md-grid">
2eca4eb… ragelink 1039 <div class="md-copyright">
2eca4eb… ragelink 1040
2eca4eb… ragelink 1041 <div class="md-copyright__highlight">
2eca4eb… ragelink 1042 Copyright &copy; 2026 CONFLICT LLC
2eca4eb… ragelink 1043 </div>
2eca4eb… ragelink 1044
2eca4eb… ragelink 1045
2eca4eb… ragelink 1046 Made with
2eca4eb… ragelink 1047 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2eca4eb… ragelink 1048 Material for MkDocs
2eca4eb… ragelink 1049 </a>
2eca4eb… ragelink 1050
2eca4eb… ragelink 1051 </div>
2eca4eb… ragelink 1052
2eca4eb… ragelink 1053
2eca4eb… ragelink 1054 <div class="md-social">
2eca4eb… ragelink 1055
2eca4eb… ragelink 1056
2eca4eb… ragelink 1057
2eca4eb… ragelink 1058
2eca4eb… ragelink 1059
2eca4eb… ragelink 1060
2eca4eb… ragelink 1061
2eca4eb… ragelink 1062
2eca4eb… ragelink 1063 <a href="https://github.com/ConflictHQ/fossilrepo" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2eca4eb… ragelink 1064 <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 1065 </a>
2eca4eb… ragelink 1066
2eca4eb… ragelink 1067 </div>
2eca4eb… ragelink 1068
2eca4eb… ragelink 1069 </div>
2eca4eb… ragelink 1070 </div>
2eca4eb… ragelink 1071 </footer>
2eca4eb… ragelink 1072
2eca4eb… ragelink 1073 </div>
2eca4eb… ragelink 1074 <div class="md-dialog" data-md-component="dialog">
2eca4eb… ragelink 1075 <div class="md-dialog__inner md-typeset"></div>
2eca4eb… ragelink 1076 </div>
2eca4eb… ragelink 1077
2eca4eb… ragelink 1078
2eca4eb… ragelink 1079
2eca4eb… ragelink 1080
2eca4eb… ragelink 1081
2eca4eb… ragelink 1082 <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 1083
2eca4eb… ragelink 1084
2eca4eb… ragelink 1085 <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2eca4eb… ragelink 1086
2eca4eb… ragelink 1087
2eca4eb… ragelink 1088 </body>
2eca4eb… ragelink 1089 </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