[{"data":1,"prerenderedAt":656},["ShallowReactive",2],{"navigation_docs_en":3,"-en-self-hosting-gpu-acceleration":123,"-en-self-hosting-gpu-acceleration-surround":651},[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":83,"body":125,"description":642,"extension":643,"links":644,"meta":645,"navigation":646,"path":84,"seo":647,"stem":85,"__hash__":650},"docs_en\u002Fen\u002F2.self-hosting\u002F5.gpu-acceleration.md",{"type":126,"value":127,"toc":629},"minimark",[128,132,137,145,175,178,190,193,197,245,254,271,289,292,296,460,464,475,491,494,508,522,525,529,543,558,592,595,599,609,613,618,625],[129,130,131],"p",{},"Answer speed is dominated by where the model runs. On a CPU, the first answer\nafter a pause takes one to three minutes. On a mid-range NVIDIA card, seconds.",[133,134,136],"h2",{"id":135},"how-its-selected","How it's selected",[129,138,139,140,144],{},"One setting in your ",[141,142,143],"code",{},".env",":",[146,147,152],"pre",{"className":148,"code":149,"filename":143,"language":150,"meta":151,"style":151},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","COMPOSE_PROFILES=cpu     # or nvidia, or amd\n","bash","",[141,153,154],{"__ignoreMap":151},[155,156,159,163,167,171],"span",{"class":157,"line":158},"line",1,[155,160,162],{"class":161},"sTEyZ","COMPOSE_PROFILES",[155,164,166],{"class":165},"sMK4o","=",[155,168,170],{"class":169},"sfazB","cpu",[155,172,174],{"class":173},"sHwdD","     # or nvidia, or amd\n",[129,176,177],{},"The compose file ships three variants of the model container and starts exactly\none of them. They share the same name, address and downloaded models, so\nswitching between them keeps everything and re-downloads nothing.",[179,180,181,182,184,185,189],"caution",{},"If ",[141,183,162],{}," is unset, ",[186,187,188],"strong",{},"none"," of them start. The rest of the stack\ncomes up, and every question fails. This is the most common self-host mistake.",[129,191,192],{},"The desktop app's guided setup detects this for you on first install. Everyone\nelse picks it below.",[133,194,196],{"id":195},"automatic-detection","Automatic detection",[146,198,201],{"className":148,"code":199,"filename":200,"language":150,"meta":151,"style":151},"curl -L -o detect-hardware.sh \\\n  https:\u002F\u002Fgithub.com\u002FChroniclerLM\u002FReleases\u002Freleases\u002Flatest\u002Fdownload\u002Fdetect-hardware.sh\nchmod +x detect-hardware.sh\n.\u002Fdetect-hardware.sh\n","Terminal",[141,202,203,221,227,239],{"__ignoreMap":151},[155,204,205,209,212,215,218],{"class":157,"line":158},[155,206,208],{"class":207},"sBMFI","curl",[155,210,211],{"class":169}," -L",[155,213,214],{"class":169}," -o",[155,216,217],{"class":169}," detect-hardware.sh",[155,219,220],{"class":161}," \\\n",[155,222,224],{"class":157,"line":223},2,[155,225,226],{"class":169},"  https:\u002F\u002Fgithub.com\u002FChroniclerLM\u002FReleases\u002Freleases\u002Flatest\u002Fdownload\u002Fdetect-hardware.sh\n",[155,228,230,233,236],{"class":157,"line":229},3,[155,231,232],{"class":207},"chmod",[155,234,235],{"class":169}," +x",[155,237,238],{"class":169}," detect-hardware.sh\n",[155,240,242],{"class":157,"line":241},4,[155,243,244],{"class":207},".\u002Fdetect-hardware.sh\n",[129,246,247,248,250,251,253],{},"It checks the platform, whether containers can actually reach a GPU, and how much\nmemory Docker has, then writes ",[141,249,162],{}," into the ",[141,252,143],{}," beside it. It\nnever touches your database password, and never changes your model.",[255,256,257,258,261,262,266,267,270],"note",{},"The script also prints a suggested model, and the tags it names don't always\nmatch the list in ",[186,259,260],{},"Admin → Model",". Treat the script as authoritative for the\n",[263,264,265],"em",{},"runtime profile"," and the admin console as authoritative for the ",[263,268,269],{},"model",".",[129,272,273,274,277,278,281,282,285,286,288],{},"Useful flags: ",[141,275,276],{},"--recommend-only"," (print, change nothing), ",[141,279,280],{},"--coding"," (bias the\nsuggestion towards a coding model), ",[141,283,284],{},"--env-file PATH"," (target a different ",[141,287,143],{},").",[129,290,291],{},"The script needs bash — it runs on Linux, and on Windows from Git Bash or a WSL\nshell. If you can't run it, set the value by hand as below.",[133,293,295],{"id":294},"nvidia","NVIDIA",[297,298,299,304,313,316,320,327,355,358,424,428,442],"steps",{},[300,301,303],"h3",{"id":302},"confirm-the-host-sees-the-card","Confirm the host sees the card",[146,305,307],{"className":148,"code":306,"filename":200,"language":150,"meta":151,"style":151},"nvidia-smi\n",[141,308,309],{"__ignoreMap":151},[155,310,311],{"class":157,"line":158},[155,312,306],{"class":207},[129,314,315],{},"No output means a driver problem — fix that first, nothing below will help.",[300,317,319],{"id":318},"confirm-containers-can-see-it","Confirm containers can see it",[129,321,322,323,326],{},"The driver being installed on the host is not enough; Docker needs the ",[186,324,325],{},"NVIDIA\nContainer Toolkit"," to pass the card through.",[146,328,330],{"className":148,"code":329,"filename":200,"language":150,"meta":151,"style":151},"docker run --rm --gpus all ollama\u002Follama:0.32.4 nvidia-smi\n",[141,331,332],{"__ignoreMap":151},[155,333,334,337,340,343,346,349,352],{"class":157,"line":158},[155,335,336],{"class":207},"docker",[155,338,339],{"class":169}," run",[155,341,342],{"class":169}," --rm",[155,344,345],{"class":169}," --gpus",[155,347,348],{"class":169}," all",[155,350,351],{"class":169}," ollama\u002Follama:0.32.4",[155,353,354],{"class":169}," nvidia-smi\n",[129,356,357],{},"If that prints your card, you're ready. If it errors:",[359,360,361,414],"ul",{},[362,363,364,367,368,403,406,407,270],"li",{},[186,365,366],{},"Linux"," — install the toolkit, register it with Docker and restart:",[146,369,371],{"className":148,"code":370,"filename":200,"language":150,"meta":151,"style":151},"sudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n",[141,372,373,390],{"__ignoreMap":151},[155,374,375,378,381,384,387],{"class":157,"line":158},[155,376,377],{"class":207},"sudo",[155,379,380],{"class":169}," nvidia-ctk",[155,382,383],{"class":169}," runtime",[155,385,386],{"class":169}," configure",[155,388,389],{"class":169}," --runtime=docker\n",[155,391,392,394,397,400],{"class":157,"line":223},[155,393,377],{"class":207},[155,395,396],{"class":169}," systemctl",[155,398,399],{"class":169}," restart",[155,401,402],{"class":169}," docker\n",[404,405],"br",{},"Install instructions:\n",[408,409,413],"a",{"href":410,"rel":411},"https:\u002F\u002Fdocs.nvidia.com\u002Fdatacenter\u002Fcloud-native\u002Fcontainer-toolkit\u002Flatest\u002Finstall-guide.html",[412],"nofollow","NVIDIA Container Toolkit",[362,415,416,419,420,423],{},[186,417,418],{},"Windows"," — update the NVIDIA driver (the WSL2 driver includes container\nsupport), make sure Docker Desktop is on the ",[186,421,422],{},"WSL 2 based engine",", and\nrestart Docker Desktop. There is nothing extra to install.",[300,425,427],{"id":426},"switch-the-profile","Switch the profile",[146,429,431],{"className":148,"code":430,"filename":143,"language":150,"meta":151,"style":151},"COMPOSE_PROFILES=nvidia\n",[141,432,433],{"__ignoreMap":151},[155,434,435,437,439],{"class":157,"line":158},[155,436,162],{"class":161},[155,438,166],{"class":165},[155,440,441],{"class":169},"nvidia\n",[146,443,445],{"className":148,"code":444,"filename":200,"language":150,"meta":151,"style":151},"docker compose up -d\n",[141,446,447],{"__ignoreMap":151},[155,448,449,451,454,457],{"class":157,"line":158},[155,450,336],{"class":207},[155,452,453],{"class":169}," compose",[155,455,456],{"class":169}," up",[155,458,459],{"class":169}," -d\n",[133,461,463],{"id":462},"amd","AMD",[129,465,466,467,470,471,474],{},"Linux only, and best-effort. ROCm reaches the card through ",[141,468,469],{},"\u002Fdev\u002Fkfd"," and\n",[141,472,473],{},"\u002Fdev\u002Fdri",", which Docker Desktop on Windows cannot pass through.",[146,476,478],{"className":148,"code":477,"filename":200,"language":150,"meta":151,"style":151},"ls \u002Fdev\u002Fkfd \u002Fdev\u002Fdri\n",[141,479,480],{"__ignoreMap":151},[155,481,482,485,488],{"class":157,"line":158},[155,483,484],{"class":207},"ls",[155,486,487],{"class":169}," \u002Fdev\u002Fkfd",[155,489,490],{"class":169}," \u002Fdev\u002Fdri\n",[129,492,493],{},"If both exist:",[146,495,497],{"className":148,"code":496,"filename":143,"language":150,"meta":151,"style":151},"COMPOSE_PROFILES=amd\n",[141,498,499],{"__ignoreMap":151},[155,500,501,503,505],{"class":157,"line":158},[155,502,162],{"class":161},[155,504,166],{"class":165},[155,506,507],{"class":169},"amd\n",[146,509,510],{"className":148,"code":444,"filename":200,"language":150,"meta":151,"style":151},[141,511,512],{"__ignoreMap":151},[155,513,514,516,518,520],{"class":157,"line":158},[155,515,336],{"class":207},[155,517,453],{"class":169},[155,519,456],{"class":169},[155,521,459],{"class":169},[129,523,524],{},"This variant pulls a different, larger image (the ROCm runtime), so the first\nstart after switching takes a while.",[133,526,528],{"id":527},"verify-its-actually-being-used","Verify it's actually being used",[146,530,532],{"className":148,"code":531,"filename":200,"language":150,"meta":151,"style":151},"docker compose ps\n",[141,533,534],{"__ignoreMap":151},[155,535,536,538,540],{"class":157,"line":158},[155,537,336],{"class":207},[155,539,453],{"class":169},[155,541,542],{"class":169}," ps\n",[129,544,545,546,549,550,553,554,557],{},"The running container should be ",[141,547,548],{},"ollama-nvidia"," or ",[141,551,552],{},"ollama-amd",", not\n",[141,555,556],{},"ollama-cpu",". Then ask a question and watch:",[146,559,561],{"className":148,"code":560,"filename":200,"language":150,"meta":151,"style":151},"nvidia-smi          # NVIDIA: memory in use jumps while generating\ndocker compose logs chronicler-ollama | tail -30\n",[141,562,563,571],{"__ignoreMap":151},[155,564,565,568],{"class":157,"line":158},[155,566,567],{"class":207},"nvidia-smi",[155,569,570],{"class":173},"          # NVIDIA: memory in use jumps while generating\n",[155,572,573,575,577,580,583,586,589],{"class":157,"line":223},[155,574,336],{"class":207},[155,576,453],{"class":169},[155,578,579],{"class":169}," logs",[155,581,582],{"class":169}," chronicler-ollama",[155,584,585],{"class":165}," |",[155,587,588],{"class":207}," tail",[155,590,591],{"class":169}," -30\n",[129,593,594],{},"The Ollama log says which backend it loaded the model onto. The honest test is\nthe clock: if a warm answer still takes a minute, it's on the CPU.",[133,596,598],{"id":597},"switching-later","Switching later",[129,600,601,602,604,605,608],{},"Edit ",[141,603,162],{},", then ",[141,606,607],{},"docker compose up -d",". Compose replaces the model\ncontainer in place. Downloaded models live in a shared volume, so nothing is\nre-downloaded and no data is lost.",[133,610,612],{"id":611},"known-limitation-model-list-in-the-admin-console","Known limitation: model list in the admin console",[129,614,615,617],{},[186,616,260],{}," probes hardware from inside the backend container, which has no\naccess to the GPU. It therefore reports no graphics card and greys out the\nGPU-class models even on a machine that has one.",[129,619,620,621,270],{},"Models that run on the CPU are unaffected and still selectable — the probe reads\nRAM correctly, it's only the graphics card it can't see. To use a GPU-class model\nanyway, set it on the server instead of in the console: see\n",[408,622,624],{"href":623},"\u002Fen\u002Fself-hosting\u002Fmodels#choosing-a-gpu-model-by-hand","Choosing a GPU model by hand",[626,627,628],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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}",{"title":151,"searchDepth":223,"depth":223,"links":630},[631,632,633,638,639,640,641],{"id":135,"depth":223,"text":136},{"id":195,"depth":223,"text":196},{"id":294,"depth":223,"text":295,"children":634},[635,636,637],{"id":302,"depth":229,"text":303},{"id":318,"depth":229,"text":319},{"id":426,"depth":229,"text":427},{"id":462,"depth":223,"text":463},{"id":527,"depth":223,"text":528},{"id":597,"depth":223,"text":598},{"id":611,"depth":223,"text":612},"Use the graphics card you already have — the difference between a minute and a few seconds.","md",null,{},{"icon":86},{"title":648,"description":649},"GPU acceleration for self-hosted Chronicler","Configure COMPOSE_PROFILES for NVIDIA or AMD, verify the GPU is actually in use, and switch safely.","wRtr73XCZuSLvw2r62NlLOnDn1R-8yzpL3Y6BvZBX20",[652,654],{"title":78,"path":79,"stem":80,"description":653,"icon":81,"children":-1},"Install the stack from a terminal — the path for a headless server.",{"title":88,"path":89,"stem":90,"description":655,"icon":91,"children":-1},"Give the stack more RAM, and know which knob actually changes anything.",1785092110260]