107
103

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【deepwiki-open】いいパソコンはもってないけど、ローカルLLMで社内Wikiをつくりたい

107
Posted at

1.はじめに

こんにちは。

みなさん、『 いいパソコン 』持っていますか?

GPUが積まれた高性能マシン。
メモリたっぷり。
ローカルでLLMをブン回せる環境。

私は持っていません。
(パソコンってお高いですからね...設定も大変だし。)

それでもローカルLLMで社内Wikiを作ってみたい!
ということで今回は、
「いいPCがなくても、ローカルLLMを使って社内Wikiを作る」をテーマに

  • EC2
  • deepwiki-open
  • Ollama( + Bedrock )

を使った構成を試していきます!

本記事で構築した環境の構成は以下の通りとなっています。

  • 実行環境はEC2上
  • 一部でAmazon Bedrockを利用

今回は、AWS上での利用を社内で許可された機密情報のみ使用する前提での検証方法を紹介します。
実際に本方法を試す場合は、ご自身の所属の企業のルールに従ってください。

本記事の情報は2026年2月時点の情報です。

2.deepwiki-openってなに?

deepwiki-openはDeepWikiをローカルに構築し、LLMと連携した自分だけのWikiを作れるOSSです。

image.png

もともとDeepWikiという、GitHubリポジトリをAIの力でWiki化するオンライン上のサービスがあります。
そのOSS版(セルフホスト版)と考えていただければイメージしやすいと思います。

以下に主な特徴についてまとめます。

主な特徴

特徴1:プライベートリポジトリも指定できる

オンライン版DeepWikiでは、パブリックリポジトリのみが対象であるため、社内で閉じているプライベートリポジトリをWiki化することはできません。
しかし、deepwiki-openではパブリックリポジトリに加え、プライベートリポジトリも対象にすることができます。
また、使用するモデルを自分で選択できるため、ローカルLLMやオプトアウトされたLLMを利用することで、安全に社内情報を扱うことができます。

社内や個人で閉じたプライベートリポジトリを管理されている方におすすめです!

特徴2:日本語対応のWikiを生成できる

オンライン版DeepWikiで生成されたWikiは英語で表記されています。
しかし、deepwiki-openでは使用モデルだけでなく言語も指定できるため、日本人が誰でも簡単に読めるWikiを生成することができます。

特徴3:質問型インターフェースが用意されている

deepwiki-openは単なる静的Wikiツールではありません。対象にしたリポジトリを参照した上でQ&Aが可能な、質問型インターフェースが用意されています。

例えば、

「このシステムのアーキテクチャは?」
「導入手順を細かく教えて」
「認証周りの実装箇所はどこ?」

などの質問を投げかけると、リポジトリ全体を横断して関連情報を整理し、構造を踏まえた回答が返ってきます。
これがdeepwiki-openの大きな魅力です。

初見のリポジトリを大まかに把握したいときでも、リポジトリの構造を詳細に深く確認したいときでも、常に有用な機能です。

オンライン版DeepWikiはチャット形式で会話を継続できますが、
現時点のdeepwiki-openは一問一答方式となっています。

3.前提環境の構築

deepwiki-openを動作させるための環境を構築していきます!

「いいパソコン」をもっていないため、手元のPCの代わりにEC2を利用する構成を採用します。そのためGPUや大きめのメモリがある設定をしていきます。
また今回は必要に応じてBedrockも併用するため、そちらの設定も行います。

利用サービス

  • 開発環境:EC2
  • LLMモデルサービス:Amazon Bedrock
  • GitHubリポジトリ:任意のプライベートリポジトリ

アーキテクチャ

全体構成は以下のようになります。

image.png

  • ブラウザからdeepwiki-openへアクセス
  • EC2上でdeepwiki-openが動作
  • 埋め込み処理はOllamaで実行
  • 文章生成はBedrockで実行

という構成になっています。

AWSマネジメントコンソール上での準備

Amazon Bedrockについて

モデルアクセス設定が廃止され、自動で有効化されるようになったため、
手動でモデルアクセスを有効化する必要はありません。

ただし、Anthropic(Claude系モデル)については初回のみユースケース入力が求められます
画面の案内に従って設定してください。

EC2インスタンスの立ち上げ

EC2インスタンスを以下の設定で立ち上げます。

インスタンスの設定

  • 名前とタグ:任意(今回はdeepwiki-open
  • AMI(OS):Ubuntu Server 24.04 LTS (HVM),EBS General Purpose (SSD) Volume Type.
  • インスタンスタイプ:GPUの積んであるもの(今回はg4dn.xlarge
  • キーペア:任意
  • ネットワーク:セキュリティグループを作成(詳細は後述)
  • ストレージ:任意(今回は50GB)

AMIについて
他の候補でも問題ありませんが、この後のCLI上の操作に影響を与える可能性があります。

インスタンスタイプについて
ローカルLLMを動かす場合は、使用するモデルサイズに応じて必要なスペックが変わります。ローカルLLMを使用せず、Bedrockのモデルを使用する場合は、通常のもの(t3.mediumなど)で問題ありません。

今回使用するg4dn.xlargeはGPU付きで性能が高い分、値段も高額になります。
東京リージョンのオンデマンド料金は $0.71/時間(約111円/時間)です
検証が終わったら忘れずにEC2インスタンスを停止しましょう。

セキュリティグループの設定

セキュリティグループを以下の設定で編集します。

UI用

  • タイプ:カスタムTCP
  • プロトコル:TCP
  • ポート範囲:3000
  • ソース:マイIP(他のPCから受け付けたい場合は、範囲を広くする必要があります)
  • 説明:任意(UI用)

APIサーバー用

  • タイプ:カスタムTCP
  • プロトコル:TCP
  • ポート範囲:8001
  • ソース:マイIP(他のPCから受け付けたい場合は、範囲を広くする必要があります)
  • 説明:任意(APIサーバー用)

EC2インスタンスにIAMロールをアタッチ

以下の設定でIAMロールを作成し、インスタンスにアタッチします。

IAMロールの設定

  • 信頼されたエンティティタイプ:AWSのサービス
  • ユースケース:EC2
  • 許可ポリシー:AmazonBedrockFullAccess
  • ロールの詳細:任意(今回はロール名をAmazonBedrockFullAccess)

これでAWSマネジメントコンソール上での準備は完了です!
インスタンスに接続できましたら、次はインスタンス上の準備にいきましょう!

EC2インスタンス上での準備

Ubuntu Server 24.04の環境に前提となるツールやライブラリを導入していきます。
また、GPU最適化のためにNVIDIAドライバなども導入します。

導入ツールは次の5つです。

  • Docker
  • Docker compose
  • nvidia-driver
  • nvidia-cuda-toolkit
  • Ollama

これらのツール導入に関しては、以下の記事を参考にさせていただきました。

Docker と Docker compose のインストール

Docker系のインストール手順
# パッケージをアップデート
$ sudo apt update

# 通信系の設定
$ sudo apt install ca-certificates curl gnupg lsb-release

# Docker公式リポジトリの署名キーを保存するディレクトリを作成
$ sudo mkdir -p /etc/apt/keyrings

# Docker公式のGPG公開鍵を取得し、aptが利用できる形式に変換して保存
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker公式リポジトリをaptのソースリストに追加
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# パッケージの再アップデート
$ sudo apt update

# Dockerのインストール
$ sudo apt install docker-ce docker-ce-cli containerd.io

# Docker composeのインストール
$ sudo apt install docker-compose-plugin

バージョンを確認して、正しくバージョンが表示されれば成功です!

バージョン確認
$ docker --version
Docker version 29.2.1

$ docker compose version
Docker Compose version v5.0.2

nvidia-driver と nvidia-cuda-toolkit のインストール

GPU設定系のインストール手順
# nvidia-driverとnvidia-cuda-toolkitのインストール
$ sudo apt install -y nvidia-driver-525 nvidia-cuda-toolkit

# システムの再起動
$ sudo reboot

以下コマンドで、GPU情報や温度が表示されれば成功です!

バージョン確認
$ nvidia-smi
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.288.01             Driver Version: 535.288.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Tesla T4                       Off | 00000000:00:1E.0 Off |                    0 |
| N/A   23C    P8               9W /  70W |      2MiB / 15360MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

これでEC2インスタンス上の準備は完了です!
次はOllamaのインストールです!

Ollamaの準備

deepwiki-openでは、生成モデルと埋め込みモデルを使用するため、2種類のモデルをインストールしていきます!

Ollamaの導入

公式のインストールスクリプトの実行
$ curl -fsSL https://ollama.com/install.sh | sh

モデルのインストール

# 生成モデルのインストール
$ ollama pull qwen3:8b

# 埋め込みモデルのインストール
$ ollama pull nomic-embed-text

これでdeepwiki-openを動かすためのOllamaの準備が整いました!
最後にGitHub上での準備に移ります!

GitHub上での準備

PATの設定

GitHubのプライベートリポジトリを扱うには、Personal Access Token(PAT)を設定する必要があります。

社内のプライベートリポジトリを扱う際には、社内ルールに則ってご利用ください。

GitHubの設定からPAT作成画面まで行きます。

PATの設定

  • Token name:任意(今回はdeepwiki-open)
  • Description:任意
  • Resource owner:Wiki化したいリポジトリの所持者(自分・会社など)
  • Expiration:30 days
  • Repository access:Only select repositories
    • Select repositories:Wiki化したいリポジトリ
  • Permissions
    • Add permissions:Contents(Read-only), Metadata(Read-only)

image.png

「Generate token」を選択すると、作成完了です!

PATは作成時の1度しか表示されないため、必ず保存するようにしてください。

これでOllamaを動かす環境、deepwiki-openを導入する環境が全て整いました!

4.deepwiki-openに接続

ここからはdeepwiki-openの導入に入ります。
以下のGitHubリポジトリやReadmeを参考に導入します。

導入手順

deepwiki-openの導入

deepwiki-openをクローン
$ git clone https://github.com/AsyncFuncAI/deepwiki-open.git

# ディレクトリを移動
$ cd deepwiki-open

環境変数設定

環境変数を設定する
# ダミーでGoogleとOpenAIのAPIを設定
$ echo "GOOGLE_API_KEY=your_google_api_key" > .env
$ echo "OPENAI_API_KEY=your_openai_api_key" >> .env

# Ollamaの設定
# Ollamaサーバーのホストアドレス設定(デフォルト: http://localhost:11434)
$ echo 'OLLAMA_HOST=http://[インスタンスのプライベートIPv4アドレス]:11434' >> .env

# 埋め込みモデルにOllamaを設定
$ echo 'DEEPWIKI_EMBEDDER_TYPE=ollama' >> .env

# APIサーバーのベースURL(デフォルト: http://localhost:8001)
$ echo 'SERVER_BASE_URL=http://[インスタンスのパブリックIPv4アドレス]:8001' >> .env

# Bedrockの設定
# AWSリージョン設定
$ echo 'AWS_REGION=ap-northeast-1' >> .env

deepwiki-openの起動

deepwiki-open起動の手順
$ docker compose up -d

これでdeepwiki-openの導入・設定が完了し、Wikiを生成する準備が整いました!
次は実際にLLMを用いてWikiを生成していきます。

5.社内Wikiを作ってみる

deepwiki-openの起動に成功したので、実際に社内Wikiを作っていきましょう!

http://[インスタンスのパブリックIPv4アドレス]:3000を確認すると、
ホーム画面が表示されます。

image.png

上部の検索バーにWiki化したいGitHubリポジトリを入力します。
「Wikiを生成」を選択すると、Wiki設定画面が表示されます

image.png

作成したいWikiに応じて設定していきます。
以下に設定項目の説明を示します。

Wiki設定

  • リポジトリ:入力済み
  • Wiki言語:任意(今回は日本語)
  • Wikiタイプ:任意(今回は包括的
  • モデルプロバイダー:任意(今回はBedrock)
  • モデル選択:任意(今回はanthropic.claude-3-5-sonnet-20240620-v1:0
    • カスタムモデルを使用:任意(今回はON)
  • GitHub個人アクセストークン:作成したPATを入力(3章)

今回は生成モデルにBedrockを使用しましたが、完全にローカルLLMで完結したい場合はOllamaを使用しましょう。
環境変数での設定により、埋め込みモデルにはOllamaのnomic-embed-textが使用されるようになっています。

「Wikiを生成」を選択すると、Wiki生成が始まります!
設定によりますが、5分~10分程度でWikiの生成が完了します。

image.png

生成が完了すると、プライベートリポジトリのWikiが表示されます!
システムアーキテクチャや主要機能、フロントエンド・バックエンドコンポーネントなどの詳細な情報を確認することができるようになりました。

上図はプライベートリポジトリではなく、
deepwiki-openリポジトリを対象に生成したものです。

生成したWikiに対して、右下の吹き出しを選択することで、質問を投げかけることができます。

image.png

deepwiki-openのアーキテクチャ描いて

と質問してみました。
しっかりと図で表現して説明してくれていますね!ありがたいです。

このように、社内のプライベートリポジトリをWiki化できるので、キャッチアップや調査がかなり楽になりました!

6.苦労した&まだ終わっていないところ

今回、deepwiki-openを検証していく中で、いくつかハマりポイントや未解決の課題がありましたので、そちらを紹介していきます...
(本当は完ぺきに全部解決したかった...)

【解決済】モデル設定が反映されない

選択できるモデルはapi/config/generator.jsonの内容をもとに生成されています。
そのため、generator.jsonを修正することで、任意のモデルを選択することが可能です。
しかし、デフォルトのdocker-compose.ymlではこの内容を参照するようにできていないため、UIのモデル選択に反映されません。
したがって、以下のようにdocker-compose.ymlに追記をすることでモデル設定が反映されるようになります。

デフォルトに設定を追加
services:
  deepwiki:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "${PORT:-8001}:${PORT:-8001}"
      - "3000:3000"
    env_file:
      - .env
    environment:
      - PORT=${PORT:-8001}
      - NODE_ENV=production
      - SERVER_BASE_URL=http://localhost:${PORT:-8001}
      - LOG_LEVEL=${LOG_LEVEL:-INFO}
      - LOG_FILE_PATH=${LOG_FILE_PATH:-api/logs/application.log}
    volumes:
      - ~/.adalflow:/root/.adalflow
      - ./api/logs:/app/api/logs
      # 【追記】configで修正した内容を読み取るように
      - ./api/config:/app/api/config
    mem_limit: 6g
    mem_reservation: 2g
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:${PORT:-8001}/health"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 30s

【未解決】生成モデルにOllamaを使用するとエラーが出る

Ollamaのqwen3:8bを生成モデルとして利用したところ、Wiki生成中にエラーが発生してしまいます...

image.png

もちろんリポジトリは存在しているため、他に原因があると考えられます。
Issueとしても挙げられており、議論が続いていますが明確な答えはでていないようです。
提案されている内容は全て試しましたが、うまくいきませんでした...

一方で、ローカルPC上でdeepwiki×Ollamaがうまくいったという例もありますので、
EC2上というネットワーク構成が影響していると考えられます。

【未解決】WebSocketでの接続が失敗している

Wiki生成時および質問インターフェース利用時にWebSocketエラーが発生しています。

image.png

ブラウザの開発者ツールを確認すると、ws://localhost:8001に対してWebSocket接続を試みています。
自分のPCからみたlocalhostは自分のPCを指すため、EC2上で動作しているdeepwiki-openには接続できません。
それを防ぐために環境変数として

SERVER_BASE_URL=http://[インスタンスのパブリックIPv4アドレス]:8001

のように設定したのですが、正しく反映されていないようです...

WebSocket通信した場合でも、自動的にHTTPストリーミングへフォールバックする実装になっているため問題ないと考えていました。
しかし、Ollamaでの生成に成功したローカルPC上での動作との差分がWebSocket接続しかないため、ここを正しく修正できれば、正常に動作する可能性が高いとみています。

7.おわりに

今回は「いいパソコン」を持っていない人でも、AWSサービスとOllamaを組み合わせることでdeepwiki-openを使って社内Wikiを生成できるかもと思い、検証してみました。

結論として、EC2×deepwiki×Ollama(+Bedrock)の構成で社内Wikiを生成できることは確認できました!
一方で、そもそもAWS上に社外秘を入れていい前提ならば、インスタンス料金まで含めて考えると、素直に生成も埋め込みもBedrockを利用したほうが良いかもしれません笑

非常に面白い技術だと感じていますので、引き続き検証を続けながら、
今後もDeepWiki / deepwiki-openに注目していきます!!

107
103
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
107
103

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?