[{"data":1,"prerenderedAt":852},["ShallowReactive",2],{"\u002Fblog\u002Flibrechat-ollama-local-llm":3,"\u002Fblog\u002Flibrechat-ollama-local-llm-surround":845},{"id":4,"title":5,"body":6,"date":828,"description":829,"extension":830,"meta":831,"navigation":832,"path":833,"seo":834,"stem":835,"tags":836,"__hash__":844},"blog\u002Fblog\u002Flibrechat-ollama-local-llm.md","LibreChat+OllamaでローカルLLM",{"type":7,"value":8,"toc":805},"minimark",[9,14,76,80,84,123,126,129,132,201,204,207,211,246,253,256,272,275,281,284,299,302,308,310,325,328,335,340,492,497,502,644,647,650,669,676,681,684,689,692,695,698,724,727,753,758,761,764,769,774,777,780,792,795,798,801],[10,11,13],"h2",{"id":12},"librechat","LibreChat",[15,16,19,20],"div",{"className":17},[18],"remark-link-card-plus__container","\n  ",[21,22,30,31,67,19],"a",{"href":23,"target":24,"rel":25,"className":28},"https:\u002F\u002Fwww.librechat.ai\u002F","_blank",[26,27],"noreferrer","noopener",[29],"remark-link-card-plus__card","\n    ",[15,32,19,35,19,49],{"className":33},[34],"remark-link-card-plus__main",[15,36,30,39,30,44,19],{"className":37},[38],"remark-link-card-plus__content",[15,40,43],{"className":41},[42],"remark-link-card-plus__title","LibreChat - The Open-Source AI Platform",[15,45,48],{"className":46},[47],"remark-link-card-plus__description","LibreChat brings together all your AI conversations in one unified, customizable interface.",[15,50,30,53,30,61,19],{"className":51},[52],"remark-link-card-plus__meta",[54,55],"img",{"src":56,"className":57,"width":59,"height":59,"alt":60},"https:\u002F\u002Fwww.librechat.ai\u002Ffavicon-32x32.png",[58],"remark-link-card-plus__favicon",14,"",[62,63,66],"span",{"className":64},[65],"remark-link-card-plus__url","www.librechat.ai",[15,68,19,71],{"className":69},[70],"remark-link-card-plus__thumbnail",[54,72],{"src":73,"className":74,"alt":60},"https:\u002F\u002Fwww.librechat.ai\u002Fimages\u002Fsocialcards\u002Fdefault-image.png",[75],"remark-link-card-plus__image",[77,78,79],"p",{},"ChatGPTみたいなUIを提供するやつです。",[10,81,83],{"id":82},"ollama","Ollama",[15,85,19,87],{"className":86},[18],[21,88,30,92,116,19],{"href":89,"target":24,"rel":90,"className":91},"https:\u002F\u002Follama.com\u002F",[26,27],[29],[15,93,19,95,19,105],{"className":94},[34],[15,96,30,98,30,101,19],{"className":97},[38],[15,99,83],{"className":100},[42],[15,102,104],{"className":103},[47],"Ollama is the easiest way to automate your work using open models, while keeping your data safe.",[15,106,30,108,30,112,19],{"className":107},[52],[54,109],{"src":110,"className":111,"width":59,"height":59,"alt":60},"https:\u002F\u002Follama.com\u002Fpublic\u002Ficon-16x16.png",[58],[62,113,115],{"className":114},[65],"ollama.com",[15,117,19,119],{"className":118},[70],[54,120],{"src":121,"className":122,"alt":60},"https:\u002F\u002Follama.com\u002Fpublic\u002Fog.png",[75],[77,124,125],{},"ローカルでLLMを動作させることのできるツールです。",[77,127,128],{},"以上の２つを合わせてローカルでAIを動作させていきたいっていう話。",[10,130,131],{"id":131},"環境",[133,134,135,146],"table",{},[136,137,138],"thead",{},[139,140,141,144],"tr",{},[142,143],"th",{},[142,145],{},[147,148,149,161,171,181,191],"tbody",{},[139,150,151,155],{},[152,153,154],"td",{},"CPU",[152,156,157],{},[158,159,160],"strong",{},"Ryzen 7 5700X",[139,162,163,166],{},[152,164,165],{},"RAM",[152,167,168],{},[158,169,170],{},"32GB",[139,172,173,176],{},[152,174,175],{},"SSD",[152,177,178],{},[158,179,180],{},"1TB",[139,182,183,186],{},[152,184,185],{},"GPU",[152,187,188],{},[158,189,190],{},"NVIDIA RTX 4060 Ti 16GB",[139,192,193,196],{},[152,194,195],{},"OS",[152,197,198],{},[158,199,200],{},"ArchLinux",[77,202,203],{},"今回はDockerで動かしていきます。",[10,205,206],{"id":206},"セットアップ",[208,209,210],"h3",{"id":210},"リポジトリのクローン",[212,213,218],"pre",{"className":214,"code":215,"filename":216,"language":217,"meta":60,"style":60},"language-bash shiki shiki-themes catppuccin-macchiato","git clone https:\u002F\u002Fgithub.com\u002Fdanny-avila\u002FLibreChat\ncd LibreChat\n","コマンド","bash",[219,220,221,236],"code",{"__ignoreMap":60},[62,222,225,229,233],{"class":223,"line":224},"line",1,[62,226,228],{"class":227},"siK8c","git",[62,230,232],{"class":231},"sSZ1V"," clone",[62,234,235],{"class":231}," https:\u002F\u002Fgithub.com\u002Fdanny-avila\u002FLibreChat\n",[62,237,239,243],{"class":223,"line":238},2,[62,240,242],{"class":241},"sizsb","cd",[62,244,245],{"class":231}," LibreChat\n",[208,247,249,252],{"id":248},"envの作成",[219,250,251],{},".env","の作成",[77,254,255],{},"リポジトリ内にあるexampleをコピーする。",[212,257,259],{"className":214,"code":258,"filename":216,"language":217,"meta":60,"style":60},"cp .env.example .env\n",[219,260,261],{"__ignoreMap":60},[62,262,263,266,269],{"class":223,"line":224},[62,264,265],{"class":227},"cp",[62,267,268],{"class":231}," .env.example",[62,270,271],{"class":231}," .env\n",[77,273,274],{},"内容は特にいじらなくていい。",[208,276,278,252],{"id":277},"librechatyamlの作成",[219,279,280],{},"librechat.yaml",[77,282,283],{},"これもリポジトリ内にあるexampleをコピーする。",[212,285,287],{"className":214,"code":286,"filename":216,"language":217,"meta":60,"style":60},"cp librechat.example.yaml librechat.yaml\n",[219,288,289],{"__ignoreMap":60},[62,290,291,293,296],{"class":223,"line":224},[62,292,265],{"class":227},[62,294,295],{"class":231}," librechat.example.yaml",[62,297,298],{"class":231}," librechat.yaml\n",[77,300,301],{},"現時点では内容は編集しない。",[208,303,305,252],{"id":304},"docker-composeoverrideyamlの作成",[219,306,307],{},"docker-compose.override.yaml",[77,309,283],{},[212,311,313],{"className":214,"code":312,"filename":216,"language":217,"meta":60,"style":60},"cp docker-compose.override.yml.example docker-compose.override.yml\n",[219,314,315],{"__ignoreMap":60},[62,316,317,319,322],{"class":223,"line":224},[62,318,265],{"class":227},[62,320,321],{"class":231}," docker-compose.override.yml.example",[62,323,324],{"class":231}," docker-compose.override.yml\n",[77,326,327],{},"これも現時点では内容を編集しない。",[208,329,331,334],{"id":330},"docker-composeoverrideymlの編集",[219,332,333],{},"docker-compose.override.yml","の編集",[77,336,337,339],{},[219,338,280],{},"をマウントしたり、Ollamaを追加します。",[212,341,345],{"className":342,"code":343,"filename":333,"language":344,"meta":60,"style":60},"language-yaml shiki shiki-themes catppuccin-macchiato","services:\n    api:\n        volumes:\n            - type: bind\n              source: .\u002Flibrechat.yaml\n              target: \u002Fapp\u002Flibrechat.yaml\n    ollama:\n        image: ollama\u002Follama:latest\n        container_name: ollama\n        restart: unless-stopped\n        gpus: all\n        ports:\n            - \"11434:11434\"\n        volumes:\n            - .\u002Follama:\u002Froot\u002F.ollama\n","yaml",[219,346,347,357,364,372,388,399,410,418,429,440,451,462,470,478,484],{"__ignoreMap":60},[62,348,349,353],{"class":223,"line":224},[62,350,352],{"class":351},"s57MT","services",[62,354,356],{"class":355},"sXptk",":\n",[62,358,359,362],{"class":223,"line":238},[62,360,361],{"class":351},"    api",[62,363,356],{"class":355},[62,365,367,370],{"class":223,"line":366},3,[62,368,369],{"class":351},"        volumes",[62,371,356],{"class":355},[62,373,375,379,382,385],{"class":223,"line":374},4,[62,376,378],{"class":377},"slVFb","            -",[62,380,381],{"class":351}," type",[62,383,384],{"class":355},":",[62,386,387],{"class":231}," bind\n",[62,389,391,394,396],{"class":223,"line":390},5,[62,392,393],{"class":351},"              source",[62,395,384],{"class":355},[62,397,398],{"class":231}," .\u002Flibrechat.yaml\n",[62,400,402,405,407],{"class":223,"line":401},6,[62,403,404],{"class":351},"              target",[62,406,384],{"class":355},[62,408,409],{"class":231}," \u002Fapp\u002Flibrechat.yaml\n",[62,411,413,416],{"class":223,"line":412},7,[62,414,415],{"class":351},"    ollama",[62,417,356],{"class":355},[62,419,421,424,426],{"class":223,"line":420},8,[62,422,423],{"class":351},"        image",[62,425,384],{"class":355},[62,427,428],{"class":231}," ollama\u002Follama:latest\n",[62,430,432,435,437],{"class":223,"line":431},9,[62,433,434],{"class":351},"        container_name",[62,436,384],{"class":355},[62,438,439],{"class":231}," ollama\n",[62,441,443,446,448],{"class":223,"line":442},10,[62,444,445],{"class":351},"        restart",[62,447,384],{"class":355},[62,449,450],{"class":231}," unless-stopped\n",[62,452,454,457,459],{"class":223,"line":453},11,[62,455,456],{"class":351},"        gpus",[62,458,384],{"class":355},[62,460,461],{"class":231}," all\n",[62,463,465,468],{"class":223,"line":464},12,[62,466,467],{"class":351},"        ports",[62,469,356],{"class":355},[62,471,473,475],{"class":223,"line":472},13,[62,474,378],{"class":377},[62,476,477],{"class":231}," \"11434:11434\"\n",[62,479,480,482],{"class":223,"line":59},[62,481,369],{"class":351},[62,483,356],{"class":355},[62,485,487,489],{"class":223,"line":486},15,[62,488,378],{"class":377},[62,490,491],{"class":231}," .\u002Follama:\u002Froot\u002F.ollama\n",[208,493,495,334],{"id":494},"librechatyamlの編集",[219,496,280],{},[77,498,499,501],{},[219,500,83],{},"を使うように設定します。",[212,503,505],{"className":342,"code":504,"filename":280,"language":344,"meta":60,"style":60},"version: 1.3.6\nendpoints:\n  custom:\n    - name: \"Ollama\"\n      apiKey: \"ollama\"\n      baseURL: \"http:\u002F\u002Follama:11434\u002Fv1\u002F\"\n      models:\n        default:\n          - \"qwen3.5\"\n        fetch: true\n      titleConvo: true\n      titleModel: \"current_model\"\n      summarize: false\n      summaryModel: \"current_model\"\n      modelDisplayLabel: \"Ollama\"\n",[219,506,507,518,525,532,545,555,565,572,579,587,597,606,616,626,635],{"__ignoreMap":60},[62,508,509,512,514],{"class":223,"line":224},[62,510,511],{"class":351},"version",[62,513,384],{"class":355},[62,515,517],{"class":516},"s7Qn8"," 1.3.6\n",[62,519,520,523],{"class":223,"line":238},[62,521,522],{"class":351},"endpoints",[62,524,356],{"class":355},[62,526,527,530],{"class":223,"line":366},[62,528,529],{"class":351},"  custom",[62,531,356],{"class":355},[62,533,534,537,540,542],{"class":223,"line":374},[62,535,536],{"class":377},"    -",[62,538,539],{"class":351}," name",[62,541,384],{"class":355},[62,543,544],{"class":231}," \"Ollama\"\n",[62,546,547,550,552],{"class":223,"line":390},[62,548,549],{"class":351},"      apiKey",[62,551,384],{"class":355},[62,553,554],{"class":231}," \"ollama\"\n",[62,556,557,560,562],{"class":223,"line":401},[62,558,559],{"class":351},"      baseURL",[62,561,384],{"class":355},[62,563,564],{"class":231}," \"http:\u002F\u002Follama:11434\u002Fv1\u002F\"\n",[62,566,567,570],{"class":223,"line":412},[62,568,569],{"class":351},"      models",[62,571,356],{"class":355},[62,573,574,577],{"class":223,"line":420},[62,575,576],{"class":351},"        default",[62,578,356],{"class":355},[62,580,581,584],{"class":223,"line":431},[62,582,583],{"class":377},"          -",[62,585,586],{"class":231}," \"qwen3.5\"\n",[62,588,589,592,594],{"class":223,"line":442},[62,590,591],{"class":351},"        fetch",[62,593,384],{"class":355},[62,595,596],{"class":516}," true\n",[62,598,599,602,604],{"class":223,"line":453},[62,600,601],{"class":351},"      titleConvo",[62,603,384],{"class":355},[62,605,596],{"class":516},[62,607,608,611,613],{"class":223,"line":464},[62,609,610],{"class":351},"      titleModel",[62,612,384],{"class":355},[62,614,615],{"class":231}," \"current_model\"\n",[62,617,618,621,623],{"class":223,"line":472},[62,619,620],{"class":351},"      summarize",[62,622,384],{"class":355},[62,624,625],{"class":516}," false\n",[62,627,628,631,633],{"class":223,"line":59},[62,629,630],{"class":351},"      summaryModel",[62,632,384],{"class":355},[62,634,615],{"class":231},[62,636,637,640,642],{"class":223,"line":486},[62,638,639],{"class":351},"      modelDisplayLabel",[62,641,384],{"class":355},[62,643,544],{"class":231},[10,645,646],{"id":646},"起動",[77,648,649],{},"ここまで設定を進めたら起動します。",[212,651,653],{"className":214,"code":652,"filename":216,"language":217,"meta":60,"style":60},"docker compose up -d\n",[219,654,655],{"__ignoreMap":60},[62,656,657,660,663,666],{"class":223,"line":224},[62,658,659],{"class":227},"docker",[62,661,662],{"class":231}," compose",[62,664,665],{"class":231}," up",[62,667,668],{"class":231}," -d\n",[77,670,671,672,675],{},"ブラウザから",[219,673,674],{},"http:\u002F\u002Flocalhost:3080","にアクセスすると、",[77,677,678],{},[54,679],{"alt":60,"src":680},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002F8f931ac8ea08-20260323.png",[77,682,683],{},"こんな感じの画面が現れます。Sign upしてください。",[77,685,686],{},[54,687],{"alt":60,"src":688},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002F20c286e091ec-20260323.png",[77,690,691],{},"ログインすると、こんな感じ。",[10,693,694],{"id":694},"ollamaのモデルをpull",[77,696,697],{},"ollamaでモデルをpullします。今回はqwen3.5を。",[212,699,701],{"className":214,"code":700,"filename":216,"language":217,"meta":60,"style":60},"docker exec -it ollama ollama pull qwen3.5\n",[219,702,703],{"__ignoreMap":60},[62,704,705,707,710,713,716,718,721],{"class":223,"line":224},[62,706,659],{"class":227},[62,708,709],{"class":231}," exec",[62,711,712],{"class":231}," -it",[62,714,715],{"class":231}," ollama",[62,717,715],{"class":231},[62,719,720],{"class":231}," pull",[62,722,723],{"class":231}," qwen3.5\n",[77,725,726],{},"モデルをpullしたら再起動します。",[212,728,730],{"className":214,"code":729,"filename":216,"language":217,"meta":60,"style":60},"docker compose down && docker compose up -d\n",[219,731,732],{"__ignoreMap":60},[62,733,734,736,738,741,744,747,749,751],{"class":223,"line":224},[62,735,659],{"class":227},[62,737,662],{"class":231},[62,739,740],{"class":231}," down",[62,742,743],{"class":377}," &&",[62,745,746],{"class":227}," docker",[62,748,662],{"class":231},[62,750,665],{"class":231},[62,752,668],{"class":231},[77,754,755],{},[54,756],{"alt":60,"src":757},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002Fc96a9aae3047-20260323.png",[77,759,760],{},"モデルの選択画面に現れればOKです。",[10,762,763],{"id":763},"話してみる",[77,765,766],{},[54,767],{"alt":60,"src":768},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002Fedebedca3cea-20260323.png",[77,770,771],{},[54,772],{"alt":60,"src":773},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002F39083ef68b05-20260323.png",[77,775,776],{},"ちゃんと話せます。",[10,778,779],{"id":779},"おわり",[77,781,782,783,786,787,789],{},"今回はここまでです。",[784,785],"br",{},"\nここでは書いていませんが検索まで設定してます。",[784,788],{},[54,790],{"alt":60,"src":791},"https:\u002F\u002Fstorage.googleapis.com\u002Fzenn-user-upload\u002F6e5888869252-20260323.png",[77,793,794],{},"いいぽよ。",[10,796,797],{"id":797},"更新履歴",[77,799,800],{},"2026\u002F03\u002F24: 一部内容に誤りがあったため修正",[802,803,804],"style",{},"html pre.shiki code .siK8c, html code.shiki .siK8c{--shiki-default:#8AADF4;--shiki-default-font-style:italic}html pre.shiki code .sSZ1V, html code.shiki .sSZ1V{--shiki-default:#A6DA95}html pre.shiki code .sizsb, html code.shiki .sizsb{--shiki-default:#ED8796;--shiki-default-font-style:italic}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 pre.shiki code .s57MT, html code.shiki .s57MT{--shiki-default:#8AADF4}html pre.shiki code .sXptk, html code.shiki .sXptk{--shiki-default:#8BD5CA}html pre.shiki code .slVFb, html code.shiki .slVFb{--shiki-default:#939AB7}html pre.shiki code .s7Qn8, html code.shiki .s7Qn8{--shiki-default:#F5A97F}",{"title":60,"searchDepth":238,"depth":238,"links":806},[807,808,809,810,823,824,825,826,827],{"id":12,"depth":238,"text":13},{"id":82,"depth":238,"text":83},{"id":131,"depth":238,"text":131},{"id":206,"depth":238,"text":206,"children":811},[812,813,815,817,819,821],{"id":210,"depth":366,"text":210},{"id":248,"depth":366,"text":814},".envの作成",{"id":277,"depth":366,"text":816},"librechat.yamlの作成",{"id":304,"depth":366,"text":818},"docker-compose.override.yamlの作成",{"id":330,"depth":366,"text":820},"docker-compose.override.ymlの編集",{"id":494,"depth":366,"text":822},"librechat.yamlの編集",{"id":646,"depth":238,"text":646},{"id":694,"depth":238,"text":694},{"id":763,"depth":238,"text":763},{"id":779,"depth":238,"text":779},{"id":797,"depth":238,"text":797},"2026-03-23","LibreChatとOllamaを組み合わせて、ローカル環境で大規模言語モデル（LLM）を動作させる方法を解説します。","md",{},true,"\u002Fblog\u002Flibrechat-ollama-local-llm",{"title":5,"description":829},"blog\u002Flibrechat-ollama-local-llm",[837,839,840,842],{"name":838},"ai",{"name":659},{"name":841},"llm",{"name":843},"ローカルllm","70Y3GKjsJwqYS1z54qt9P2ozne14EEXcnMqOyjquMfI",{"next":846,"prev":849},{"path":847,"title":848},"\u002Fblog\u002Fanime-encode-study","アニメエンコードの研究(笑)",{"path":850,"title":851},"\u002Fblog\u002Fcloudflare-zero-trust-home-access","Cloudflare Zero Trustで宅外から宅内のネットワークへアクセスする",1775738147825]