[{"data":1,"prerenderedAt":368},["ShallowReactive",2],{"navigation_docs_en":3,"-en-self-hosting-overview":123,"-en-self-hosting-overview-surround":363},[4,36,107],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":35},"Getting started","i-lucide-rocket","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"What is Chronicler","\u002Fen\u002Fgetting-started\u002Fwhat-is-chronicler","en\u002F1.getting-started\u002F1.what-is-chronicler","i-lucide-help-circle",{"title":16,"path":17,"stem":18,"icon":19},"Install the app","\u002Fen\u002Fgetting-started\u002Finstall-the-app","en\u002F1.getting-started\u002F2.install-the-app","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Cloud quick start","\u002Fen\u002Fgetting-started\u002Fcloud-quickstart","en\u002F1.getting-started\u002F3.cloud-quickstart","i-lucide-cloud",{"title":26,"path":27,"stem":28,"icon":29},"Your first chat","\u002Fen\u002Fgetting-started\u002Fyour-first-chat","en\u002F1.getting-started\u002F4.your-first-chat","i-lucide-messages-square",{"title":31,"path":32,"stem":33,"icon":34},"Managing users","\u002Fen\u002Fgetting-started\u002Fmanaging-users","en\u002F1.getting-started\u002F5.managing-users","i-lucide-users",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Self-hosting","i-lucide-server","\u002Fen\u002Fself-hosting","en\u002F2.self-hosting",[42,47,52,57,62,67,72,77,82,87,92,97,102],{"title":43,"path":44,"stem":45,"icon":46},"Overview","\u002Fen\u002Fself-hosting\u002Foverview","en\u002F2.self-hosting\u002F1.overview","i-lucide-layout-dashboard",{"title":48,"path":49,"stem":50,"icon":51},"Backups and restore","\u002Fen\u002Fself-hosting\u002Fbackups","en\u002F2.self-hosting\u002F10.backups","i-lucide-database-backup",{"title":53,"path":54,"stem":55,"icon":56},"Updating","\u002Fen\u002Fself-hosting\u002Fupdating","en\u002F2.self-hosting\u002F11.updating","i-lucide-refresh-cw",{"title":58,"path":59,"stem":60,"icon":61},"Security and networking","\u002Fen\u002Fself-hosting\u002Fsecurity-and-networking","en\u002F2.self-hosting\u002F12.security-and-networking","i-lucide-shield",{"title":63,"path":64,"stem":65,"icon":66},"Troubleshooting","\u002Fen\u002Fself-hosting\u002Ftroubleshooting","en\u002F2.self-hosting\u002F13.troubleshooting","i-lucide-life-buoy",{"title":68,"path":69,"stem":70,"icon":71},"Requirements","\u002Fen\u002Fself-hosting\u002Frequirements","en\u002F2.self-hosting\u002F2.requirements","i-lucide-cpu",{"title":73,"path":74,"stem":75,"icon":76},"Quick start (guided)","\u002Fen\u002Fself-hosting\u002Fquick-start","en\u002F2.self-hosting\u002F3.quick-start","i-lucide-wand-2",{"title":78,"path":79,"stem":80,"icon":81},"Manual install","\u002Fen\u002Fself-hosting\u002Fmanual-install","en\u002F2.self-hosting\u002F4.manual-install","i-lucide-terminal",{"title":83,"path":84,"stem":85,"icon":86},"GPU acceleration","\u002Fen\u002Fself-hosting\u002Fgpu-acceleration","en\u002F2.self-hosting\u002F5.gpu-acceleration","i-lucide-zap",{"title":88,"path":89,"stem":90,"icon":91},"Performance and memory","\u002Fen\u002Fself-hosting\u002Fperformance-and-memory","en\u002F2.self-hosting\u002F6.performance-and-memory","i-lucide-gauge",{"title":93,"path":94,"stem":95,"icon":96},"Configuration reference","\u002Fen\u002Fself-hosting\u002Fconfiguration-reference","en\u002F2.self-hosting\u002F7.configuration-reference","i-lucide-sliders-horizontal",{"title":98,"path":99,"stem":100,"icon":101},"Models","\u002Fen\u002Fself-hosting\u002Fmodels","en\u002F2.self-hosting\u002F8.models","i-lucide-brain",{"title":103,"path":104,"stem":105,"icon":106},"Licensing and activation","\u002Fen\u002Fself-hosting\u002Flicensing","en\u002F2.self-hosting\u002F9.licensing","i-lucide-key-round",{"title":108,"icon":109,"path":110,"stem":111,"children":112,"page":35},"Reference","i-lucide-book-open","\u002Fen\u002Freference","en\u002F3.reference",[113,118],{"title":114,"path":115,"stem":116,"icon":117},"How it works","\u002Fen\u002Freference\u002Fhow-it-works","en\u002F3.reference\u002F1.how-it-works","i-lucide-workflow",{"title":119,"path":120,"stem":121,"icon":122},"Data and privacy","\u002Fen\u002Freference\u002Fdata-and-privacy","en\u002F3.reference\u002F2.data-and-privacy","i-lucide-lock",{"id":124,"title":43,"body":125,"description":354,"extension":355,"links":356,"meta":357,"navigation":358,"path":44,"seo":359,"stem":45,"__hash__":362},"docs_en\u002Fen\u002F2.self-hosting\u002F1.overview.md",{"type":126,"value":127,"toc":347},"minimark",[128,132,137,148,229,244,248,251,254,280,283,287,290,314,319,323,342],[129,130,131],"p",{},"Self-hosting means you run the Chronicler server. It is a Docker stack of four\ncontainers, started with one command, on one machine.",[133,134,136],"h2",{"id":135},"what-runs","What runs",[138,139,144],"pre",{"className":140,"code":142,"language":143},[141],"language-text","              ┌──────────────────────────────────────────────┐\n   Chronicler │  backend        FastAPI, port 8410           │\n   app on any │    ├── postgres  documents + search index    │\n   PC on the  │    └── ollama    writes the answers          │\n   network ──►│  (+ ollama-pull, a one-shot model download)  │\n              └──────────────────────────────────────────────┘\n                          one Docker stack, one machine\n","text",[145,146,142],"code",{"__ignoreMap":147},"",[149,150,151,167],"table",{},[152,153,154],"thead",{},[155,156,157,161,164],"tr",{},[158,159,160],"th",{},"Container",[158,162,163],{},"What it does",[158,165,166],{},"Port",[168,169,170,186,201,216],"tbody",{},[155,171,172,178,181],{},[173,174,175],"td",{},[145,176,177],{},"chronicler-backend",[173,179,180],{},"The API the app talks to. Extracts text, runs OCR, builds the search index, answers requests.",[173,182,183],{},[145,184,185],{},"8410",[155,187,188,193,196],{},[173,189,190],{},[145,191,192],{},"chronicler-postgres",[173,194,195],{},"Stores documents, accounts and the search index. There is no separate search database.",[173,197,198],{},[145,199,200],{},"5432",[155,202,203,208,211],{},[173,204,205],{},[145,206,207],{},"chronicler-ollama",[173,209,210],{},"Runs the language model that writes answers, on your CPU or GPU.",[173,212,213],{},[145,214,215],{},"11434",[155,217,218,223,226],{},[173,219,220],{},[145,221,222],{},"chronicler-ollama-pull",[173,224,225],{},"Runs once at startup to download the model, then exits. Seeing it \"exited\" is normal.",[173,227,228],{},"—",[129,230,231,232,235,236,239,240,243],{},"Your documents live in a Docker volume (",[145,233,234],{},"backend_uploads","), the database in\n",[145,237,238],{},"postgres_data",", and the downloaded models in ",[145,241,242],{},"ollama_data",". Those three volumes\nare the install. Everything else can be thrown away and recreated.",[133,245,247],{"id":246},"what-leaves-the-machine","What leaves the machine",[129,249,250],{},"Nothing about your documents. Text extraction, OCR, indexing and answer\ngeneration all happen in the containers above.",[129,252,253],{},"The server does make two kinds of outbound connection:",[255,256,257,274],"ul",{},[258,259,260,264,265,268,269,273],"li",{},[261,262,263],"strong",{},"Licence checks"," to ",[145,266,267],{},"api.chroniclerlm.com",", every 30 minutes. It sends the\nlicence key and an install identifier — no document content. See\n",[270,271,272],"a",{"href":104},"Licensing",".",[258,275,276,279],{},[261,277,278],{},"Downloads"," from Docker Hub and GitHub, when you install or update.",[129,281,282],{},"There is no telemetry beyond that.",[133,284,286],{"id":285},"what-you-can-and-cant-configure","What you can and can't configure",[129,288,289],{},"Most of the server's behaviour is fixed in the image on purpose — that's what\nmakes a self-hosted install predictable, and what keeps the security-relevant\nsettings out of reach of an accidental edit.",[255,291,292,298,308],{},[258,293,294,297],{},[261,295,296],{},"From the admin console:"," the generation model, where embedding runs, disk\nallocation, backup schedule, licence key, update checks, users.",[258,299,300,307],{},[261,301,302,303,306],{},"From the ",[145,304,305],{},".env"," file next to the compose file:"," the database password, GPU\nprofile, ports, image versions, memory and performance knobs.",[258,309,310,313],{},[261,311,312],{},"Not configurable:"," the realm (this server is always a single organisation),\nsign-up policy (always admin-provisioned), licence enforcement, the embedding\nmodel, and the internal service URLs.",[129,315,316,317,273],{},"Full list: ",[270,318,93],{"href":94},[133,320,322],{"id":321},"two-ways-to-install","Two ways to install",[324,325,326,331],"card-group",{},[327,328,330],"card",{"icon":76,"title":329,"to":74},"Guided","The desktop app writes the compose file, generates a database password and\ndetects your GPU. Best on a normal PC.",[327,332,334,335,337,338,341],{"icon":81,"title":333,"to":79},"Manual","Download the compose file, write the ",[145,336,305],{}," yourself, ",[145,339,340],{},"docker compose up -d",".\nRequired for a headless server.",[129,343,344,345,273],{},"Before either, check ",[270,346,68],{"href":69},{"title":147,"searchDepth":348,"depth":348,"links":349},2,[350,351,352,353],{"id":135,"depth":348,"text":136},{"id":246,"depth":348,"text":247},{"id":285,"depth":348,"text":286},{"id":321,"depth":348,"text":322},"What the self-hosted stack is made of, what runs where, and what leaves the machine.","md",null,{},{"icon":46},{"title":360,"description":361},"Chronicler self-hosting overview","The four containers in the Chronicler self-hosted stack, the ports they use, and what data leaves the machine.","LqrghqEcWt35U74lOUuTIlki4rcMH2DHPRd9mWXxgtc",[364,366],{"title":31,"path":32,"stem":33,"description":365,"icon":34,"children":-1},"Roles, adding accounts, access requests and the audit log.",{"title":48,"path":49,"stem":50,"description":367,"icon":51,"children":-1},"Scheduled backups, an offsite copy, and how to get your data back.",1785092107271]