Visual Studio Code の Continue 拡張機能から ConoHa VPS の NVIDIA L4 上の Ollama を使用してバイブコーディング環境を作ってみた
こんにちは、今年もブログを更新することになりました、GMOインターネットの岡村です。ConoHa で提供されている NVIDIA L4 で最新の Ubuntu 24.04 のサーバーを 200GB に増量されたブートボリュームで構築し、その上で動作する Ollama を VS Code の Continue 拡張機能で利用できるようにし、Vibe Coding の環境を整えてみます。
やりたいこと
昨今 GitHub Copilot などの AI によるコーディング支援、さらにはバイブコーディングなども知られるようになってきました。
これらの活用は OSS の開発や個人的なものでは問題なくとも、用途によっては外部に情報を送信するのはためらわれる場合もあるかもしれません。
その場合、ローカルで実行可能な LLM や、ConoHa のようなサーバー上で LLM を実行させる、といった方法があります。
GitHub Copilot 自体はローカル等では実行できませんが、Visual Studio Code の拡張機能である Continue を使うと、Ollama などを使用してローカルやサーバー上で実行することができます。
Continue - open-source AI code assistant - Visual Studio MarketplaceOllama
ConoHa のご紹介
NVIDIA L4 サーバー
ConoHa では NVIDIA の H100 と L4 のサーバーを提供しています。
GPUサーバー-AI開発や画像生成に|VPSならConoHa
プラン、利用開始の方法については、2024年7月に投稿した下記の記事でも紹介しています。
今回も NVIDIA L4 を使用します。
https://developers.gmo.jp/technology/46300/
公開 API
ConoHa では OpenStack 準拠の公開 API が利用可能です。
公開API(ConoHa VPS Ver.3.0)|ConoHaドキュメントサイト
今回は、直接公開 API を利用するのではなく、OpenStack CLI を使用します。
下記ページを元に環境を準備し、openstack token issue によるトークン発行ができることを前提とします。
OpenStack CLI|ConoHaドキュメントサイト
ブートストレージ容量追加
これまで 512MB プラン以外は 100GB のブートストレージが標準提供されていましたが、2025年6月より公開 API からの利用限定となりますが、「200GB」「500GB」も利用できるようになりました。
ブートストレージ|ConoHaドキュメントサイト
料金についてはこちらをご確認ください。
料金|VPSならConoHa
標準の 100GB のボリュームは、VM からデタッチされた状態が長時間続くと自動的に削除されてしまいますが、有料オプションの 200GB, 500GB であればデタッチ状態が長く続いてもボリュームは残ります。
したがって、高価な GPU インスタンスは使用しないときは削除し、必要なときボリュームから作るといった利用も可能です。
テンプレート
記事執筆時点で、コンパネからは GPU のイメージテンプレートとして下記が利用可能です。
OS:Ubuntu 22.04アプリケーション:NVIDIA Container Toolkit、Automatic1111、 InvokeAI
昨年リリースされた「Ubuntu 24.04」について、昨年記事の時点では一部サポートしていないアプリケーションもあり 22.04 を採用していましたが、現在はサポートが進んでいます。
公開 API であれば、VPS で提供されているテンプレートも利用可能になるため、「Ubuntu 24.04」を使用します。
VM 作成
セキュリティグループ作成
公開 API や OpenStack CLI からでも作成可能ですが、コンパネから作成するのが簡単です。
今回はトークン認証は設定しないため、利用したい IP アドレス指定でセキュリティグループを作成します。
必要なポートは下記です。
SSH 用:22/tcpOllama 用:11434/tcp
ブートストレージ作成
openstack volume create --size 200 --bootable \
--image vmi-ubuntu-24.04-amd64 gmo-developer-blog-demo
エラーが出る場合、イメージ一覧取得コマンドで存在しているか確認してください。
openstack image list --public
NVIDIA Container Toolkit 用 cloud-init user-data 作成
今回は素の Ubuntu テンプレートのため、cloud-init の user-data で NVIDIA Container Toolkit テンプレート相当までパッケージをインストールします。
NVIDIA Container Toolkit・CUDA の導入後、GPU を認識するには再起動が必要であるため、ollama などのインストールは別途行うことにします。
CUDA Installation Guide for Linux — Installation Guide for Linux 12.9 documentation
出来上がったスクリプトは下記となります。
#cloud-config
merge_how:
- name: list
settings: [append]
- name: dict
settings: [no_replace, recurse_list]
runcmd:
- echo --- Install and Upgrade apt package ---
- echo
- apt-get update
- apt-get upgrade -y
- apt-get -y install docker.io nvtop
- echo
- echo --- Install NVIDIA Container Toolkit ---
- echo
- wget -O /root/cuda-keyring_1.1-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
- dpkg -i /root/cuda-keyring_1.1-1_all.deb
- apt-get update
- apt-get install -y nvidia-container-toolkit cuda
- echo
- echo --- Reboot ---
- echo
- shutdown -r +1
VM 作成
先ほど作成した user-data を読み込ませて VM を作成します。
一度セットアップした VM をボリュームだけ残して再作成する場合、user-data は不要です。
openstack server create --flavor g2l-t-c20m128g1-l4 \
--volume gmo-developer-blog-demo \
--property "instance_name_tag=gmo-developer-blog-demo" \
--security-group allow_from_myip --password {パスワード} \
--user-data user-data.yaml ""
このタイミングでエラーが発生する場合、GPU サーバーの利用申請が完了していない可能性があります。コントロールパネルから GPU サーバーの作成画面が表示されることを確認してください。
Ollama 準備
Ollama を直接インストールする方法もありますが、今後 TLS 暗号化、トークン認証を haproxy 等を経由し実装できるようにコンテナにて起動します。
docker run -d --gpus=all --restart=always -v /usr/share/ollama/.ollama:/root/.ollama --name ollama ollama/ollama:latest
ufw allow 11434/tcp comment 'ollama'
今回使用するモデルをダウンロードします。
docker exec ollama ollama pull gemma3n:latest
docker exec ollama ollama pull qwen2.5-coder:7b
ダウンロード済みのモデルは下記で確認できます。
docker exec ollama ollama ls
VSCode 準備
まずは、ローカルから Ollama への疎通が可能か確認します。
curl http://{VM の IP アドレス}:11434
Ollama is running
次に Visual Studio Code で下記の拡張機能を導入します。
Continue - open-source AI code assistant - Visual Studio Marketplace
画面の指示通り設定すると、モデルは自動選択(Autodetect)となりますので、apiBase, role の行だけ追記します。
name: Local Assistant
version: 1.0.0
schema: v1
models:
- name: Autodetect
provider: ollama
model: AUTODETECT
apiBase: http://{VM の IP アドレス}:11434
roles:
- chat
- edit
- apply
- autocomplete
context:
- provider: code
- provider: docs
- provider: diff
- provider: terminal
- provider: problems
- provider: folder
- provider: codebase
初期設定は上記のmodel の部分が空になるものです。
使ってみる
架空の「Go言語でじゃんけんに勝ったらハンバーガーを食べられるゲーム」を作成します。
出力されたコードを「Apply」すると反映されます。
ただ、実際に実行すると、あいこ3連続の場合、どちらもハンバーガーが食べられないままゲームが終了してしまいます。
プログラムの改修を指示すると、修正後のソースを提示してくれます。
さらに試してみると、勝ち負けの判定がおかしいことに気づきましたが、修正されず・・・このモデルにおいてはうまくいかない例もあるようです。
最後に
Visual Studio Code + Continue + Ollama + ConoHa L4 の組み合わせで、AI によるコーディング支援環境が整えられました。
ブートストレージの容量追加機能により、200GB 以上のブートストレージだけ残して、高価な GPU インスタンスは都度作成というお財布に優しい使い方もできるようになりました。
記事を書き始めると内容が増えてきたので、下記については本記事では触れていませんので、実際にこの構成を参考にする際はご注意ください。
通信の暗号化:間に haproxy 等を挟み自己署名証明書を用いるか、Cloudflare Zero Trust や VPN 等で経路ごと暗号化するなどが考えられますIP 制限以外のトークン等の認証:自己署名証明書を用いる場合、haproxy 等で擬似的にトークン認証の仕組みを入れることも考えられます最適なモデル選択:NVIDIA L4 で動作する範囲の高性能なモデルの選択も重要ですので、いろいろ試してみるのが大事です