Linux サーバーに Claude Code と ChatGPT Codex をインストールする:ステップバイステップ

公開日 読了時間 18 分

インストール直後の Debian または Ubuntu サーバーから、動作する AI エージェントまで:ユーザーと sudo 許可リスト、Node.js 22、Claude Code と Codex CLI のインストールとログイン、CLAUDE.md と AGENTS.md、最初のタスクと典型的なエラー。

このガイドでは、インストール直後の Debian または Ubuntu サーバーから、ログを分析し、設定を確認し、保守タスクを実行する動作可能な AI エージェントまでを扱います。Claude Code(Anthropic)と Codex CLI(OpenAI、ChatGPT の背後にあるコマンドラインツール)を、どちらも権限を制限した専用ユーザーの下で設定します。すべてのコマンドは Debian 13 と Ubuntu 24.04 を載せた KernelHost KVM ルートサーバー でテスト済みです。AI マネージドサーバーの全体像とどんな構成があるかは、記事 AI マネージドサーバー:AI エージェントを安全に接続する で説明しています。

2026 年 9 月時点の情報です。ツールは急速に進化しています。迷ったら claude --help または codex --help でフラグを確認してください。

前提条件

  • Debian 12 または 13、あるいは Ubuntu 22.04 または 24.04 を載せ、SSH で root アクセスできるルートサーバー。AlmaLinux と Rocky Linux でも手順は同じで、パッケージコマンドが apt ではなく dnf になるだけです。
  • 基本的な堅牢化が済んでいること:鍵による SSH ログイン、ファイアウォール、自動セキュリティ更新。新しいルートサーバーのチェックリスト がこれをカバーします。
  • Anthropic のアカウント(Claude Pro、Max、Team)または API キー、ChatGPT アカウント(Plus、Pro、Team)または OpenAI API キー。一方のツールだけを設定するなら、どちらか片方で十分です。
  • api.anthropic.comapi.openai.com への外向き HTTPS。KernelHost サーバーでは最初から許可されています。厳しい独自ファイアウォールを使っている場合は許可が必要です。

ステップ 1:専用ユーザーを作成し、sudo を制限する

エージェントは決して root として動かしません。専用アカウントを与え、sudo の許可リストで必要なコマンドだけを渡します。まずはいくつかの読み取り専用コマンドから始め、タスクが本当に必要とするときにリストを広げてください。

sudo adduser --disabled-password --gecos "AI agent" aiagent
sudo tee /etc/sudoers.d/aiagent >/dev/null <<'EOF'
aiagent ALL=(root) NOPASSWD: /usr/bin/journalctl *, /usr/bin/systemctl status *, /usr/bin/systemctl restart nginx, /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y, /usr/bin/tail *, /usr/bin/df *, /usr/bin/ss *
EOF
sudo chmod 440 /etc/sudoers.d/aiagent
sudo visudo -cf /etc/sudoers.d/aiagent

最後の行は構文をチェックします。sudoers ファイルのミスは全員の sudo をロックしかねないので、チェックは常に手順の一部です。--disabled-password により、誰もパスワードで aiagent としてログインできなくなります。後で sudo -iu aiagent でこのアカウントに切り替えます。

エージェントに /etc 内のファイルを変更させる場合、sudo 経由で nano を与えてはいけません(それでは /etc/sudoers を含むあらゆるファイルを編集できてしまいます)。代わりにグループと的を絞った書き込み権限を使います。たとえば setfacl -m u:aiagent:rw /etc/nginx/sites-available/my-site.conf のようにします。最初のうちは、エージェントが変更を提案し、あなたが実行するだけで十分です。

ステップ 2:Node.js 22 をインストールする

どちらのツールも Node.js 上で動作します。Claude Code はバージョン 18 以上、Codex CLI は 22 以上を必要とするので、22 LTS をインストールします。Debian 12 のパッケージソースのバージョンは古すぎるため、NodeSource から最新版を入れます。

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version

インターネットから取得したスクリプトを root 権限で実行したくない場合は、エージェントユーザーのホームディレクトリで nvm を使います。これなら root 権限はまったく不要です。詳細と代替手段は Debian での Node.js ガイド を参照してください。

ステップ 3:Claude Code をインストールしてログインする

ここからはエージェントのアカウントで作業します。

sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version

ネイティブインストーラーは Claude Code を ~/.local/bin に配置し、自動で最新の状態を保ちます。代わりに npm で npm install -g @anthropic-ai/claude-code としても構いません。EACCES で失敗する場合は、下のトラブルシューティングを参照してください。

claude の初回起動時、ツールはログインを求めます。Claude アカウントの場合、通常はブラウザーを開きます。ブラウザーのないサーバーではアドレスとコードが表示されるので、ノート PC やスマートフォンで確認します。スクリプトや cron ジョブには API キーのほうが適しています。

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "OK とだけ答えて" 

これでキーは他のユーザーが読めないエージェントユーザーのホームディレクトリにだけ存在します。Anthropic のコンソールで月額の支出上限を付けて作成すれば、暴走したセッションが高額になることもありません。

ステップ 4:サーバー向けに Claude Code を設定する

Claude Code は起動時にカレントディレクトリの CLAUDE.md を読み込みます。ここにすべてのセッションに適用されるルールを書きます。エージェントのホームディレクトリに、このファイルを含む作業ディレクトリを作成します。

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# このサーバーのルール
- これは本番サーバーです(Debian 13、nginx、PHP-FPM、MariaDB)。
- 読み取り専用コマンド(journalctl、systemctl status、tail、df、ss)は常に許可。
- 書き込みを伴うコマンドの前には、何が変わるかを簡潔に説明し、承認を待つこと。
- パッケージの削除、/var/lib 配下のファイル削除、ユーザーの作成や削除は決して行わない。
- パスワード、鍵、顧客データを出力に繰り返さない。
- 各タスクの最後に 3 文の要約を書く。
EOF

さらにツールの許可リストを用意し、Claude Code が読み取り専用コマンドは確認なしで実行し、それ以外は承認を求めるようにします。ファイル ~/.claude/settings.json はこのユーザーに適用されます。

mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
  "permissions": {
    "allow": [
      "Bash(sudo journalctl:*)",
      "Bash(sudo systemctl status:*)",
      "Bash(sudo tail:*)",
      "Bash(df:*)",
      "Bash(free:*)",
      "Bash(ss:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo rm:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)"
    ]
  }
}
EOF

では最初のタスクを対話的に実行します。

cd ~/server && claude
> 直近 24 時間の journalctl のエラーを要約し、最も多い原因を 3 つ挙げてください。

同じタスクを無人で、たとえば毎朝 7 時の cron ジョブとして実行し、結果をメールで受け取ることもできます。

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "直近 24 時間の journalctl のエラーと警告を要約してください。サービス名、時刻、考えられる原因を挙げてください。" --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "サーバー日次レポート" admin@example.com

フラグ -p は対話セッションなしで Claude Code を起動し、--allowedTools はツールをその実行に必要なものだけに制限します。書き込みを伴う操作は無人実行には含めません。

ステップ 5:Codex CLI(ChatGPT)をインストールしてログインする

Codex CLI は、ChatGPT の背後にあるモデルをコマンドラインに持ち込む OpenAI のツールです。同じユーザーアカウントでインストールします。

npm install -g @openai/codex
codex --version

ログインは ChatGPT アカウント(Plus、Pro、Team)で行います。codex を起動し、「Sign in with ChatGPT」を選び、表示されたアドレスをブラウザーのあるデバイスで開きます。スクリプト用には代わりに OpenAI プラットフォームの API キーを設定します。

echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc

Codex には独自のサンドボックスと承認モードがあります。どちらも ~/.codex/config.toml で指定します。本番サーバーでは次の組み合わせが妥当です。

mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF

workspace-write は現在の作業ディレクトリへの書き込みだけを許可し、on-request はそれ以外のすべてについてエージェントに許可を求めさせます。danger-full-access レベルは両方を解除するもので、本番システムには不向きです。CLAUDE.md と同様のルールを、Codex は作業ディレクトリの AGENTS.md から読み込みます。同じ内容を使えます。

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "有効化されている systemd サービスがすべて動作しているか確認し、失敗しているものを最後のエラーメッセージとともに一覧にしてください。"

無人実行には codex exec "タスク" があり、これは claude -p に相当します。

代替案:エージェントは自分の PC で動き、SSH 経由で作業する

サーバーに何もインストールしたくない場合は、ノート PC で Claude Code または Codex を起動し、エージェントに SSH でコマンドを送らせます。そのためにサーバーにはエージェントユーザー用の専用 SSH 鍵を用意し、CLAUDE.md にはすべてのサーバーコマンドを ssh aiagent@server で始めるというルールを書きます。たまの保守にはこれで十分ですが、長いタスクや cron ジョブはサーバー上で直接動かすほうが適しています。

ステップ 6:保護し、制限を設ける

  • 何かを変更するセッションの前には必ずスナップショットかバックアップを。 サーバーのバックアップ戦略 で自動化の方法を説明しています。
  • 承認モードはオンのままにする。 Claude Code の --dangerously-skip-permissions と Codex の danger-full-access は使い捨て VM のためのものです。
  • 秘密情報は手の届かない場所に。 エージェントユーザーが .env ファイル、データベースのパスワード、顧客データを読めないようにします。読んだものはプロバイダーに送られます。
  • プロバイダーのコンソールで、各 API キーにコスト上限を。
  • 追跡可能性: etckeeper をインストールして /etc 配下のすべての変更を Git に入れ、エージェントの要約を保存します。
  • 受信側は何も変えない。 どちらのツールも外向き HTTPS しか必要としません。ファイアウォール、Fail2ban、プロバイダーの DDoS 対策はそのままです。

典型的なエラーと解決策

メッセージ原因と解決策
npm install -gEACCES: permission deniednpm がシステムディレクトリに書き込もうとしています。ユーザープレフィックスを設定します:npm config set prefix ~/.npm-global、次に export PATH=~/.npm-global/bin:$PATH~/.bashrc に追加して再インストール。
Node.js version ... is not supportedディストリビューションのソースのバージョンが古すぎます。ステップ 2 を繰り返し、node --version で 22.x が有効か確認します。
ログイン時にブラウザーが開かないサーバーでは想定どおりです。表示されたアドレスを別のデバイスで開いてコードを入力するか、API キーに切り替えます。
起動時に ECONNREFUSED またはタイムアウト外向き HTTPS がブロックされています。外向きポート 443 のファイアウォールルールを確認してください。KernelHost サーバーでは外向きトラフィックは最初から自由です。
429 rate limit または overloadedサブスクリプションや API の上限を使い切ったか、プロバイダーが過負荷です。少し待ち、無人実行には数分後の再試行を設けます。
エージェントがコマンドのたびに確認する~/.claude/settings.json の許可リスト、または config.tomlapproval_policy を広げます。ただし読み取り専用コマンドに限ります。

まとめ

サーバー上の AI エージェントは 1 時間で設定できます。ユーザー、sudo 許可リスト、Node.js、ツール、ルール。本当の作業は制限の設計にあり、ここでは意図的に厳しくしています。タスクが必要とするときに一歩ずつ広げ、決して一気に広げないでください。KernelHost ルートサーバー専用サーバー では、そのために有効化すべきものは何もありません。ルート権限、ディストリビューションの自由な選択、外向き接続は標準です。

よくあるご質問

Claude Code にはサブスクリプションが必要ですか、それとも API キーで十分ですか?
どちらでも動作します。Claude アカウント(Pro、Max、Team)では初回起動時にブラウザーでログインし、ブラウザーのないサーバーでは別のデバイスで表示されるコードを使います。人が付かない自動化タスクには、環境変数 ANTHROPIC_API_KEY に API キーを入れるほうがクリーンです。個人に紐づかず、予算で制限できるからです。
ブラウザーのないサーバーで Codex CLI にログインするには?
ChatGPT アカウントでのログイン(Codex が表示するアドレスをノート PC やスマートフォンで開く)か、OpenAI プラットフォームで取得したキーを環境変数 OPENAI_API_KEY に設定する方法のどちらかです。cron ジョブやスクリプトには API キーのほうが確実です。
どの Node.js バージョンが必要ですか?
Claude Code は Node.js 18 以上、Codex CLI は Node.js 22 以上を必要とします。したがって最初から NodeSource リポジトリ、またはエージェントユーザーのホームディレクトリで nvm を使って Node.js 22 LTS をインストールしてください。Debian 12 のパッケージソースのバージョンは古すぎます。
npm install -g が EACCES で失敗するのはなぜですか?
npm がユーザーに権限のないシステムディレクトリにグローバルに書き込もうとするためです。npm config set prefix ~/.npm-global でユーザープレフィックスを設定し、~/.npm-global/bin を PATH に追加して、もう一度インストールしてください。代わりに nvm を使うか、Claude Code なら npm を必要としないネイティブインストーラーを使う方法もあります。
Claude Code を cron ジョブで実行できますか?
はい。claude -p にタスクをテキストで渡し、許可するツールの許可リストを指定します。そのために API キーを使い、ツールを読み取り専用コマンドに制限し、出力をファイルかメールに送ります。介入的な操作は無人実行には含めません。
KernelHost の Windows サーバーでも動作しますか?
はい。Claude Code と Codex CLI は Windows 上で Node.js を使ってネイティブに、または Windows Subsystem for Linux 内で動作します。ユーザーと sudo 許可リストの手順は、そこでは管理者権限のない専用の Windows ユーザーに相当します。

Claude Code Codex CLI ChatGPT KI-Agent Node.js Debian Ubuntu Serveradministration