FossilRepo

Source Blame History 1288 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/configuration/">
2eca4eb… ragelink 16
2eca4eb… ragelink 17
2eca4eb… ragelink 18 <link rel="prev" href="../installation/">
2eca4eb… ragelink 19
2eca4eb… ragelink 20
2eca4eb… ragelink 21 <link rel="next" href="../first-repo/">
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>Configuration - 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="#configuration" 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 Configuration
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 <li class="md-nav__item">
2eca4eb… ragelink 451 <a href="../installation/" class="md-nav__link">
2eca4eb… ragelink 452
2eca4eb… ragelink 453
2eca4eb… ragelink 454
2eca4eb… ragelink 455 <span class="md-ellipsis">
2eca4eb… ragelink 456
2eca4eb… ragelink 457
2eca4eb… ragelink 458 Installation
2eca4eb… ragelink 459
2eca4eb… ragelink 460
2eca4eb… ragelink 461
2eca4eb… ragelink 462 </span>
2eca4eb… ragelink 463
2eca4eb… ragelink 464
2eca4eb… ragelink 465
2eca4eb… ragelink 466 </a>
2eca4eb… ragelink 467 </li>
2eca4eb… ragelink 468
2eca4eb… ragelink 469
2eca4eb… ragelink 470
2eca4eb… ragelink 471
2eca4eb… ragelink 472
2eca4eb… ragelink 473
2eca4eb… ragelink 474
2eca4eb… ragelink 475
2eca4eb… ragelink 476
2eca4eb… ragelink 477
2eca4eb… ragelink 478
2eca4eb… ragelink 479
2eca4eb… ragelink 480 <li class="md-nav__item md-nav__item--active">
2eca4eb… ragelink 481
2eca4eb… ragelink 482 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
2eca4eb… ragelink 483
2eca4eb… ragelink 484
2eca4eb… ragelink 485
2eca4eb… ragelink 486
2eca4eb… ragelink 487
2eca4eb… ragelink 488 <label class="md-nav__link md-nav__link--active" for="__toc">
2eca4eb… ragelink 489
2eca4eb… ragelink 490
2eca4eb… ragelink 491
2eca4eb… ragelink 492 <span class="md-ellipsis">
2eca4eb… ragelink 493
2eca4eb… ragelink 494
2eca4eb… ragelink 495 Configuration
2eca4eb… ragelink 496
2eca4eb… ragelink 497
2eca4eb… ragelink 498
2eca4eb… ragelink 499 </span>
2eca4eb… ragelink 500
2eca4eb… ragelink 501
2eca4eb… ragelink 502
2eca4eb… ragelink 503 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 504 </label>
2eca4eb… ragelink 505
2eca4eb… ragelink 506 <a href="./" class="md-nav__link md-nav__link--active">
2eca4eb… ragelink 507
2eca4eb… ragelink 508
2eca4eb… ragelink 509
2eca4eb… ragelink 510 <span class="md-ellipsis">
2eca4eb… ragelink 511
2eca4eb… ragelink 512
2eca4eb… ragelink 513 Configuration
2eca4eb… ragelink 514
2eca4eb… ragelink 515
2eca4eb… ragelink 516
2eca4eb… ragelink 517 </span>
2eca4eb… ragelink 518
2eca4eb… ragelink 519
2eca4eb… ragelink 520
2eca4eb… ragelink 521 </a>
2eca4eb… ragelink 522
2eca4eb… ragelink 523
2eca4eb… ragelink 524
2eca4eb… ragelink 525 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 526
2eca4eb… ragelink 527
2eca4eb… ragelink 528
2eca4eb… ragelink 529
2eca4eb… ragelink 530
2eca4eb… ragelink 531
2eca4eb… ragelink 532 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 533 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 534 Table of contents
2eca4eb… ragelink 535 </label>
2eca4eb… ragelink 536 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 537
2eca4eb… ragelink 538 <li class="md-nav__item">
2eca4eb… ragelink 539 <a href="#environment-variables" class="md-nav__link">
2eca4eb… ragelink 540 <span class="md-ellipsis">
2eca4eb… ragelink 541
2eca4eb… ragelink 542 Environment Variables
2eca4eb… ragelink 543
2eca4eb… ragelink 544 </span>
2eca4eb… ragelink 545 </a>
2eca4eb… ragelink 546
2eca4eb… ragelink 547 <nav class="md-nav" aria-label="Environment Variables">
2eca4eb… ragelink 548 <ul class="md-nav__list">
2eca4eb… ragelink 549
2eca4eb… ragelink 550 <li class="md-nav__item">
2eca4eb… ragelink 551 <a href="#django-settings" class="md-nav__link">
2eca4eb… ragelink 552 <span class="md-ellipsis">
2eca4eb… ragelink 553
2eca4eb… ragelink 554 Django Settings
2eca4eb… ragelink 555
2eca4eb… ragelink 556 </span>
2eca4eb… ragelink 557 </a>
2eca4eb… ragelink 558
2eca4eb… ragelink 559 </li>
2eca4eb… ragelink 560
2eca4eb… ragelink 561 <li class="md-nav__item">
2eca4eb… ragelink 562 <a href="#database" class="md-nav__link">
2eca4eb… ragelink 563 <span class="md-ellipsis">
2eca4eb… ragelink 564
2eca4eb… ragelink 565 Database
2eca4eb… ragelink 566
2eca4eb… ragelink 567 </span>
2eca4eb… ragelink 568 </a>
2eca4eb… ragelink 569
2eca4eb… ragelink 570 </li>
2eca4eb… ragelink 571
2eca4eb… ragelink 572 <li class="md-nav__item">
2eca4eb… ragelink 573 <a href="#redis-celery" class="md-nav__link">
2eca4eb… ragelink 574 <span class="md-ellipsis">
2eca4eb… ragelink 575
2eca4eb… ragelink 576 Redis &amp; Celery
2eca4eb… ragelink 577
2eca4eb… ragelink 578 </span>
2eca4eb… ragelink 579 </a>
2eca4eb… ragelink 580
2eca4eb… ragelink 581 </li>
2eca4eb… ragelink 582
2eca4eb… ragelink 583 <li class="md-nav__item">
2eca4eb… ragelink 584 <a href="#fossil" class="md-nav__link">
2eca4eb… ragelink 585 <span class="md-ellipsis">
2eca4eb… ragelink 586
2eca4eb… ragelink 587 Fossil
2eca4eb… ragelink 588
2eca4eb… ragelink 589 </span>
2eca4eb… ragelink 590 </a>
2eca4eb… ragelink 591
2eca4eb… ragelink 592 </li>
2eca4eb… ragelink 593
2eca4eb… ragelink 594 <li class="md-nav__item">
2eca4eb… ragelink 595 <a href="#caddy-production" class="md-nav__link">
2eca4eb… ragelink 596 <span class="md-ellipsis">
2eca4eb… ragelink 597
2eca4eb… ragelink 598 Caddy (Production)
2eca4eb… ragelink 599
2eca4eb… ragelink 600 </span>
2eca4eb… ragelink 601 </a>
2eca4eb… ragelink 602
2eca4eb… ragelink 603 </li>
2eca4eb… ragelink 604
2eca4eb… ragelink 605 <li class="md-nav__item">
2eca4eb… ragelink 606 <a href="#litestream-backups" class="md-nav__link">
2eca4eb… ragelink 607 <span class="md-ellipsis">
2eca4eb… ragelink 608
2eca4eb… ragelink 609 Litestream (Backups)
2eca4eb… ragelink 610
2eca4eb… ragelink 611 </span>
2eca4eb… ragelink 612 </a>
2eca4eb… ragelink 613
2eca4eb… ragelink 614 </li>
2eca4eb… ragelink 615
2eca4eb… ragelink 616 <li class="md-nav__item">
2eca4eb… ragelink 617 <a href="#sync-bridge" class="md-nav__link">
2eca4eb… ragelink 618 <span class="md-ellipsis">
2eca4eb… ragelink 619
2eca4eb… ragelink 620 Sync Bridge
2eca4eb… ragelink 621
2eca4eb… ragelink 622 </span>
2eca4eb… ragelink 623 </a>
2eca4eb… ragelink 624
2eca4eb… ragelink 625 </li>
2eca4eb… ragelink 626
2eca4eb… ragelink 627 </ul>
2eca4eb… ragelink 628 </nav>
2eca4eb… ragelink 629
2eca4eb… ragelink 630 </li>
2eca4eb… ragelink 631
2eca4eb… ragelink 632 <li class="md-nav__item">
2eca4eb… ragelink 633 <a href="#caddy-configuration" class="md-nav__link">
2eca4eb… ragelink 634 <span class="md-ellipsis">
2eca4eb… ragelink 635
2eca4eb… ragelink 636 Caddy Configuration
2eca4eb… ragelink 637
2eca4eb… ragelink 638 </span>
2eca4eb… ragelink 639 </a>
2eca4eb… ragelink 640
2eca4eb… ragelink 641 </li>
2eca4eb… ragelink 642
2eca4eb… ragelink 643 <li class="md-nav__item">
2eca4eb… ragelink 644 <a href="#litestream-configuration" class="md-nav__link">
2eca4eb… ragelink 645 <span class="md-ellipsis">
2eca4eb… ragelink 646
2eca4eb… ragelink 647 Litestream Configuration
2eca4eb… ragelink 648
2eca4eb… ragelink 649 </span>
2eca4eb… ragelink 650 </a>
2eca4eb… ragelink 651
2eca4eb… ragelink 652 </li>
2eca4eb… ragelink 653
2eca4eb… ragelink 654 </ul>
2eca4eb… ragelink 655
2eca4eb… ragelink 656 </nav>
2eca4eb… ragelink 657
2eca4eb… ragelink 658 </li>
2eca4eb… ragelink 659
2eca4eb… ragelink 660
2eca4eb… ragelink 661
2eca4eb… ragelink 662
2eca4eb… ragelink 663
2eca4eb… ragelink 664
2eca4eb… ragelink 665
2eca4eb… ragelink 666
2eca4eb… ragelink 667
2eca4eb… ragelink 668
2eca4eb… ragelink 669 <li class="md-nav__item">
2eca4eb… ragelink 670 <a href="../first-repo/" class="md-nav__link">
2eca4eb… ragelink 671
2eca4eb… ragelink 672
2eca4eb… ragelink 673
2eca4eb… ragelink 674 <span class="md-ellipsis">
2eca4eb… ragelink 675
2eca4eb… ragelink 676
2eca4eb… ragelink 677 First Repository
2eca4eb… ragelink 678
2eca4eb… ragelink 679
2eca4eb… ragelink 680
2eca4eb… ragelink 681 </span>
2eca4eb… ragelink 682
2eca4eb… ragelink 683
2eca4eb… ragelink 684
2eca4eb… ragelink 685 </a>
2eca4eb… ragelink 686 </li>
2eca4eb… ragelink 687
2eca4eb… ragelink 688
2eca4eb… ragelink 689
2eca4eb… ragelink 690
2eca4eb… ragelink 691 </ul>
2eca4eb… ragelink 692 </nav>
2eca4eb… ragelink 693
2eca4eb… ragelink 694 </li>
2eca4eb… ragelink 695
2eca4eb… ragelink 696
2eca4eb… ragelink 697
2eca4eb… ragelink 698
2eca4eb… ragelink 699
2eca4eb… ragelink 700
2eca4eb… ragelink 701
2eca4eb… ragelink 702
2eca4eb… ragelink 703
2eca4eb… ragelink 704
2eca4eb… ragelink 705
2eca4eb… ragelink 706
2eca4eb… ragelink 707
2eca4eb… ragelink 708
2eca4eb… ragelink 709
2eca4eb… ragelink 710
2eca4eb… ragelink 711
2eca4eb… ragelink 712
2eca4eb… ragelink 713
2eca4eb… ragelink 714 <li class="md-nav__item md-nav__item--nested">
2eca4eb… ragelink 715
2eca4eb… ragelink 716
2eca4eb… ragelink 717
2eca4eb… ragelink 718
2eca4eb… ragelink 719
2eca4eb… ragelink 720 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
2eca4eb… ragelink 721
2eca4eb… ragelink 722
2eca4eb… ragelink 723 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
2eca4eb… ragelink 724
2eca4eb… ragelink 725
2eca4eb… ragelink 726
2eca4eb… ragelink 727 <span class="md-ellipsis">
2eca4eb… ragelink 728
2eca4eb… ragelink 729
2eca4eb… ragelink 730 Architecture
2eca4eb… ragelink 731
2eca4eb… ragelink 732
2eca4eb… ragelink 733
2eca4eb… ragelink 734 </span>
2eca4eb… ragelink 735
2eca4eb… ragelink 736
2eca4eb… ragelink 737
2eca4eb… ragelink 738 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 739 </label>
2eca4eb… ragelink 740
2eca4eb… ragelink 741 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
2eca4eb… ragelink 742 <label class="md-nav__title" for="__nav_3">
2eca4eb… ragelink 743 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 744
2eca4eb… ragelink 745
2eca4eb… ragelink 746 Architecture
2eca4eb… ragelink 747
2eca4eb… ragelink 748
2eca4eb… ragelink 749 </label>
2eca4eb… ragelink 750 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 751
2eca4eb… ragelink 752
2eca4eb… ragelink 753
2eca4eb… ragelink 754
2eca4eb… ragelink 755
2eca4eb… ragelink 756
2eca4eb… ragelink 757
2eca4eb… ragelink 758 <li class="md-nav__item">
2eca4eb… ragelink 759 <a href="../../architecture/overview/" class="md-nav__link">
2eca4eb… ragelink 760
2eca4eb… ragelink 761
2eca4eb… ragelink 762
2eca4eb… ragelink 763 <span class="md-ellipsis">
2eca4eb… ragelink 764
2eca4eb… ragelink 765
2eca4eb… ragelink 766 Overview
2eca4eb… ragelink 767
2eca4eb… ragelink 768
2eca4eb… ragelink 769
2eca4eb… ragelink 770 </span>
2eca4eb… ragelink 771
2eca4eb… ragelink 772
2eca4eb… ragelink 773
2eca4eb… ragelink 774 </a>
2eca4eb… ragelink 775 </li>
2eca4eb… ragelink 776
2eca4eb… ragelink 777
2eca4eb… ragelink 778
2eca4eb… ragelink 779
2eca4eb… ragelink 780
2eca4eb… ragelink 781
2eca4eb… ragelink 782
2eca4eb… ragelink 783
2eca4eb… ragelink 784
2eca4eb… ragelink 785
2eca4eb… ragelink 786 <li class="md-nav__item">
2eca4eb… ragelink 787 <a href="../../architecture/sync-bridge/" class="md-nav__link">
2eca4eb… ragelink 788
2eca4eb… ragelink 789
2eca4eb… ragelink 790
2eca4eb… ragelink 791 <span class="md-ellipsis">
2eca4eb… ragelink 792
2eca4eb… ragelink 793
2eca4eb… ragelink 794 Sync Bridge
2eca4eb… ragelink 795
2eca4eb… ragelink 796
2eca4eb… ragelink 797
2eca4eb… ragelink 798 </span>
2eca4eb… ragelink 799
2eca4eb… ragelink 800
2eca4eb… ragelink 801
2eca4eb… ragelink 802 </a>
2eca4eb… ragelink 803 </li>
2eca4eb… ragelink 804
2eca4eb… ragelink 805
2eca4eb… ragelink 806
2eca4eb… ragelink 807
2eca4eb… ragelink 808 </ul>
2eca4eb… ragelink 809 </nav>
2eca4eb… ragelink 810
2eca4eb… ragelink 811 </li>
2eca4eb… ragelink 812
2eca4eb… ragelink 813
2eca4eb… ragelink 814
2eca4eb… ragelink 815 </ul>
2eca4eb… ragelink 816 </nav>
2eca4eb… ragelink 817 </div>
2eca4eb… ragelink 818 </div>
2eca4eb… ragelink 819 </div>
2eca4eb… ragelink 820
2eca4eb… ragelink 821
2eca4eb… ragelink 822
2eca4eb… ragelink 823 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2eca4eb… ragelink 824 <div class="md-sidebar__scrollwrap">
2eca4eb… ragelink 825 <div class="md-sidebar__inner">
2eca4eb… ragelink 826
2eca4eb… ragelink 827
2eca4eb… ragelink 828 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 829
2eca4eb… ragelink 830
2eca4eb… ragelink 831
2eca4eb… ragelink 832
2eca4eb… ragelink 833
2eca4eb… ragelink 834
2eca4eb… ragelink 835 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 836 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 837 Table of contents
2eca4eb… ragelink 838 </label>
2eca4eb… ragelink 839 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 840
2eca4eb… ragelink 841 <li class="md-nav__item">
2eca4eb… ragelink 842 <a href="#environment-variables" class="md-nav__link">
2eca4eb… ragelink 843 <span class="md-ellipsis">
2eca4eb… ragelink 844
2eca4eb… ragelink 845 Environment Variables
2eca4eb… ragelink 846
2eca4eb… ragelink 847 </span>
2eca4eb… ragelink 848 </a>
2eca4eb… ragelink 849
2eca4eb… ragelink 850 <nav class="md-nav" aria-label="Environment Variables">
2eca4eb… ragelink 851 <ul class="md-nav__list">
2eca4eb… ragelink 852
2eca4eb… ragelink 853 <li class="md-nav__item">
2eca4eb… ragelink 854 <a href="#django-settings" class="md-nav__link">
2eca4eb… ragelink 855 <span class="md-ellipsis">
2eca4eb… ragelink 856
2eca4eb… ragelink 857 Django Settings
2eca4eb… ragelink 858
2eca4eb… ragelink 859 </span>
2eca4eb… ragelink 860 </a>
2eca4eb… ragelink 861
2eca4eb… ragelink 862 </li>
2eca4eb… ragelink 863
2eca4eb… ragelink 864 <li class="md-nav__item">
2eca4eb… ragelink 865 <a href="#database" class="md-nav__link">
2eca4eb… ragelink 866 <span class="md-ellipsis">
2eca4eb… ragelink 867
2eca4eb… ragelink 868 Database
2eca4eb… ragelink 869
2eca4eb… ragelink 870 </span>
2eca4eb… ragelink 871 </a>
2eca4eb… ragelink 872
2eca4eb… ragelink 873 </li>
2eca4eb… ragelink 874
2eca4eb… ragelink 875 <li class="md-nav__item">
2eca4eb… ragelink 876 <a href="#redis-celery" class="md-nav__link">
2eca4eb… ragelink 877 <span class="md-ellipsis">
2eca4eb… ragelink 878
2eca4eb… ragelink 879 Redis &amp; Celery
2eca4eb… ragelink 880
2eca4eb… ragelink 881 </span>
2eca4eb… ragelink 882 </a>
2eca4eb… ragelink 883
2eca4eb… ragelink 884 </li>
2eca4eb… ragelink 885
2eca4eb… ragelink 886 <li class="md-nav__item">
2eca4eb… ragelink 887 <a href="#fossil" class="md-nav__link">
2eca4eb… ragelink 888 <span class="md-ellipsis">
2eca4eb… ragelink 889
2eca4eb… ragelink 890 Fossil
2eca4eb… ragelink 891
2eca4eb… ragelink 892 </span>
2eca4eb… ragelink 893 </a>
2eca4eb… ragelink 894
2eca4eb… ragelink 895 </li>
2eca4eb… ragelink 896
2eca4eb… ragelink 897 <li class="md-nav__item">
2eca4eb… ragelink 898 <a href="#caddy-production" class="md-nav__link">
2eca4eb… ragelink 899 <span class="md-ellipsis">
2eca4eb… ragelink 900
2eca4eb… ragelink 901 Caddy (Production)
2eca4eb… ragelink 902
2eca4eb… ragelink 903 </span>
2eca4eb… ragelink 904 </a>
2eca4eb… ragelink 905
2eca4eb… ragelink 906 </li>
2eca4eb… ragelink 907
2eca4eb… ragelink 908 <li class="md-nav__item">
2eca4eb… ragelink 909 <a href="#litestream-backups" class="md-nav__link">
2eca4eb… ragelink 910 <span class="md-ellipsis">
2eca4eb… ragelink 911
2eca4eb… ragelink 912 Litestream (Backups)
2eca4eb… ragelink 913
2eca4eb… ragelink 914 </span>
2eca4eb… ragelink 915 </a>
2eca4eb… ragelink 916
2eca4eb… ragelink 917 </li>
2eca4eb… ragelink 918
2eca4eb… ragelink 919 <li class="md-nav__item">
2eca4eb… ragelink 920 <a href="#sync-bridge" class="md-nav__link">
2eca4eb… ragelink 921 <span class="md-ellipsis">
2eca4eb… ragelink 922
2eca4eb… ragelink 923 Sync Bridge
2eca4eb… ragelink 924
2eca4eb… ragelink 925 </span>
2eca4eb… ragelink 926 </a>
2eca4eb… ragelink 927
2eca4eb… ragelink 928 </li>
2eca4eb… ragelink 929
2eca4eb… ragelink 930 </ul>
2eca4eb… ragelink 931 </nav>
2eca4eb… ragelink 932
2eca4eb… ragelink 933 </li>
2eca4eb… ragelink 934
2eca4eb… ragelink 935 <li class="md-nav__item">
2eca4eb… ragelink 936 <a href="#caddy-configuration" class="md-nav__link">
2eca4eb… ragelink 937 <span class="md-ellipsis">
2eca4eb… ragelink 938
2eca4eb… ragelink 939 Caddy Configuration
2eca4eb… ragelink 940
2eca4eb… ragelink 941 </span>
2eca4eb… ragelink 942 </a>
2eca4eb… ragelink 943
2eca4eb… ragelink 944 </li>
2eca4eb… ragelink 945
2eca4eb… ragelink 946 <li class="md-nav__item">
2eca4eb… ragelink 947 <a href="#litestream-configuration" class="md-nav__link">
2eca4eb… ragelink 948 <span class="md-ellipsis">
2eca4eb… ragelink 949
2eca4eb… ragelink 950 Litestream Configuration
2eca4eb… ragelink 951
2eca4eb… ragelink 952 </span>
2eca4eb… ragelink 953 </a>
2eca4eb… ragelink 954
2eca4eb… ragelink 955 </li>
2eca4eb… ragelink 956
2eca4eb… ragelink 957 </ul>
2eca4eb… ragelink 958
2eca4eb… ragelink 959 </nav>
2eca4eb… ragelink 960 </div>
2eca4eb… ragelink 961 </div>
2eca4eb… ragelink 962 </div>
2eca4eb… ragelink 963
2eca4eb… ragelink 964
2eca4eb… ragelink 965
2eca4eb… ragelink 966 <div class="md-content" data-md-component="content">
2eca4eb… ragelink 967
2eca4eb… ragelink 968 <article class="md-content__inner md-typeset">
2eca4eb… ragelink 969
2eca4eb… ragelink 970
2eca4eb… ragelink 971
2eca4eb… ragelink 972
2eca4eb… ragelink 973
2eca4eb… ragelink 974
2eca4eb… ragelink 975
2eca4eb… ragelink 976
2eca4eb… ragelink 977 <h1 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">&para;</a></h1>
2eca4eb… ragelink 978 <h2 id="environment-variables">Environment Variables<a class="headerlink" href="#environment-variables" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 979 <p>All configuration is done through environment variables, loaded from <code>.env</code> in development.</p>
2eca4eb… ragelink 980 <h3 id="django-settings">Django Settings<a class="headerlink" href="#django-settings" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 981 <table>
2eca4eb… ragelink 982 <thead>
2eca4eb… ragelink 983 <tr>
2eca4eb… ragelink 984 <th>Variable</th>
2eca4eb… ragelink 985 <th>Default</th>
2eca4eb… ragelink 986 <th>Description</th>
2eca4eb… ragelink 987 </tr>
2eca4eb… ragelink 988 </thead>
2eca4eb… ragelink 989 <tbody>
2eca4eb… ragelink 990 <tr>
2eca4eb… ragelink 991 <td><code>SECRET_KEY</code></td>
2eca4eb… ragelink 992 <td>--</td>
2eca4eb… ragelink 993 <td>Django secret key (required)</td>
2eca4eb… ragelink 994 </tr>
2eca4eb… ragelink 995 <tr>
2eca4eb… ragelink 996 <td><code>DEBUG</code></td>
2eca4eb… ragelink 997 <td><code>False</code></td>
2eca4eb… ragelink 998 <td>Enable debug mode</td>
2eca4eb… ragelink 999 </tr>
2eca4eb… ragelink 1000 <tr>
2eca4eb… ragelink 1001 <td><code>ALLOWED_HOSTS</code></td>
2eca4eb… ragelink 1002 <td><code>localhost</code></td>
2eca4eb… ragelink 1003 <td>Comma-separated list of allowed hosts</td>
2eca4eb… ragelink 1004 </tr>
2eca4eb… ragelink 1005 <tr>
2eca4eb… ragelink 1006 <td><code>TIME_ZONE</code></td>
2eca4eb… ragelink 1007 <td><code>UTC</code></td>
2eca4eb… ragelink 1008 <td>Server timezone</td>
2eca4eb… ragelink 1009 </tr>
2eca4eb… ragelink 1010 </tbody>
2eca4eb… ragelink 1011 </table>
2eca4eb… ragelink 1012 <h3 id="database">Database<a class="headerlink" href="#database" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1013 <table>
2eca4eb… ragelink 1014 <thead>
2eca4eb… ragelink 1015 <tr>
2eca4eb… ragelink 1016 <th>Variable</th>
2eca4eb… ragelink 1017 <th>Default</th>
2eca4eb… ragelink 1018 <th>Description</th>
2eca4eb… ragelink 1019 </tr>
2eca4eb… ragelink 1020 </thead>
2eca4eb… ragelink 1021 <tbody>
2eca4eb… ragelink 1022 <tr>
2eca4eb… ragelink 1023 <td><code>POSTGRES_DB</code></td>
2eca4eb… ragelink 1024 <td><code>fossilrepo</code></td>
2eca4eb… ragelink 1025 <td>Database name</td>
2eca4eb… ragelink 1026 </tr>
2eca4eb… ragelink 1027 <tr>
2eca4eb… ragelink 1028 <td><code>POSTGRES_USER</code></td>
2eca4eb… ragelink 1029 <td><code>fossilrepo</code></td>
2eca4eb… ragelink 1030 <td>Database user</td>
2eca4eb… ragelink 1031 </tr>
2eca4eb… ragelink 1032 <tr>
2eca4eb… ragelink 1033 <td><code>POSTGRES_PASSWORD</code></td>
2eca4eb… ragelink 1034 <td>--</td>
2eca4eb… ragelink 1035 <td>Database password (required)</td>
2eca4eb… ragelink 1036 </tr>
2eca4eb… ragelink 1037 <tr>
2eca4eb… ragelink 1038 <td><code>POSTGRES_HOST</code></td>
2eca4eb… ragelink 1039 <td><code>postgres</code></td>
2eca4eb… ragelink 1040 <td>Database host</td>
2eca4eb… ragelink 1041 </tr>
2eca4eb… ragelink 1042 <tr>
2eca4eb… ragelink 1043 <td><code>POSTGRES_PORT</code></td>
2eca4eb… ragelink 1044 <td><code>5432</code></td>
2eca4eb… ragelink 1045 <td>Database port</td>
2eca4eb… ragelink 1046 </tr>
2eca4eb… ragelink 1047 </tbody>
2eca4eb… ragelink 1048 </table>
2eca4eb… ragelink 1049 <h3 id="redis-celery">Redis &amp; Celery<a class="headerlink" href="#redis-celery" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1050 <table>
2eca4eb… ragelink 1051 <thead>
2eca4eb… ragelink 1052 <tr>
2eca4eb… ragelink 1053 <th>Variable</th>
2eca4eb… ragelink 1054 <th>Default</th>
2eca4eb… ragelink 1055 <th>Description</th>
2eca4eb… ragelink 1056 </tr>
2eca4eb… ragelink 1057 </thead>
2eca4eb… ragelink 1058 <tbody>
2eca4eb… ragelink 1059 <tr>
2eca4eb… ragelink 1060 <td><code>REDIS_URL</code></td>
2eca4eb… ragelink 1061 <td><code>redis://redis:6379/0</code></td>
2eca4eb… ragelink 1062 <td>Redis connection URL</td>
2eca4eb… ragelink 1063 </tr>
2eca4eb… ragelink 1064 <tr>
2eca4eb… ragelink 1065 <td><code>CELERY_BROKER_URL</code></td>
2eca4eb… ragelink 1066 <td><code>$REDIS_URL</code></td>
2eca4eb… ragelink 1067 <td>Celery broker (defaults to Redis URL)</td>
2eca4eb… ragelink 1068 </tr>
2eca4eb… ragelink 1069 </tbody>
2eca4eb… ragelink 1070 </table>
2eca4eb… ragelink 1071 <h3 id="fossil">Fossil<a class="headerlink" href="#fossil" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1072 <table>
2eca4eb… ragelink 1073 <thead>
2eca4eb… ragelink 1074 <tr>
2eca4eb… ragelink 1075 <th>Variable</th>
2eca4eb… ragelink 1076 <th>Default</th>
2eca4eb… ragelink 1077 <th>Description</th>
2eca4eb… ragelink 1078 </tr>
2eca4eb… ragelink 1079 </thead>
2eca4eb… ragelink 1080 <tbody>
2eca4eb… ragelink 1081 <tr>
2eca4eb… ragelink 1082 <td><code>FOSSIL_REPO_DIR</code></td>
2eca4eb… ragelink 1083 <td><code>/data/repos</code></td>
2eca4eb… ragelink 1084 <td>Directory where <code>.fossil</code> files are stored</td>
2eca4eb… ragelink 1085 </tr>
2eca4eb… ragelink 1086 <tr>
2eca4eb… ragelink 1087 <td><code>FOSSIL_BASE_URL</code></td>
2eca4eb… ragelink 1088 <td>--</td>
2eca4eb… ragelink 1089 <td>Base URL for Fossil web UI (e.g., <code>https://code.example.com</code>)</td>
2eca4eb… ragelink 1090 </tr>
2eca4eb… ragelink 1091 <tr>
2eca4eb… ragelink 1092 <td><code>FOSSIL_BINARY</code></td>
2eca4eb… ragelink 1093 <td><code>fossil</code></td>
2eca4eb… ragelink 1094 <td>Path to the Fossil binary</td>
2eca4eb… ragelink 1095 </tr>
2eca4eb… ragelink 1096 </tbody>
2eca4eb… ragelink 1097 </table>
2eca4eb… ragelink 1098 <h3 id="caddy-production">Caddy (Production)<a class="headerlink" href="#caddy-production" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1099 <table>
2eca4eb… ragelink 1100 <thead>
2eca4eb… ragelink 1101 <tr>
2eca4eb… ragelink 1102 <th>Variable</th>
2eca4eb… ragelink 1103 <th>Default</th>
2eca4eb… ragelink 1104 <th>Description</th>
2eca4eb… ragelink 1105 </tr>
2eca4eb… ragelink 1106 </thead>
2eca4eb… ragelink 1107 <tbody>
2eca4eb… ragelink 1108 <tr>
2eca4eb… ragelink 1109 <td><code>CADDY_DOMAIN</code></td>
2eca4eb… ragelink 1110 <td>--</td>
2eca4eb… ragelink 1111 <td>Your domain (e.g., <code>example.com</code>)</td>
2eca4eb… ragelink 1112 </tr>
2eca4eb… ragelink 1113 <tr>
2eca4eb… ragelink 1114 <td><code>CADDY_EMAIL</code></td>
2eca4eb… ragelink 1115 <td>--</td>
2eca4eb… ragelink 1116 <td>Email for Let's Encrypt certificates</td>
2eca4eb… ragelink 1117 </tr>
2eca4eb… ragelink 1118 </tbody>
2eca4eb… ragelink 1119 </table>
2eca4eb… ragelink 1120 <h3 id="litestream-backups">Litestream (Backups)<a class="headerlink" href="#litestream-backups" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1121 <table>
2eca4eb… ragelink 1122 <thead>
2eca4eb… ragelink 1123 <tr>
2eca4eb… ragelink 1124 <th>Variable</th>
2eca4eb… ragelink 1125 <th>Default</th>
2eca4eb… ragelink 1126 <th>Description</th>
2eca4eb… ragelink 1127 </tr>
2eca4eb… ragelink 1128 </thead>
2eca4eb… ragelink 1129 <tbody>
2eca4eb… ragelink 1130 <tr>
2eca4eb… ragelink 1131 <td><code>LITESTREAM_ACCESS_KEY_ID</code></td>
2eca4eb… ragelink 1132 <td>--</td>
2eca4eb… ragelink 1133 <td>S3 access key</td>
2eca4eb… ragelink 1134 </tr>
2eca4eb… ragelink 1135 <tr>
2eca4eb… ragelink 1136 <td><code>LITESTREAM_SECRET_ACCESS_KEY</code></td>
2eca4eb… ragelink 1137 <td>--</td>
2eca4eb… ragelink 1138 <td>S3 secret key</td>
2eca4eb… ragelink 1139 </tr>
2eca4eb… ragelink 1140 <tr>
2eca4eb… ragelink 1141 <td><code>LITESTREAM_BUCKET</code></td>
2eca4eb… ragelink 1142 <td>--</td>
2eca4eb… ragelink 1143 <td>S3 bucket name</td>
2eca4eb… ragelink 1144 </tr>
2eca4eb… ragelink 1145 <tr>
2eca4eb… ragelink 1146 <td><code>LITESTREAM_ENDPOINT</code></td>
2eca4eb… ragelink 1147 <td>--</td>
2eca4eb… ragelink 1148 <td>S3 endpoint (for MinIO/B2)</td>
2eca4eb… ragelink 1149 </tr>
2eca4eb… ragelink 1150 <tr>
2eca4eb… ragelink 1151 <td><code>LITESTREAM_REGION</code></td>
2eca4eb… ragelink 1152 <td><code>us-east-1</code></td>
2eca4eb… ragelink 1153 <td>S3 region</td>
2eca4eb… ragelink 1154 </tr>
2eca4eb… ragelink 1155 </tbody>
2eca4eb… ragelink 1156 </table>
2eca4eb… ragelink 1157 <h3 id="sync-bridge">Sync Bridge<a class="headerlink" href="#sync-bridge" title="Permanent link">&para;</a></h3>
2eca4eb… ragelink 1158 <table>
2eca4eb… ragelink 1159 <thead>
2eca4eb… ragelink 1160 <tr>
2eca4eb… ragelink 1161 <th>Variable</th>
2eca4eb… ragelink 1162 <th>Default</th>
2eca4eb… ragelink 1163 <th>Description</th>
2eca4eb… ragelink 1164 </tr>
2eca4eb… ragelink 1165 </thead>
2eca4eb… ragelink 1166 <tbody>
2eca4eb… ragelink 1167 <tr>
2eca4eb… ragelink 1168 <td><code>GITHUB_TOKEN</code></td>
2eca4eb… ragelink 1169 <td>--</td>
2eca4eb… ragelink 1170 <td>GitHub personal access token (for mirroring)</td>
2eca4eb… ragelink 1171 </tr>
2eca4eb… ragelink 1172 <tr>
2eca4eb… ragelink 1173 <td><code>GITLAB_TOKEN</code></td>
2eca4eb… ragelink 1174 <td>--</td>
2eca4eb… ragelink 1175 <td>GitLab personal access token (for mirroring)</td>
2eca4eb… ragelink 1176 </tr>
2eca4eb… ragelink 1177 </tbody>
2eca4eb… ragelink 1178 </table>
2eca4eb… ragelink 1179 <h2 id="caddy-configuration">Caddy Configuration<a class="headerlink" href="#caddy-configuration" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 1180 <p>The Caddyfile controls SSL termination and subdomain routing. Each Fossil repo gets its own subdomain:</p>
2eca4eb… ragelink 1181 <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>{$CADDY_DOMAIN} {
2eca4eb… ragelink 1182 <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> reverse_proxy django:8000
2eca4eb… ragelink 1183 <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>}
2eca4eb… ragelink 1184 <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
2eca4eb… ragelink 1185 <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>*.{$CADDY_DOMAIN} {
2eca4eb… ragelink 1186 <a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> reverse_proxy fossil:8080
2eca4eb… ragelink 1187 <a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>}
2eca4eb… ragelink 1188 </code></pre></div>
2eca4eb… ragelink 1189 <p>Caddy automatically provisions Let's Encrypt certificates for all subdomains.</p>
2eca4eb… ragelink 1190 <h2 id="litestream-configuration">Litestream Configuration<a class="headerlink" href="#litestream-configuration" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 1191 <p>Litestream continuously replicates every <code>.fossil</code> SQLite file to S3:</p>
2eca4eb… ragelink 1192 <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">dbs</span><span class="p">:</span>
2eca4eb… ragelink 1193 <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/data/repos/*.fossil</span>
2eca4eb… ragelink 1194 <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="nt">replicas</span><span class="p">:</span>
2eca4eb… ragelink 1195 <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">s3</span>
2eca4eb… ragelink 1196 <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="nt">bucket</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${LITESTREAM_BUCKET}</span>
2eca4eb… ragelink 1197 <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="nt">endpoint</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${LITESTREAM_ENDPOINT}</span>
2eca4eb… ragelink 1198 <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="nt">region</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${LITESTREAM_REGION}</span>
2eca4eb… ragelink 1199 </code></pre></div>
2eca4eb… ragelink 1200 <div class="admonition tip">
2eca4eb… ragelink 1201 <p class="admonition-title">Point-in-time recovery</p>
2eca4eb… ragelink 1202 <p>Litestream replicates WAL frames continuously. You can restore any <code>.fossil</code> file to any point in time, not just the latest snapshot.</p>
2eca4eb… ragelink 1203 </div>
2eca4eb… ragelink 1204
2eca4eb… ragelink 1205
2eca4eb… ragelink 1206
2eca4eb… ragelink 1207
2eca4eb… ragelink 1208
2eca4eb… ragelink 1209
2eca4eb… ragelink 1210
2eca4eb… ragelink 1211
2eca4eb… ragelink 1212
2eca4eb… ragelink 1213
2eca4eb… ragelink 1214
2eca4eb… ragelink 1215
2eca4eb… ragelink 1216
2eca4eb… ragelink 1217 </article>
2eca4eb… ragelink 1218 </div>
2eca4eb… ragelink 1219
2eca4eb… ragelink 1220
2eca4eb… ragelink 1221 <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 1222
2eca4eb… ragelink 1223 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2eca4eb… ragelink 1224 </div>
2eca4eb… ragelink 1225
2eca4eb… ragelink 1226 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2eca4eb… ragelink 1227
2eca4eb… ragelink 1228 <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 1229 Back to top
2eca4eb… ragelink 1230 </button>
2eca4eb… ragelink 1231
2eca4eb… ragelink 1232 </main>
2eca4eb… ragelink 1233
2eca4eb… ragelink 1234 <footer class="md-footer">
2eca4eb… ragelink 1235
2eca4eb… ragelink 1236 <div class="md-footer-meta md-typeset">
2eca4eb… ragelink 1237 <div class="md-footer-meta__inner md-grid">
2eca4eb… ragelink 1238 <div class="md-copyright">
2eca4eb… ragelink 1239
2eca4eb… ragelink 1240 <div class="md-copyright__highlight">
2eca4eb… ragelink 1241 Copyright &copy; 2026 CONFLICT LLC
2eca4eb… ragelink 1242 </div>
2eca4eb… ragelink 1243
2eca4eb… ragelink 1244
2eca4eb… ragelink 1245 Made with
2eca4eb… ragelink 1246 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2eca4eb… ragelink 1247 Material for MkDocs
2eca4eb… ragelink 1248 </a>
2eca4eb… ragelink 1249
2eca4eb… ragelink 1250 </div>
2eca4eb… ragelink 1251
2eca4eb… ragelink 1252
2eca4eb… ragelink 1253 <div class="md-social">
2eca4eb… ragelink 1254
2eca4eb… ragelink 1255
2eca4eb… ragelink 1256
2eca4eb… ragelink 1257
2eca4eb… ragelink 1258
2eca4eb… ragelink 1259
2eca4eb… ragelink 1260
2eca4eb… ragelink 1261
2eca4eb… ragelink 1262 <a href="https://github.com/ConflictHQ/fossilrepo" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2eca4eb… ragelink 1263 <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 1264 </a>
2eca4eb… ragelink 1265
2eca4eb… ragelink 1266 </div>
2eca4eb… ragelink 1267
2eca4eb… ragelink 1268 </div>
2eca4eb… ragelink 1269 </div>
2eca4eb… ragelink 1270 </footer>
2eca4eb… ragelink 1271
2eca4eb… ragelink 1272 </div>
2eca4eb… ragelink 1273 <div class="md-dialog" data-md-component="dialog">
2eca4eb… ragelink 1274 <div class="md-dialog__inner md-typeset"></div>
2eca4eb… ragelink 1275 </div>
2eca4eb… ragelink 1276
2eca4eb… ragelink 1277
2eca4eb… ragelink 1278
2eca4eb… ragelink 1279
2eca4eb… ragelink 1280
2eca4eb… ragelink 1281 <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 1282
2eca4eb… ragelink 1283
2eca4eb… ragelink 1284 <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2eca4eb… ragelink 1285
2eca4eb… ragelink 1286
2eca4eb… ragelink 1287 </body>
2eca4eb… ragelink 1288 </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