OllamaとAnythingLLMを連携させる方法|ローカルLLMにドキュメント管理・複数ワークスペース・ユーザー権限を一括追加する手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)ローカルLLM > OllamaとAnythingLLMを連携させる方法|ローカルLLMにドキュメント管理・複数ワークスペース・ユーザー権限を一括追加する手順
「OllamaでRAGを使いたいが、Pythonコードを書かずにドキュメントをアップロードするだけで使い始めたい」
「チームメンバーごとに専用のドキュメントセットと会話履歴を分離して管理したい」
そんな悩みを抱えるインフラエンジニアや情報システム担当者は多い。この記事では、OllamaをバックエンドにしてAnythingLLMを動かす手順を解説する。AnythingLLMはRAG・マルチワークスペース・ユーザー権限管理を標準搭載したオープンソースのUIツールで、Pythonコードを1行も書かずに社内ドキュメントQ&Aをローカル環境で実現できる。
Ubuntu 22.04/24.04でOllamaが稼働中のLinuxサーバーを前提に、DockerでAnythingLLMをインストールしてOllamaと繋ぐところから、マルチユーザー設定・RAGチューニング・よくあるトラブルの対処まで順に説明する。

この記事のポイント

・docker compose up -d だけでAnythingLLMのWeb UIとRAGが即起動する
・LinuxではDockerからOllamaへの接続にextra_hostsの明示設定が必要
・ワークスペース単位でドキュメントを隔離しユーザーごとに参照権限を割り当てられる
・チャンクサイズとTop K Resultsの調整がRAG精度向上の主要ポイント


OllamaとAnythingLLMを連携させる方法|ローカルLLMにドキュメント管理・複数ワークスペース・ユーザー権限を一括追加する手順

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

OllamaとAnythingLLMを組み合わせると何が変わるか

Ollamaは推論エンジンとREST APIサーバーだが、「誰がどのドキュメントを参照しているか」「部署ごとにドキュメントを分離したい」という要件には応えられない。ここにAnythingLLMを重ねると、以下の機能がノーコードで追加される。
・Webブラウザから操作できるチャットUI(Open WebUIに近いが、RAGが標準搭載)
・ワークスペース単位のドキュメント隔離(営業用・開発用・HR用など部署別に分けて管理)
・PDF・DOCX・XLSX・TXT・Markdownの直接アップロードとベクター化
・管理者・一般ユーザーの2段権限によるマルチユーザー管理

Open WebUIとの違いを一言で言えば、Open WebUIは「チャットインターフェース」でAnythingLLMは「社内ナレッジベース+チャット」だ。RAGを自前でPythonコードとして実装したい場合は別だが、すぐに使い始めたいチームにはAnythingLLMが向いている。
情報セキュリティの観点から社内データをクラウドに出せない場面でのローカルLLM活用については、社内でChatGPTが使えないときの代替手段も合わせて参考にしてほしい。

事前準備|OllamaサーバーとDockerの動作確認

1. Ollamaの動作確認

AnythingLLMを設定する前に、OllamaのAPIサーバーが正常に動作していることを確認する。

$ curl http://localhost:11434 Ollama is running

`Ollama is running` と表示されれば問題ない。応答がない場合はsystemdサービスの状態を確認する。

$ systemctl status ollama * ollama.service - Ollama Service Loaded: loaded (/etc/systemd/system/ollama.service; enabled) Active: active (running) since Sun 2026-08-24 09:00:00 JST

モデルが1本以上ロードされているかも確認しておく。今回はLlama3.3の量子化モデルを例に使う。

$ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_0 abc123def456 40 GB 2 hours ago # モデルがない場合は取得する $ ollama pull llama3.3:70b-instruct-q4_0

OllamaをLinuxサーバーにゼロから構築する手順の詳細はUbuntu ServerでローカルLLMを構築する方法を参照してほしい。

2. DockerとDocker Composeの確認

AnythingLLMはDockerイメージとして公式配布されている。以下のコマンドで動作環境を確認する。

$ docker --version Docker version 27.0.3, build 7d4bcd8 $ docker compose version Docker Compose version v2.28.1

Docker Compose v2系(`docker compose` コマンド形式)が必要だ。v1系の `docker-compose`(ハイフンあり)を使っている場合はアップグレードするか、以降のコマンドを `docker-compose` に読み替えること。

3. AnythingLLMの動作要件

・ポート 3001 の開放(`sudo ufw allow 3001/tcp` など、ファイアウォール設定に応じて対応)
・ストレージ:10GB以上の空き容量(アップロードするドキュメント量に依存)
・RAM:4GB以上(OllamaのモデルはこれとはVRAMを別に使用)

AnythingLLMをDockerでLinuxサーバーにインストールする手順

1. 作業ディレクトリの準備

$ mkdir -p ~/anythingllm/storage $ cd ~/anythingllm

2. docker-compose.ymlの作成

# ~/anythingllm/docker-compose.yml services: anythingllm: image: mintplexlabs/anythingllm:latest container_name: anythingllm ports: - "3001:3001" volumes: - ./storage:/app/server/storage environment: - STORAGE_LOCATION=/app/server/storage - JWT_SECRET=change_this_to_a_random_64char_string_abcdefghijklmnopqrs - AUTH_TOKEN=change_this_to_your_admin_password extra_hosts: - "host.docker.internal:host-gateway" restart: unless-stopped

`extra_hosts` の設定がLinux環境での最重要ポイントだ。macOS・Windowsと異なり、Linuxのコンテナ内では `host.docker.internal` がデフォルトで解決できない。この1行を省略すると、後ほどAnythingLLMの設定画面でOllamaのBase URLに `http://host.docker.internal:11434` を入力してもConnectionエラーが出る。
`JWT_SECRET` はセッション管理に使う秘密鍵で64文字以上のランダム文字列を設定する。`AUTH_TOKEN` はシングルユーザーモード時の管理者パスワードだ(マルチユーザーモード有効化後は無効になる)。

3. コンテナの起動と確認

$ docker compose up -d [+] Running 1/1 ✔ Container anythingllm Started $ docker compose ps NAME IMAGE STATUS anythingllm mintplexlabs/anythingllm:latest running

ブラウザで `http://<サーバーのIPアドレス>:3001` を開くと初回セットアップウィザードが表示される。

OllamaをAnythingLLMのLLMバックエンドとして登録する手順

1. セットアップウィザードでLLMを設定

初回アクセス時に「LLM Preference」の選択画面が表示される。リストから「Ollama」を選択して、以下を入力する。
・Ollama Base URL: `http://host.docker.internal:11434`
・Model: リストから使用するモデルを選択(例: `llama3.3:70b-instruct-q4_0`)
・Token Context Window: モデルの最大コンテキスト長(Llama3.3なら131072)

「Test Connection」ボタンをクリックして「Connected to Ollama」と表示されれば接続成功だ。モデルリストが表示されない場合はBase URLの入力を確認し、末尾のスラッシュがないことをチェックする。

2. Embeddingモデルの設定

RAGを使う場合、テキストをベクター化するEmbeddingモデルも設定する。AnythingLLMには組み込みの軽量Embeddingモデルが含まれているが、日本語テキストの精度を上げたい場合はOllamaの専用モデルを使うとよい。
先にホスト側でモデルを取得しておく。

$ ollama pull nomic-embed-text pulling manifest pulling ... success

Settings > Embedding Preference から「Ollama」を選択し、Base URLに `http://host.docker.internal:11434` を入力する。モデルリストに `nomic-embed-text` が表示されたら選択して保存する。
EmbeddingモデルとベクトルDBを組み合わせてPythonでRAGパイプラインをゼロから実装したい場合は、OllamaをLinuxサーバーに構築する基本手順も参照してほしい。

ワークスペースを作成して社内ドキュメントをアップロードする手順

1. ワークスペースの作成

ホーム画面左サイドバー下部の「+ New Workspace」をクリックしてワークスペースを作成する。「営業部マニュアル」「開発チームWiki」「人事規程」など用途別に名前をつけると管理しやすい。
ワークスペースごとにドキュメントセットが完全に独立するため、営業担当が開発用ドキュメントを誤って検索してしまうといった意図しないデータ混在が起きない。部署ごとに機密レベルが異なる文書を扱う場合に特に有効だ。

2. ドキュメントのアップロード

ワークスペース内の「Upload Document」ボタンをクリックしてファイルを追加する。
対応形式はPDF・DOCX・XLSX・TXT・MD・CSVなど。複数ファイルを一括でドラッグ&ドロップできる。
アップロード後、ファイルにチェックを入れて「Move to Workspace」→「Save and Embed」の順にクリックするとチャンク分割とベクター化が始まる。ファイルサイズによって数秒~数分かかる。

3. 質問応答の動作確認

チャット入力欄に質問を入力すると、Ollamaが回答を生成し、右ペインに参照したドキュメントのチャンクが「Sources」として表示される。
Sourcesに表示されるドキュメント名と該当箇所を確認することで、回答がどの根拠から来ているかを視覚的に追える。「RAGが本当に効いているかどうか」を目視で確認する習慣をつけると品質管理がしやすい。

マルチユーザーモードを有効化してユーザー権限を設定する手順

1. マルチユーザーモードの有効化

Settings > Security > Enable Multi-User Mode を開き、「Enable Multi-User Mode」をクリックする。
初回は管理者アカウントの作成を求められる。入力したメールアドレスとパスワードが管理者ログイン情報になるため、必ず控えておく。
有効化後は `docker-compose.yml` の `AUTH_TOKEN` による単一パスワード認証が無効化され、ユーザーごとのログイン認証に切り替わる。

2. ユーザーの追加と権限割り当て

Settings > Users > New User からメンバーアカウントを作成する。ロールは「Administrator」と「Default」の2種類だ。
Defaultユーザーは管理者が明示的に許可したワークスペースのみアクセスできる。各ワークスペースの Settings > Workspace Users でアクセスを許可するユーザーを選択することで、「このワークスペースはAさんとBさんだけ参照可能」という設定が実現できる。

RAG精度を高めるEmbeddingとチャンクサイズの調整ポイント

ドキュメントをアップロードしただけでは期待どおりの回答が得られないことがある。精度が低い場合はワークスペース単位のチャンク設定を見直す。

Settings > Workspace Settings で設定できる主なパラメータ:
・Max Chunk Length(デフォルト1000字前後): 技術仕様書のような情報密度が高い文書は500~700に下げると検索ヒット精度が上がりやすい
・Top K Results(デフォルト4): 参照するチャンク数を増やすと広い文脈を取得できるがレスポンスが遅くなりモデルのコンテキスト長を消費する
・Similarity Threshold: 類似度スコアの足切り値。デフォルト付近でRAGが効かない場合は下げてみると改善することが多い

モデルごとの日本語対応能力には差があるため、RAGの回答品質が低い場合はモデルの切り替えも検討する。Llama3.3・Mistral・Gemma 3の特性比較はローカルLLMのモデルを比較する方法にまとめている。

運用現場で効果があったアプローチとして、PDFをそのままアップロードするよりテキストファイルに変換してから取り込む方法がある。PDFのOCR品質に依存しないためベクター化の品質が安定しやすく、不要な図表キャプションや目次ページを除去してから取り込むとチャンクの粒度が改善する。Markdownに変換して見出し構造を活かしたチャンク分割をさせるのも有効だ。

よくあるトラブルと対処法

1. コンテナからOllamaに接続できない(ConnectionError)

最も多いのが、OllamaのBase URLに `http://localhost:11434` を入力してしまうケースだ。コンテナ内の `localhost` はコンテナ自身を指すため、ホストのOllamaには到達しない。
`docker-compose.yml` に `extra_hosts: - "host.docker.internal:host-gateway"` が設定されていれば `http://host.docker.internal:11434` で到達できる。
設定済みでもつながらない場合は、Ollamaのリスニングアドレスが `127.0.0.1` に限定されている可能性がある。systemdのoverride.confで `OLLAMA_HOST` を設定してサービスを再起動する。

# override.confを編集して OLLAMA_HOST を追加 $ sudo systemctl edit ollama # エディタが開くので以下を追記して保存 [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" $ sudo systemctl restart ollama $ curl http://localhost:11434 # ホスト側からの確認 Ollama is running

2. ドキュメントのEmbeddingが途中で止まる

大きなPDFファイル(50ページ超)のEmbeddingは数分かかることがある。ブラウザタブを閉じるとジョブが中断することがあるため、処理中はタブを開いたまま待機する。Dockerのログで進捗を確認できる。

$ docker compose logs -f anythingllm # 「Embedded N chunks from document.pdf」が出続けていれば処理中 # エラーが表示されていれば対象ファイルの形式や文字コードを確認する

3. マルチユーザー有効化後にログインできない

`AUTH_TOKEN` を設定した状態でマルチユーザーモードを有効化すると、ログイン画面に切り替わっても既存の `AUTH_TOKEN` 文字列では認証できない。認証方式がトークン単体からアカウントログインに変わるためだ。
マルチユーザー有効化時に作成した管理者アカウントのメールアドレスとパスワードで改めてログインする。パスワードを紛失した場合は `./storage/anythingllm.db` (SQLiteデータベース)を直接操作して管理者パスワードをリセットする方法があるが、データベースの破損リスクがあるため、パスワードは必ずドキュメントに記録しておくこと。

まとめ

OllamaとAnythingLLMを組み合わせることで、Pythonコードを書かずに社内ドキュメントQ&A・マルチワークスペース・ユーザー権限管理をローカル環境で実現できる。
項目 コマンド・設定値 ポイント
AnythingLLM起動 docker compose up -d storage/ディレクトリをボリュームマウントして永続化
Ollama接続URL http://host.docker.internal:11434 Linuxではextra_hostsの設定が必須
Embeddingモデル取得 ollama pull nomic-embed-text 日本語文書はnomic-embed-textが安定動作
OllamaホストIPの公開 sudo systemctl edit ollama OLLAMA_HOST=0.0.0.0:11434 を追記して再起動
マルチユーザー有効化 Settings > Security > Enable Multi-User Mode 有効化時に管理者アカウントを作成・記録する
Embeddingログ確認 docker compose logs -f anythingllm 処理進捗とエラーをリアルタイムで確認できる

AnythingLLMとOllamaの構築を2日間で体験する

AnythingLLMのセットアップからRAGチューニング・ユーザー権限管理まで、実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。