Linux で AI 開発環境を作る

最終更新:2026-11-12。Mac 版・Windows 版と、全部の AI に共通のルールの作り方はAI開発環境の作り方にまとめています。

はじめに

Ubuntu に5つの AI のコマンド(CLI)と作業アプリ Orca を入れ、共通ルールと MCP をそろえる手順です。何も入っていない Ubuntu 24.04 で、上から順に実行して確かめています。画面のあるパソコンでも、画面の無いサーバー(仮想マシン)でも使えます。

  • 対象:Ubuntu 24.04(ほかの Debian 系でもほぼ同じ)。sudo ができる利用者で行う
  • 用語:CLI = ターミナルで動かすコマンド版のアプリ。MCP = AI から外のサービス(Gmail・Obsidian など)を使うためのつなぎ口。PATH = コマンドを探す場所の一覧
  • 入力例の $ は入力待ちの記号なので、$ の後ろだけを入力する
  • <…> の部分は自分の値に置き換える。Mac 版・Windows 版、共通 AGENTS.md の作り方は別のページ

動作を確かめた版(2026-11 時点)

種類名前版入れ方
下準備Node.js26.13.1NodeSource の apt(LTS)
下準備GitHub CLI(gh)2.103.3公式の apt
下準備uv0.13.7公式のスクリプト
AI の CLIClaude Code2.1.322公式のスクリプト
AI の CLICodex0.167.2公式のスクリプト
AI の CLIAntigravity CLI(agy)1.5.6公式のスクリプト
AI の CLIGrok1.0.77公式のスクリプト
AI の CLIcursor-agent2026.11.11公式のスクリプト
アプリOrca1.4.257公式 GitHub の .deb
アプリObsidian1.15.0公式 GitHub の .deb
アプリVS Code1.146.0公式の .deb
アプリGoogle Chrome157公式の .deb
  • これより新しい版でも、手順は基本的に同じです。画面やコマンドが変わっていたら、公式の説明を優先してください

作業の順番

  1. 下準備(apt・Node.js・gh・uv)
  2. AI の CLI を入れてログイン
  3. アプリを入れる
  4. Vault を届け、共通ルール(AGENTS.md)を各 AI につなぐ
  5. MCP を各 AI に登録
  6. 動作確認

全体の構成

Linux の AI 開発環境の全体像

手順の流れ

構築の手順

手順1 下準備(約20分)

$ sudo apt-get update
$ sudo apt-get install -y git curl wget unzip jq ca-certificates gnupg build-essential

1-1 Node.js(NodeSource の LTS)

Ubuntu 24.04 の標準の nodejs は古い(18)ので、NodeSource の apt を使います。MCP の中には Node 22 以上が要るものがあります。

$ curl -fsSL https://deb.nodesource.com/setup_lts.x -o /tmp/nodesource_setup.sh
$ less /tmp/nodesource_setup.sh          # 中身を確かめる(任意)
$ sudo -E bash /tmp/nodesource_setup.sh
$ sudo apt-get install -y nodejs
$ node --version

1-2 GitHub CLI(公式の apt)

$ sudo mkdir -p -m 755 /etc/apt/keyrings
$ wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null
$ sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list
$ sudo apt-get update && sudo apt-get install -y gh

1-3 uv(Python 製の MCP を動かす)

$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ exec bash -l       # PATH を読み直す
$ uv --version
  • apt の更新で「名前を引けない(Temporary failure resolving)」と出たら、少し待ってやり直す
  • SSH の鍵は ~/.ssh/ に作り(ssh-keygen -t ed25519)、相手に渡すのは .pub だけ

手順2 AI の CLI を入れる(約20分)

5つの AI の CLI を入れ、それぞれに一度ログインします。使わない AI は飛ばして構いません。

CLI入れるコマンドログイン使うアカウント
Claude Codecurl -fsSL https://claude.ai/install.sh | bashclaude を起動 → /loginclaude.ai
Codexcurl -fsSL https://chatgpt.com/codex/install.sh | shcodex loginChatGPT
Antigravity CLIcurl -fsSL https://antigravity.google/cli/install.sh | bashagy を起動Google
Grokcurl -fsSL https://x.ai/cli/install.sh | bashgrok loginX(xAI)
cursor-agentcurl https://cursor.com/install -fsS | bashcursor-agent loginCursor
GitHub CLI手順1 で済みgh auth loginGitHub
$ exec bash -l
$ claude --version; codex --version; agy --version; grok --version; cursor-agent --version
  • 置き場所:Claude Code・Codex・agy・cursor-agent は ~/.local/bin、Grok は ~/.grok/bin(~/.bashrc に PATH を足す。消さない)
  • agy のインストーラーは ERROR: logging before google.Init と何行も出しますが、中身は「PATH を足した」という記録で、失敗ではありません
  • agent というコマンドは、Linux では cursor-agent になります(Grok も同じ名前を作るが、PATH の順番で cursor-agent が先)。どちらも名前で起動する
  • ネットのスクリプトを | bash で動かす前に、URL を開いて中身と配布元を確かめると安心

2-1 画面の無いサーバーでのログイン

  • Claude Code・agy・Grok・cursor-agent:表示された URL を、別のパソコンのブラウザーで開いて許可する
  • Codex:codex login --device-auth で、表示されたコードを別のパソコンで入れる。事前に ChatGPT の「設定 → セキュリティ」で、デバイスコードによるサインインを有効にする
  • gh:gh auth login で「Login with a web browser」を選び、表示されたコードを別のパソコンで入れる

手順3 アプリを入れる(約20分)

$ cd /tmp
$ wget -O chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ wget -O code.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64'
$ OBS=$(curl -fsSL https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest | jq -r '.assets[] | select(.name|test("_amd64.deb$")) | .browser_download_url')
$ ORCA=$(curl -fsSL https://api.github.com/repos/stablyai/orca/releases/latest | jq -r '.assets[] | select(.name|test("_amd64.deb$")) | .browser_download_url')
$ wget -O obsidian.deb "$OBS"; wget -O orca.deb "$ORCA"
$ sudo apt-get install -y ./chrome.deb ./code.deb ./obsidian.deb ./orca.deb
$ orca-ide --version
アプリ役割
Orca複数の AI と複数のパソコンを1つの画面で扱う。コマンドは orca-ide
Obsidian共用のノート(Vault)
VS Codeコードの編集
Google ChromeClaude in Chrome・Chrome DevTools MCP で AI に操作させる
  • Chrome・VS Code の .deb は自分の apt のリポジトリを足すので、以後は sudo apt upgrade で更新される。Obsidian・Orca は新しい版の .deb を入れ直す
  • Slack・Linear・各 AI のチャット用アプリは、Web 版を使うのが手軽です

3-1 画面の無いサーバーで Orca を使う

Orca には画面なしで動かす orca-ide serve があります。別のパソコン(Mac など)の Orca から「環境」としてペアリングして使えます。

[Unit]
Description=Orca の画面なしのサーバー

[Service]
ExecStart=/usr/bin/orca-ide serve --pairing-address <このサーバーの IP>
Restart=on-failure
RestartSec=10

[Install]
WantedBy=default.target
$ systemctl --user enable --now orca-serve
$ sudo loginctl enable-linger $USER     # ログインしていなくても動かす
  • ペアリングが済んだら、--no-pairing を足して新しいペアリングを受け付けないようにすると安全
  • 画面も見たいときは、Xfce と TigerVNC を入れ、VNC は 127.0.0.1 だけで受け付けて SSH のトンネルで見る

手順4 Vault を届け、共通ルール(AGENTS.md)をつなぐ

4-1 Vault の届け方を選ぶ

Linux には Google ドライブの公式アプリがありません。次の3つから選びます。

方法しくみ向いている場合注意
A. rcloneGoogle ドライブをフォルダーとしてつなぐMac・Windows と同じ Google ドライブの Vault を直接使いたい最初に rclone の設定(Google への許可)が要る。つなぎ直しを自動にする設定が要る
B. Obsidian SyncObsidian の有料の同期画面のある Linux で Obsidian も使う。Vault を Obsidian Sync で同期しているGoogle ドライブの Vault と併用しない(衝突のコピーが大量にできる)
C. Vault を置かないノートは別のパソコンの Obsidian に MCP でつなぎ、AGENTS.md だけ複製を受け取る画面の無いサーバー・仮想マシン別のパソコンが止まっていると読み書きできない

A の例(rclone):

$ sudo apt-get install -y rclone fuse3        # 新しい版は公式のスクリプト(rclone.org/install.sh)
$ rclone config                                 # 「n」→ 名前 gdrive → 種類 drive → ブラウザーで許可
$ mkdir -p ~/GoogleDrive
$ rclone mount gdrive: ~/GoogleDrive --vfs-cache-mode writes --daemon
$ ls ~/GoogleDrive/AIVault/AGENTS.md
  • --vfs-cache-mode writes は、書き込みを一度手元に置いてから送る設定。Obsidian のようにファイルを書き換えるアプリで必要
  • この手順書の作成時は、rclone が入ることまで確かめ、Google ドライブへの接続は試していません。うまくいかないときは rclone の Google ドライブの説明 を優先してください
  • ログイン時に自動でつなぐには、systemd のユーザーサービスにする

C の例(AGENTS.md の複製):常に動いている別のパソコンから、15 分ごとに scp で送る。中身が変わったときだけ送り、大きさが小さすぎる(同期の途中で空になった)ときは送らない

4-2 各 AI につなぐ

$ V=<Vault の場所>/AGENTS.md          # C の場合は複製の場所(例:~/AGENTS.md)
$ mkdir -p ~/.claude ~/.codex ~/.gemini ~/.grok
$ ln -sfn "$V" ~/.claude/CLAUDE.md
$ ln -sfn "$V" ~/.codex/AGENTS.md
$ ln -sfn "$V" ~/.gemini/GEMINI.md
$ ln -sfn "$V" ~/.grok/AGENTS.md
$ ls -l ~/.claude/CLAUDE.md ~/.codex/AGENTS.md ~/.gemini/GEMINI.md ~/.grok/AGENTS.md
  • 4つとも -> …/AGENTS.md と出れば完了。AGENTS.md の書き方は「共通 AGENTS.md の作り方」
  • 読まれたかは、ルールにしか書いていないことをファイルを開かせずに聞いて確かめる(例:claude -p "秘密情報はどこに置くルール?ファイルは開かずに答えて")

手順5 MCP を各 AI に登録

MCP ごとに起動用のスクリプトを ~/bin に作り、キーは起動のたびに ~/.keys/keys.txt から読みます。AI の設定ファイルにキーが平文で残りません。

$ mkdir -p ~/.keys ~/bin && chmod 700 ~/.keys
$ touch ~/.keys/keys.txt && chmod 600 ~/.keys/keys.txt

~/.keys/keys.txt(1行1つ、名前=値):

OBSIDIAN_API_KEY=<Local REST API のキー>
GOOGLE_OAUTH_CLIENT_ID=<Google のクライアント ID>
GOOGLE_OAUTH_CLIENT_SECRET=<Google のクライアント シークレット>
LINE_CHANNEL_ACCESS_TOKEN=<LINE のトークン>
LINE_DESTINATION_USER_ID=<自分の LINE のユーザー ID>

~/bin/obsidian-mcp.sh:

#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export OBSIDIAN_API_KEY=$(key OBSIDIAN_API_KEY)
export OBSIDIAN_BASE_URL=http://127.0.0.1:<ポート>
exec npx -y obsidian-mcp-server@3.7.2 "$@"

~/bin/google-mcp.sh:

#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export GOOGLE_OAUTH_CLIENT_ID=$(key GOOGLE_OAUTH_CLIENT_ID)
export GOOGLE_OAUTH_CLIENT_SECRET=$(key GOOGLE_OAUTH_CLIENT_SECRET)
export USER_GOOGLE_EMAIL=you@example.com
export OAUTHLIB_INSECURE_TRANSPORT=1      # ログインの戻り先が自分の PC の中(localhost)だけなので http を許す
export WORKSPACE_MCP_TRANSPORT=stdio
exec "$HOME/.local/bin/uvx" workspace-mcp@2.3.0 --single-user --tool-tier core \
  --tools gmail drive calendar docs sheets slides tasks contacts "$@"

~/bin/line-mcp.sh:

#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export CHANNEL_ACCESS_TOKEN=$(key LINE_CHANNEL_ACCESS_TOKEN)
export DESTINATION_USER_ID=$(key LINE_DESTINATION_USER_ID)
export NPM_CONFIG_IGNORE_SCRIPTS=true
exec npx -y @line/line-bot-mcp-server@0.5.0 "$@"
$ chmod 700 ~/bin/*.sh

$ claude mcp add -s user obsidian -- ~/bin/obsidian-mcp.sh
$ CODEX_HOME=~/.codex codex mcp add obsidian -- ~/bin/obsidian-mcp.sh
$ grok mcp add obsidian -- ~/bin/obsidian-mcp.sh
$ agy mcp add obsidian ~/bin/obsidian-mcp.sh

$ grok mcp add chrome-devtools -- npx -y chrome-devtools-mcp@1.12.0 --usageStatistics=false --performanceCrux=false
  • LINE の MCP には、友だち全員に送る一斉送信などの道具もあります。AI ごとの許可の設定で止めておく
  • Google は、最初に道具を使ったときにブラウザーで許可します。画面の無いサーバーでは、戻り先(localhost:8000)を SSH のトンネルで手元のパソコンにつないで許可する(例:ssh -L 8000:127.0.0.1:8000 <サーバー>)
  • Obsidian を同じ Linux で動かさない(方法 C)ときは、OBSIDIAN_BASE_URL を、Obsidian が動いているパソコンへのトンネルに向ける

手順6 動作確認

$ claude mcp list
$ codex mcp list
$ grok mcp doctor
$ agy mcp list
  • □ 5つの CLI の --version が出る
  • □ 使う AI と gh がログイン済み
  • □ 指示ファイルが AGENTS.md へのリンクになっている
  • □ 各 AI がルールにしか書いていないことを答えられる
  • □ 各 AI から Obsidian のノート一覧が取れる
  • □ AI の設定ファイル(~/.claude.json・~/.codex/config.toml・~/.grok/config.toml・~/.gemini/config/mcp_config.json)にキーが平文で入っていない

つまずきやすい点

起きること原因対処
node が古い・MCP が起動しないUbuntu の標準の nodejs(18)を使っているNodeSource の LTS を入れる(1-1)
コマンドが見つからないPATH が読み直されていないexec bash -l か、ターミナルを開き直す
agy のインストールで ERROR が並ぶ記録の書き方の問題最後に agy --version が出れば OK
agent が思った AI にならないGrok と cursor-agent が同じ名前を作るgrok・cursor-agent の名前で起動する
画面の無いサーバーで Codex にログインできないデバイスコードのサインインが無効ChatGPT の設定で有効にし、codex login --device-auth
利用者 admin が作れない(cloud-init など)Ubuntu には admin グループが最初からある別の名前にする
Chrome がキーリングのパスワードを求めて止まる画面の無い環境のキーリングgoogle-chrome --password-store=basic で起動する
ノートの衝突のコピーが大量にできる2つの同期の併用、同時編集同期は1つにする。書き込みは Obsidian の MCP 経由にそろえる

秘密情報の扱い

  • キー・パスワードは ~/.keys だけに置き(chmod 700・600)、Vault や AI の設定ファイルには書かない
  • claude mcp add -e KEY=… のようにキーを直接渡さない。必ず起動用のスクリプトを通す

公式サイト一覧

名前公式ページ
Node.js(NodeSource)nodejs.org・github.com/nodesource/distributions
GitHub CLIcli.github.com
uvdocs.astral.sh/uv
Claude Codecode.claude.com/docs
Codexgithub.com/openai/codex
Antigravityantigravity.google
Grok Builddocs.x.ai/build/overview
Cursor CLIcursor.com/cli
Orcaonorca.dev(GitHub)
Obsidianobsidian.md
VS Codecode.visualstudio.com
Google Chromegoogle.com/chrome
rclonerclone.org
obsidian-mcp-serverGitHub
Google Workspace MCPGitHub
LINE Bot MCP ServerGitHub
Chrome DevTools MCPGitHub