[{"data":1,"prerenderedAt":1351},["ShallowReactive",2],{"navigation_docs_en":3,"-en-self-hosting-operations-and-security-troubleshooting":143,"-en-self-hosting-operations-and-security-troubleshooting-surround":1346},[4,103,124],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Self-hosting","i-lucide-server","\u002Fen\u002Fself-hosting","en\u002F1.self-hosting",[10,37,57,77],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":36},"Getting started","i-lucide-rocket","\u002Fen\u002Fself-hosting\u002Fgetting-started","en\u002F1.self-hosting\u002F1.getting-started",[16,21,26,31],{"title":17,"path":18,"stem":19,"icon":20},"Quick start (guided)","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Fquick-start","en\u002F1.self-hosting\u002F1.getting-started\u002F1.quick-start","i-lucide-wand-2",{"title":22,"path":23,"stem":24,"icon":25},"Overview","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Foverview","en\u002F1.self-hosting\u002F1.getting-started\u002F2.overview","i-lucide-layout-dashboard",{"title":27,"path":28,"stem":29,"icon":30},"Requirements","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Frequirements","en\u002F1.self-hosting\u002F1.getting-started\u002F3.requirements","i-lucide-cpu",{"title":32,"path":33,"stem":34,"icon":35},"Manual install","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Fmanual-install","en\u002F1.self-hosting\u002F1.getting-started\u002F4.manual-install","i-lucide-terminal",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Performance & models","i-lucide-gauge","\u002Fen\u002Fself-hosting\u002Fperformance-and-models","en\u002F1.self-hosting\u002F2.performance-and-models",[43,48,52],{"title":44,"path":45,"stem":46,"icon":47},"GPU acceleration","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fgpu-acceleration","en\u002F1.self-hosting\u002F2.performance-and-models\u002F1.gpu-acceleration","i-lucide-zap",{"title":49,"path":50,"stem":51,"icon":39},"Performance and memory","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fperformance-and-memory","en\u002F1.self-hosting\u002F2.performance-and-models\u002F2.performance-and-memory",{"title":53,"path":54,"stem":55,"icon":56},"Models","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fmodels","en\u002F1.self-hosting\u002F2.performance-and-models\u002F3.models","i-lucide-brain",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":36},"Configuration & access","i-lucide-sliders-horizontal","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access","en\u002F1.self-hosting\u002F3.configuration-and-access",[63,67,72],{"title":64,"path":65,"stem":66,"icon":59},"Configuration reference","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Fconfiguration-reference","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F1.configuration-reference",{"title":68,"path":69,"stem":70,"icon":71},"Licensing and activation","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Flicensing","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F2.licensing","i-lucide-key-round",{"title":73,"path":74,"stem":75,"icon":76},"Managing users","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Fmanaging-users","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F3.managing-users","i-lucide-users",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":36},"Operations & security","i-lucide-shield-check","\u002Fen\u002Fself-hosting\u002Foperations-and-security","en\u002F1.self-hosting\u002F4.operations-and-security",[83,88,93,98],{"title":84,"path":85,"stem":86,"icon":87},"Backups and restore","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fbackups","en\u002F1.self-hosting\u002F4.operations-and-security\u002F1.backups","i-lucide-database-backup",{"title":89,"path":90,"stem":91,"icon":92},"Updating","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fupdating","en\u002F1.self-hosting\u002F4.operations-and-security\u002F2.updating","i-lucide-refresh-cw",{"title":94,"path":95,"stem":96,"icon":97},"Security and networking","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fsecurity-and-networking","en\u002F1.self-hosting\u002F4.operations-and-security\u002F3.security-and-networking","i-lucide-shield",{"title":99,"path":100,"stem":101,"icon":102},"Troubleshooting","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Ftroubleshooting","en\u002F1.self-hosting\u002F4.operations-and-security\u002F4.troubleshooting","i-lucide-life-buoy",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":36},"App & reference","i-lucide-book-open-text","\u002Fen\u002Freference","en\u002F2.reference",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Install the app","\u002Fen\u002Freference\u002Finstall-the-app","en\u002F2.reference\u002F1.install-the-app","i-lucide-download",{"title":115,"path":116,"stem":117,"icon":118},"How it works","\u002Fen\u002Freference\u002Fhow-it-works","en\u002F2.reference\u002F2.how-it-works","i-lucide-workflow",{"title":120,"path":121,"stem":122,"icon":123},"Data and privacy","\u002Fen\u002Freference\u002Fdata-and-privacy","en\u002F2.reference\u002F3.data-and-privacy","i-lucide-lock",{"title":125,"icon":126,"path":127,"stem":128,"children":129,"page":36},"Chronicler Cloud","i-lucide-cloud","\u002Fen\u002Fcloud","en\u002F3.cloud",[130,134,138],{"title":131,"path":132,"stem":133,"icon":126},"Cloud overview","\u002Fen\u002Fcloud\u002Foverview","en\u002F3.cloud\u002F1.overview",{"title":135,"path":136,"stem":137,"icon":12},"Quick start","\u002Fen\u002Fcloud\u002Fquick-start","en\u002F3.cloud\u002F2.quick-start",{"title":139,"path":140,"stem":141,"icon":142},"Your first chat","\u002Fen\u002Fcloud\u002Fyour-first-chat","en\u002F3.cloud\u002F3.your-first-chat","i-lucide-messages-square",{"id":144,"title":99,"body":145,"description":1337,"extension":1338,"links":1339,"meta":1340,"navigation":1341,"path":100,"seo":1342,"stem":101,"__hash__":1345},"docs_en\u002Fen\u002F1.self-hosting\u002F4.operations-and-security\u002F4.troubleshooting.md",{"type":146,"value":147,"toc":1308},"minimark",[148,153,240,265,269,276,283,363,374,380,383,422,425,442,448,454,457,461,467,473,503,525,529,532,584,587,622,626,633,657,664,668,672,679,693,697,700,751,757,761,770,808,842,845,849,856,860,955,959,962,1009,1019,1023,1055,1058,1107,1125,1129,1136,1140,1143,1188,1191,1195,1297,1304],[149,150,152],"h2",{"id":151},"first-look","First, look",[154,155,156,192],"tabs",{},[157,158,161],"tabs-item",{"icon":159,"label":160},"i-lucide-monitor","Windows (PowerShell)",[162,163,169],"pre",{"className":164,"code":165,"filename":166,"language":167,"meta":168,"style":168},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker compose ps\ndocker compose logs --tail 100\nInvoke-RestMethod http:\u002F\u002Flocalhost:8410\u002Fhealth\n","PowerShell","powershell","",[170,171,172,180,186],"code",{"__ignoreMap":168},[173,174,177],"span",{"class":175,"line":176},"line",1,[173,178,179],{},"docker compose ps\n",[173,181,183],{"class":175,"line":182},2,[173,184,185],{},"docker compose logs --tail 100\n",[173,187,189],{"class":175,"line":188},3,[173,190,191],{},"Invoke-RestMethod http:\u002F\u002Flocalhost:8410\u002Fhealth\n",[157,193,195],{"icon":35,"label":194},"Linux",[162,196,201],{"className":197,"code":198,"filename":199,"language":200,"meta":168,"style":168},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker compose ps\ndocker compose logs --tail 100\ncurl http:\u002F\u002Flocalhost:8410\u002Fhealth\n","Linux shell","bash",[170,202,203,216,232],{"__ignoreMap":168},[173,204,205,209,213],{"class":175,"line":176},[173,206,208],{"class":207},"sBMFI","docker",[173,210,212],{"class":211},"sfazB"," compose",[173,214,215],{"class":211}," ps\n",[173,217,218,220,222,225,228],{"class":175,"line":182},[173,219,208],{"class":207},[173,221,212],{"class":211},[173,223,224],{"class":211}," logs",[173,226,227],{"class":211}," --tail",[173,229,231],{"class":230},"sbssI"," 100\n",[173,233,234,237],{"class":175,"line":188},[173,235,236],{"class":207},"curl",[173,238,239],{"class":211}," http:\u002F\u002Flocalhost:8410\u002Fhealth\n",[241,242,243,244,247,248,251,252,255,256,259,260,264],"p",{},"Healthy looks like ",[170,245,246],{},"chronicler-postgres",", ",[170,249,250],{},"chronicler-ollama"," and\n",[170,253,254],{},"chronicler-backend"," up, and ",[170,257,258],{},"chronicler-ollama-pull"," ",[261,262,263],"strong",{},"exited"," - that last one\ndownloads the model and stops, which is correct.",[149,266,268],{"id":267},"the-stack-wont-start","The stack won't start",[270,271,273],"h3",{"id":272},"postgres_password-is-missing-a-value",[170,274,275],{},"POSTGRES_PASSWORD is missing a value",[241,277,278,279,282],{},"There's no ",[170,280,281],{},".env"," next to the compose file, or it doesn't contain that line.\nCompose refuses to start rather than shipping a guessable default.",[154,284,285,307],{},[157,286,287],{"icon":159,"label":160},[162,288,290],{"className":164,"code":289,"filename":166,"language":167,"meta":168,"style":168},"\"POSTGRES_PASSWORD=$([guid]::NewGuid().ToString('N'))`nCOMPOSE_PROFILES=cpu\" |\n  Out-File -Encoding ascii .env\ndocker compose up -d\n",[170,291,292,297,302],{"__ignoreMap":168},[173,293,294],{"class":175,"line":176},[173,295,296],{},"\"POSTGRES_PASSWORD=$([guid]::NewGuid().ToString('N'))`nCOMPOSE_PROFILES=cpu\" |\n",[173,298,299],{"class":175,"line":182},[173,300,301],{},"  Out-File -Encoding ascii .env\n",[173,303,304],{"class":175,"line":188},[173,305,306],{},"docker compose up -d\n",[157,308,309],{"icon":35,"label":194},[162,310,312],{"className":197,"code":311,"filename":199,"language":200,"meta":168,"style":168},"printf 'POSTGRES_PASSWORD=%s\\nCOMPOSE_PROFILES=cpu\\n' \"$(openssl rand -hex 24)\" > .env\ndocker compose up -d\n",[170,313,314,351],{"__ignoreMap":168},[173,315,316,320,324,327,330,333,336,339,342,345,348],{"class":175,"line":176},[173,317,319],{"class":318},"s2Zo4","printf",[173,321,323],{"class":322},"sMK4o"," '",[173,325,326],{"class":211},"POSTGRES_PASSWORD=%s\\nCOMPOSE_PROFILES=cpu\\n",[173,328,329],{"class":322},"'",[173,331,332],{"class":322}," \"$(",[173,334,335],{"class":207},"openssl",[173,337,338],{"class":211}," rand -hex ",[173,340,341],{"class":230},"24",[173,343,344],{"class":322},")\"",[173,346,347],{"class":322}," >",[173,349,350],{"class":211}," .env\n",[173,352,353,355,357,360],{"class":175,"line":182},[173,354,208],{"class":207},[173,356,212],{"class":211},[173,358,359],{"class":211}," up",[173,361,362],{"class":211}," -d\n",[364,365,366,367,370,371,373],"caution",{},"If the stack has run before, the ",[261,368,369],{},"existing"," password is the only key to the\ndatabase volume. Don't generate a new one - find the original ",[170,372,281],{},".",[270,375,377],{"id":376},"port-is-already-allocated",[170,378,379],{},"port is already allocated",[241,381,382],{},"Something else has 8410, 11434 or 5432 - often an older Chronicler stack.",[154,384,385,396],{},[157,386,387],{"icon":159,"label":160},[162,388,390],{"className":164,"code":389,"filename":166,"language":167,"meta":168,"style":168},"docker ps -a | Select-String \"chronicler\"\n",[170,391,392],{"__ignoreMap":168},[173,393,394],{"class":175,"line":176},[173,395,389],{},[157,397,398],{"icon":35,"label":194},[162,399,401],{"className":197,"code":400,"filename":199,"language":200,"meta":168,"style":168},"docker ps -a | grep chronicler\n",[170,402,403],{"__ignoreMap":168},[173,404,405,407,410,413,416,419],{"class":175,"line":176},[173,406,208],{"class":207},[173,408,409],{"class":211}," ps",[173,411,412],{"class":211}," -a",[173,414,415],{"class":322}," |",[173,417,418],{"class":207}," grep",[173,420,421],{"class":211}," chronicler\n",[241,423,424],{},"Either stop the other thing, or move Chronicler:",[162,426,428],{"className":197,"code":427,"filename":281,"language":200,"meta":168,"style":168},"BACKEND_PORT=8411\n",[170,429,430],{"__ignoreMap":168},[173,431,432,436,439],{"class":175,"line":176},[173,433,435],{"class":434},"sTEyZ","BACKEND_PORT",[173,437,438],{"class":322},"=",[173,440,441],{"class":211},"8411\n",[241,443,444,445,373],{},"Then point the app at ",[170,446,447],{},"http:\u002F\u002Flocalhost:8411",[270,449,451],{"id":450},"cannot-connect-to-the-docker-daemon",[170,452,453],{},"Cannot connect to the Docker daemon",[241,455,456],{},"Docker isn't running. Start Docker Desktop and wait for it to say it's ready.",[149,458,460],{"id":459},"the-stack-is-up-but-nothing-answers","The stack is up but nothing answers",[270,462,464],{"id":463},"ollama-did-not-come-up-within-2-minutes",[170,465,466],{},"Ollama did not come up ... within 2 minutes",[241,468,469,472],{},[170,470,471],{},"COMPOSE_PROFILES"," is missing or misspelled, so no model runtime started. This is\nthe single most common self-host failure.",[154,474,475,486],{},[157,476,477],{"icon":159,"label":160},[162,478,480],{"className":164,"code":479,"filename":166,"language":167,"meta":168,"style":168},"Select-String \"COMPOSE_PROFILES\" .env\n",[170,481,482],{"__ignoreMap":168},[173,483,484],{"class":175,"line":176},[173,485,479],{},[157,487,488],{"icon":35,"label":194},[162,489,491],{"className":197,"code":490,"filename":199,"language":200,"meta":168,"style":168},"grep COMPOSE_PROFILES .env\n",[170,492,493],{"__ignoreMap":168},[173,494,495,498,501],{"class":175,"line":176},[173,496,497],{"class":207},"grep",[173,499,500],{"class":211}," COMPOSE_PROFILES",[173,502,350],{"class":211},[241,504,505,506,509,510,513,514,247,517,520,521,524],{},"Add or fix it, then ",[170,507,508],{},"docker compose up -d",". Check with ",[170,511,512],{},"docker compose ps"," that\none of ",[170,515,516],{},"ollama-cpu",[170,518,519],{},"ollama-nvidia"," or ",[170,522,523],{},"ollama-amd"," is running.",[270,526,528],{"id":527},"chat-returns-errors-the-log-says-model-not-found","Chat returns errors, the log says model not found",[241,530,531],{},"The model download didn't finish. Watch it:",[154,533,534,551],{},[157,535,536],{"icon":159,"label":160},[162,537,539],{"className":164,"code":538,"filename":166,"language":167,"meta":168,"style":168},"docker compose logs ollama-pull\ndocker exec chronicler-ollama ollama list\n",[170,540,541,546],{"__ignoreMap":168},[173,542,543],{"class":175,"line":176},[173,544,545],{},"docker compose logs ollama-pull\n",[173,547,548],{"class":175,"line":182},[173,549,550],{},"docker exec chronicler-ollama ollama list\n",[157,552,553],{"icon":35,"label":194},[162,554,555],{"className":197,"code":538,"filename":199,"language":200,"meta":168,"style":168},[170,556,557,568],{"__ignoreMap":168},[173,558,559,561,563,565],{"class":175,"line":176},[173,560,208],{"class":207},[173,562,212],{"class":211},[173,564,224],{"class":211},[173,566,567],{"class":211}," ollama-pull\n",[173,569,570,572,575,578,581],{"class":175,"line":182},[173,571,208],{"class":207},[173,573,574],{"class":211}," exec",[173,576,577],{"class":211}," chronicler-ollama",[173,579,580],{"class":211}," ollama",[173,582,583],{"class":211}," list\n",[241,585,586],{},"If the list is empty, pull by hand:",[154,588,589,600],{},[157,590,591],{"icon":159,"label":160},[162,592,594],{"className":164,"code":593,"filename":166,"language":167,"meta":168,"style":168},"docker exec chronicler-ollama ollama pull gemma4:e2b\n",[170,595,596],{"__ignoreMap":168},[173,597,598],{"class":175,"line":176},[173,599,593],{},[157,601,602],{"icon":35,"label":194},[162,603,604],{"className":197,"code":593,"filename":199,"language":200,"meta":168,"style":168},[170,605,606],{"__ignoreMap":168},[173,607,608,610,612,614,616,619],{"class":175,"line":176},[173,609,208],{"class":207},[173,611,574],{"class":211},[173,613,577],{"class":211},[173,615,580],{"class":211},[173,617,618],{"class":211}," pull",[173,620,621],{"class":211}," gemma4:e2b\n",[270,623,625],{"id":624},"everything-403s-or-documents-wont-open","Everything 403s, or documents won't open",[241,627,628,629,632],{},"An unlicensed or lapsed licence. ",[261,630,631],{},"Admin → Licensing",":",[634,635,636,643],"ul",{},[637,638,639,642],"li",{},[261,640,641],{},"No licence activated"," - paste your key.",[637,644,645,648,649,652,653,656],{},[261,646,647],{},"Active",", but the app is still blocked - check ",[261,650,651],{},"Last checked",". If it's more\nthan 72 hours old, the server can't reach ",[170,654,655],{},"api.chroniclerlm.com",". Fix outbound\nHTTPS; it recovers by itself.",[241,658,659,660,373],{},"See ",[661,662,663],"a",{"href":69},"Licensing",[149,665,667],{"id":666},"its-up-but-painfully-slow","It's up but painfully slow",[270,669,671],{"id":670},"the-first-answer-takes-minutes","The first answer takes minutes",[241,673,674,675,678],{},"Normal on a CPU: the model has to load. It then stays loaded for 4 days\n(",[170,676,677],{},"OLLAMA_KEEP_ALIVE","), so only the first question after a restart pays it. If\nevery answer after an idle spell is slow, something lowered that:",[162,680,682],{"className":197,"code":681,"filename":281,"language":200,"meta":168,"style":168},"OLLAMA_KEEP_ALIVE=96h\n",[170,683,684],{"__ignoreMap":168},[173,685,686,688,690],{"class":175,"line":176},[173,687,677],{"class":434},[173,689,438],{"class":322},[173,691,692],{"class":211},"96h\n",[270,694,696],{"id":695},"every-answer-takes-minutes","Every answer takes minutes",[241,698,699],{},"Either you're on the CPU when you have a GPU, or the model is too big for the\nmachine.",[154,701,702,723],{},[157,703,704],{"icon":159,"label":160},[162,705,707],{"className":164,"code":706,"filename":166,"language":167,"meta":168,"style":168},"docker compose ps\nnvidia-smi\ndocker stats --no-stream\n",[170,708,709,713,718],{"__ignoreMap":168},[173,710,711],{"class":175,"line":176},[173,712,179],{},[173,714,715],{"class":175,"line":182},[173,716,717],{},"nvidia-smi\n",[173,719,720],{"class":175,"line":188},[173,721,722],{},"docker stats --no-stream\n",[157,724,725],{"icon":35,"label":194},[162,726,727],{"className":197,"code":706,"filename":199,"language":200,"meta":168,"style":168},[170,728,729,737,741],{"__ignoreMap":168},[173,730,731,733,735],{"class":175,"line":176},[173,732,208],{"class":207},[173,734,212],{"class":211},[173,736,215],{"class":211},[173,738,739],{"class":175,"line":182},[173,740,717],{"class":207},[173,742,743,745,748],{"class":175,"line":188},[173,744,208],{"class":207},[173,746,747],{"class":211}," stats",[173,749,750],{"class":211}," --no-stream\n",[241,752,659,753,251,755,373],{},[661,754,44],{"href":45},[661,756,49],{"href":50},[270,758,760],{"id":759},"the-gpu-models-are-greyed-out-in-admin-model","The GPU models are greyed out in Admin → Model",[241,762,763,764,767,768,373],{},"The console can't tell you have a graphics card. It probes from inside the\nbackend container, which is given no access to the GPU on purpose - only the\nOllama container gets it - so it's told what you have via ",[170,765,766],{},"CHRONICLER_GPU_VRAM_GB","\nin your ",[170,769,281],{},[154,771,772,783],{},[157,773,774],{"icon":159,"label":160},[162,775,777],{"className":164,"code":776,"filename":166,"language":167,"meta":168,"style":168},"Select-String \"COMPOSE_PROFILES|CHRONICLER_GPU_VRAM_GB\" .env\n",[170,778,779],{"__ignoreMap":168},[173,780,781],{"class":175,"line":176},[173,782,776],{},[157,784,785],{"icon":35,"label":194},[162,786,788],{"className":197,"code":787,"filename":199,"language":200,"meta":168,"style":168},"grep -E \"COMPOSE_PROFILES|CHRONICLER_GPU_VRAM_GB\" .env\n",[170,789,790],{"__ignoreMap":168},[173,791,792,794,797,800,803,806],{"class":175,"line":176},[173,793,497],{"class":207},[173,795,796],{"class":211}," -E",[173,798,799],{"class":322}," \"",[173,801,802],{"class":211},"COMPOSE_PROFILES|CHRONICLER_GPU_VRAM_GB",[173,804,805],{"class":322},"\"",[173,807,350],{"class":211},[634,809,810,827],{},[637,811,812,818,819,823,824,826],{},[261,813,814,817],{},[170,815,816],{},"COMPOSE_PROFILES=nvidia"," but no VRAM line:"," rerun the\n",[661,820,822],{"href":821},"\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fgpu-acceleration#automatic-detection","detection script",",\nthen ",[170,825,508],{},". Installs set up before this key existed won't have\nit until something writes it.",[637,828,829,837,838,841],{},[261,830,831,520,834,632],{},[170,832,833],{},"COMPOSE_PROFILES=cpu",[170,835,836],{},"amd"," not a bug. The key is written only on\n",[170,839,840],{},"nvidia",", and the CPU-capable tiers really are all your stack can serve. Fix\nthe profile first if the machine has an NVIDIA card.",[241,843,844],{},"You can set it by hand - whole GB, and it must match reality. Claiming 24 on a\n12 GB card only moves the failure to load time.",[270,846,848],{"id":847},"containers-keep-restarting","Containers keep restarting",[241,850,851,852,855],{},"Out of memory. ",[170,853,854],{},"docker stats"," shows what's being killed; raise Docker's memory\nallocation, or choose a smaller model. Under 4 GiB available to Docker, the\nbackend cannot survive a model load.",[149,857,859],{"id":858},"the-app-cant-reach-the-server","The app can't reach the server",[861,862,863,867,892,895,899,926,929,933],"steps",{},[270,864,866],{"id":865},"check-the-server-itself","Check the server itself",[154,868,869,879],{},[157,870,871],{"icon":159,"label":160},[162,872,873],{"className":164,"code":191,"filename":166,"language":167,"meta":168,"style":168},[170,874,875],{"__ignoreMap":168},[173,876,877],{"class":175,"line":176},[173,878,191],{},[157,880,881],{"icon":35,"label":194},[162,882,884],{"className":197,"code":883,"filename":199,"language":200,"meta":168,"style":168},"curl http:\u002F\u002Flocalhost:8410\u002Fhealth\n",[170,885,886],{"__ignoreMap":168},[173,887,888,890],{"class":175,"line":176},[173,889,236],{"class":207},[173,891,239],{"class":211},[241,893,894],{},"Fails locally → the problem is the stack, see above.",[270,896,898],{"id":897},"check-from-the-other-machine","Check from the other machine",[154,900,901,912],{},[157,902,903],{"icon":159,"label":160},[162,904,906],{"className":164,"code":905,"filename":166,"language":167,"meta":168,"style":168},"Invoke-RestMethod http:\u002F\u002F192.168.1.50:8410\u002Fhealth\n",[170,907,908],{"__ignoreMap":168},[173,909,910],{"class":175,"line":176},[173,911,905],{},[157,913,914],{"icon":35,"label":194},[162,915,917],{"className":197,"code":916,"filename":199,"language":200,"meta":168,"style":168},"curl http:\u002F\u002F192.168.1.50:8410\u002Fhealth\n",[170,918,919],{"__ignoreMap":168},[173,920,921,923],{"class":175,"line":176},[173,922,236],{"class":207},[173,924,925],{"class":211}," http:\u002F\u002F192.168.1.50:8410\u002Fhealth\n",[241,927,928],{},"Fails → firewall or wrong address. On Windows, Docker Desktop and Windows\nFirewall both need to allow it.",[270,930,932],{"id":931},"check-the-address-in-the-app","Check the address in the app",[241,934,935,938,939,942,943,946,947,950,951,954],{},[261,936,937],{},"Settings → Connection",": mode ",[261,940,941],{},"Local",", the full URL including ",[170,944,945],{},"http:\u002F\u002F"," and\nthe port. ",[170,948,949],{},"192.168.1.50"," alone won't work; ",[170,952,953],{},"http:\u002F\u002F192.168.1.50:8410"," will.",[149,956,958],{"id":957},"documents-get-stuck-processing","Documents get stuck processing",[241,960,961],{},"Large scanned files are slow - OCR is the expensive part, and on a CPU a\n200-page scan can take a very long time.",[154,963,964,980],{},[157,965,966],{"icon":159,"label":160},[162,967,969],{"className":164,"code":968,"filename":166,"language":167,"meta":168,"style":168},"docker compose logs backend --tail 100\ndocker stats --no-stream\n",[170,970,971,976],{"__ignoreMap":168},[173,972,973],{"class":175,"line":176},[173,974,975],{},"docker compose logs backend --tail 100\n",[173,977,978],{"class":175,"line":182},[173,979,722],{},[157,981,982],{"icon":35,"label":194},[162,983,984],{"className":197,"code":968,"filename":199,"language":200,"meta":168,"style":168},[170,985,986,1001],{"__ignoreMap":168},[173,987,988,990,992,994,997,999],{"class":175,"line":176},[173,989,208],{"class":207},[173,991,212],{"class":211},[173,993,224],{"class":211},[173,995,996],{"class":211}," backend",[173,998,227],{"class":211},[173,1000,231],{"class":230},[173,1002,1003,1005,1007],{"class":175,"line":182},[173,1004,208],{"class":207},[173,1006,747],{"class":211},[173,1008,750],{"class":211},[241,1010,1011,1012,1015,1016,373],{},"If it's genuinely stuck rather than slow, restart the backend\n(",[170,1013,1014],{},"docker compose restart backend",") and re-upload. If it's every document,\nyou're out of disk or out of the allocation set in ",[261,1017,1018],{},"Admin → Settings",[149,1020,1022],{"id":1021},"disk-is-full","Disk is full",[154,1024,1025,1036],{},[157,1026,1027],{"icon":159,"label":160},[162,1028,1030],{"className":164,"code":1029,"filename":166,"language":167,"meta":168,"style":168},"docker system df -v\n",[170,1031,1032],{"__ignoreMap":168},[173,1033,1034],{"class":175,"line":176},[173,1035,1029],{},[157,1037,1038],{"icon":35,"label":194},[162,1039,1040],{"className":197,"code":1029,"filename":199,"language":200,"meta":168,"style":168},[170,1041,1042],{"__ignoreMap":168},[173,1043,1044,1046,1049,1052],{"class":175,"line":176},[173,1045,208],{"class":207},[173,1047,1048],{"class":211}," system",[173,1050,1051],{"class":211}," df",[173,1053,1054],{"class":211}," -v\n",[241,1056,1057],{},"Usual culprits: old images after several updates, and old models.",[154,1059,1060,1076],{},[157,1061,1062],{"icon":159,"label":160},[162,1063,1065],{"className":164,"code":1064,"filename":166,"language":167,"meta":168,"style":168},"docker image prune -a\ndocker exec chronicler-ollama ollama list\n",[170,1066,1067,1072],{"__ignoreMap":168},[173,1068,1069],{"class":175,"line":176},[173,1070,1071],{},"docker image prune -a\n",[173,1073,1074],{"class":175,"line":182},[173,1075,550],{},[157,1077,1078],{"icon":35,"label":194},[162,1079,1080],{"className":197,"code":1064,"filename":199,"language":200,"meta":168,"style":168},[170,1081,1082,1095],{"__ignoreMap":168},[173,1083,1084,1086,1089,1092],{"class":175,"line":176},[173,1085,208],{"class":207},[173,1087,1088],{"class":211}," image",[173,1090,1091],{"class":211}," prune",[173,1093,1094],{"class":211}," -a\n",[173,1096,1097,1099,1101,1103,1105],{"class":175,"line":182},[173,1098,208],{"class":207},[173,1100,574],{"class":211},[173,1102,577],{"class":211},[173,1104,580],{"class":211},[173,1106,583],{"class":211},[364,1108,1109,1110,520,1113,1116,1117,1120,1121,1124],{},"Never ",[170,1111,1112],{},"docker volume prune",[170,1114,1115],{},"docker compose down -v",". Those delete\n",[170,1118,1119],{},"postgres_data"," and ",[170,1122,1123],{},"backend_uploads"," - your entire install.",[149,1126,1128],{"id":1127},"ive-forgotten-the-admin-password","I've forgotten the admin password",[241,1130,1131,1132,1135],{},"There's no recovery from the outside; the server never had a password you can\nlook up. Another administrator can reset it from ",[261,1133,1134],{},"Admin → Users",". If there's\nonly one administrator and it's locked out, restore a backup from before the\nchange, or start again from an empty database - which is why a second\nadministrator account is worth having.",[149,1137,1139],{"id":1138},"starting-over","Starting over",[241,1141,1142],{},"Deletes everything:",[154,1144,1145,1161],{},[157,1146,1147],{"icon":159,"label":160},[162,1148,1150],{"className":164,"code":1149,"filename":166,"language":167,"meta":168,"style":168},"docker compose down -v\ndocker compose up -d\n",[170,1151,1152,1157],{"__ignoreMap":168},[173,1153,1154],{"class":175,"line":176},[173,1155,1156],{},"docker compose down -v\n",[173,1158,1159],{"class":175,"line":182},[173,1160,306],{},[157,1162,1163],{"icon":35,"label":194},[162,1164,1165],{"className":197,"code":1149,"filename":199,"language":200,"meta":168,"style":168},[170,1166,1167,1178],{"__ignoreMap":168},[173,1168,1169,1171,1173,1176],{"class":175,"line":176},[173,1170,208],{"class":207},[173,1172,212],{"class":211},[173,1174,1175],{"class":211}," down",[173,1177,1054],{"class":211},[173,1179,1180,1182,1184,1186],{"class":175,"line":182},[173,1181,208],{"class":207},[173,1183,212],{"class":211},[173,1185,359],{"class":211},[173,1187,362],{"class":211},[241,1189,1190],{},"Take a backup first if there's anything you want.",[149,1192,1194],{"id":1193},"collecting-information-for-support","Collecting information for support",[154,1196,1197,1225],{},[157,1198,1199],{"icon":159,"label":160},[162,1200,1202],{"className":164,"code":1201,"filename":166,"language":167,"meta":168,"style":168},"docker compose ps | Out-File support.txt\ndocker compose logs --tail 500 | Out-File -Append support.txt\ndocker info --format \"{{.MemTotal}} {{.KernelVersion}}\" | Out-File -Append support.txt\ndocker compose config | Out-File -Append support.txt\n",[170,1203,1204,1209,1214,1219],{"__ignoreMap":168},[173,1205,1206],{"class":175,"line":176},[173,1207,1208],{},"docker compose ps | Out-File support.txt\n",[173,1210,1211],{"class":175,"line":182},[173,1212,1213],{},"docker compose logs --tail 500 | Out-File -Append support.txt\n",[173,1215,1216],{"class":175,"line":188},[173,1217,1218],{},"docker info --format \"{{.MemTotal}} {{.KernelVersion}}\" | Out-File -Append support.txt\n",[173,1220,1222],{"class":175,"line":1221},4,[173,1223,1224],{},"docker compose config | Out-File -Append support.txt\n",[157,1226,1227],{"icon":35,"label":194},[162,1228,1230],{"className":197,"code":1229,"filename":199,"language":200,"meta":168,"style":168},"docker compose ps > support.txt\ndocker compose logs --tail 500 >> support.txt\ndocker info --format \"{{.MemTotal}} {{.KernelVersion}}\" >> support.txt\ndocker compose config >> support.txt\n",[170,1231,1232,1245,1263,1284],{"__ignoreMap":168},[173,1233,1234,1236,1238,1240,1242],{"class":175,"line":176},[173,1235,208],{"class":207},[173,1237,212],{"class":211},[173,1239,409],{"class":211},[173,1241,347],{"class":322},[173,1243,1244],{"class":211}," support.txt\n",[173,1246,1247,1249,1251,1253,1255,1258,1261],{"class":175,"line":182},[173,1248,208],{"class":207},[173,1250,212],{"class":211},[173,1252,224],{"class":211},[173,1254,227],{"class":211},[173,1256,1257],{"class":230}," 500",[173,1259,1260],{"class":322}," >>",[173,1262,1244],{"class":211},[173,1264,1265,1267,1270,1273,1275,1278,1280,1282],{"class":175,"line":188},[173,1266,208],{"class":207},[173,1268,1269],{"class":211}," info",[173,1271,1272],{"class":211}," --format",[173,1274,799],{"class":322},[173,1276,1277],{"class":211},"{{.MemTotal}} {{.KernelVersion}}",[173,1279,805],{"class":322},[173,1281,1260],{"class":322},[173,1283,1244],{"class":211},[173,1285,1286,1288,1290,1293,1295],{"class":175,"line":1221},[173,1287,208],{"class":207},[173,1289,212],{"class":211},[173,1291,1292],{"class":211}," config",[173,1294,1260],{"class":322},[173,1296,1244],{"class":211},[1298,1299,1300,1303],"warning",{},[170,1301,1302],{},"docker compose config"," prints your database password. Remove it before sending\nthe file to anyone.",[1305,1306,1307],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":168,"searchDepth":182,"depth":182,"links":1309},[1310,1311,1316,1321,1327,1332,1333,1334,1335,1336],{"id":151,"depth":182,"text":152},{"id":267,"depth":182,"text":268,"children":1312},[1313,1314,1315],{"id":272,"depth":188,"text":275},{"id":376,"depth":188,"text":379},{"id":450,"depth":188,"text":453},{"id":459,"depth":182,"text":460,"children":1317},[1318,1319,1320],{"id":463,"depth":188,"text":466},{"id":527,"depth":188,"text":528},{"id":624,"depth":188,"text":625},{"id":666,"depth":182,"text":667,"children":1322},[1323,1324,1325,1326],{"id":670,"depth":188,"text":671},{"id":695,"depth":188,"text":696},{"id":759,"depth":188,"text":760},{"id":847,"depth":188,"text":848},{"id":858,"depth":182,"text":859,"children":1328},[1329,1330,1331],{"id":865,"depth":188,"text":866},{"id":897,"depth":188,"text":898},{"id":931,"depth":188,"text":932},{"id":957,"depth":182,"text":958},{"id":1021,"depth":182,"text":1022},{"id":1127,"depth":182,"text":1128},{"id":1138,"depth":182,"text":1139},{"id":1193,"depth":182,"text":1194},"The failures people actually hit, and what fixes each one.","md",null,{},{"icon":102},{"title":1343,"description":1344},"Chronicler self-hosting troubleshooting","Diagnose a self-hosted Chronicler stack that won't start, can't answer, or can't be reached.","h_RVdl9AkHIzl3nfR8Leb5ZR-5nxRy_m7Kv8RCj7AnY",[1347,1349],{"title":94,"path":95,"stem":96,"description":1348,"icon":97,"children":-1},"Let colleagues in without letting everyone in.",{"title":110,"path":111,"stem":112,"description":1350,"icon":113,"children":-1},"Download Chronicler for Windows or Linux.",1785127057342]