Claude Code 導入の設計と方針
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
この記事では、Ubuntu 24.04.3 LTS 上に Claude Code の実行環境を構築するにあたり、手を動かす前に全体像を把握するための構成・方針・作業の流れをまとめています。
AIツールの導入は「とりあえずインストールして動かしてみる」でも始められますが、あとから権限設計やセキュリティを見直そうとすると、手戻りが大きくなりがちです。最初に完成形を把握してから作業に入ることで、各ステップで「なぜこの設定をするのか」が明確になり、迷いなく進められるようになります。
実際の作業手順は、このあとの各記事で1ステップずつ記録していきます。
【広告】 XServer VPS には Claude Code のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』
設計思想
Claude Code は強力なツールですが、何を実行するかをすべてコントロールできるわけではありません。
そこで、この環境では次の方針で進めます。
- Ubuntu 側は「作業場」に徹する ― Claude Code のインストールとコード生成のみを行う
- 生成物の実行はメインPC側 ― rsync でファイルを同期してから、メインPCで動かす
- 外部通信は最小限 ― Anthropic API への通信だけを許可し、それ以外はブロック
- 万が一の暴走に備える ― 専用ユーザーの権限を絞り、ディスクやリソースにも上限を設ける
- プロジェクトごとにユーザーを分離 ― A社・B社など案件ごとに専用ユーザーを作成し、他プロジェクトのファイルに一切触れられないようにする
- データベースは読み取り専用 ― 既存の開発用DBサーバーに接続するが、閲覧のみ。書き込みはメインPCから手動で行う
「便利さ」よりも「安全に回せること」を優先します。
環境の全体像
┌─────────────────────────────────────────────────┐
│ メインPC(Windows 11) │
│ │
│ ・コードの実行環境(PHP / MySQL / C++ など) │
│ ・管理ユーザーで SSH 接続(公開鍵認証のみ) │
│ ・管理ユーザー経由で rsync でファイルを取得 │
│ ・DB への書き込みはここから手動で行う │
│ ・git 操作もここで実行 │
│ ・同期監視スクリプト(PowerShell)で自動 pull │
└────────────────┬────────────────────────────────┘
│ SSH / rsync(メインPC → Ubuntu のみ)
│ ※ 管理ユーザーで接続
▼
┌─────────────────────────────────────────────────┐
│ Ubuntu 24.04.3 LTS(VMware) │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 管理ユーザー │ │
│ │ ・sudo 権限あり │ │
│ │ ・SSH ログイン:メインPCから公開鍵認証 │ │
│ │ ・システム管理(apt, UFW, ユーザー管理) │ │
│ │ ・必要に応じてパッケージ追加 │ │
│ │ ・su で各専用ユーザーに切り替え │ │
│ │ ・rsync の接続先(各専用ユーザーの作業 │ │
│ │ ディレクトリを読み取り) │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Claude Code 専用ユーザー(プロジェクトごと) │ │
│ │ │ │
│ │ 例:claudecode-a(A社プロジェクト用) │ │
│ │ claudecode-b(B社プロジェクト用) │ │
│ │ claudecode-c(C社プロジェクト用) │ │
│ │ │ │
│ │ 【共通の制限】 │ │
│ │ ・sudo 権限なし │ │
│ │ ・Claude Code の実行のみ │ │
│ │ ・外部通信:Anthropic API のみ │ │
│ │ ・DB接続:読み取り専用(SELECT のみ) │ │
│ │ ・wget / curl / nc / ssh 等 実行不可 │ │
│ │ ・ディスク上限:20GB(ユーザーごと) │ │
│ │ ・CPU / メモリ制限あり │ │
│ │ ・.bashrc 等は変更不可(chattr +i) │ │
│ │ ・他プロジェクトのホームディレクトリには │ │
│ │ アクセス不可 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ 【UFW(ファイアウォール)】 │
│ ・インバウンド:メインPCからのSSHのみ許可 │
│ ・アウトバウンド:デフォルト全拒否 │
│ → DNS(53)とHTTPS(443)のみ許可 │
│ → DBサーバーへの接続(3306/tcp)のみ許可 │
│ → apt 用通信は管理者が必要時に一時開放 │
└──────────────────┬──────────────────────────────┘
│ MySQL(3306/tcp、SELECT のみ)
▼
┌─────────────────────────────────────────────────┐
│ 開発用データベースサーバー(既存・別マシン) │
│ │
│ ・Claude Code 用に読み取り専用ユーザーを用意 │
│ ・個人情報は含まない(ダミー化済み) │
│ ・書き込みはメインPCから手動で実施 │
│ ・Claude Code は SQL の提案まで │
└─────────────────────────────────────────────────┘
作業ステップ一覧
現在のベースライン(Ubuntu 24.04.3 LTS のクリーンインストールと初期設定)を最初に確立し、そこを起点に以下の順で進めます。
ステップ1:Claude Code 専用ユーザー作成
- プロジェクトごとに専用ユーザーを作成(例:claudecode-a、claudecode-b)
- 各ユーザーは自分のホームディレクトリのみアクセス可能(他プロジェクトのファイルは見えない)
- sudo 権限は付与しない
- SSH ログインは不要(管理ユーザーから su で切り替え)
- 新規プロジェクト開始時にユーザーを追加、完了時に無効化する運用
ステップ2:SSH 強化
- パスワード認証を無効化し、公開鍵認証のみにする
- PermitRootLogin no に設定
- 必要に応じて fail2ban を導入
ステップ3:UFW の精緻化
- インバウンド:メインPCのIPアドレスからの SSH(22/tcp)のみ許可
- アウトバウンド:デフォルト deny に変更
- DNS(53/udp)と HTTPS(443/tcp)のみ許可
- DBサーバーへの接続(3306/tcp)を許可(宛先IPを限定)
- apt 用の通信(80/tcp)は管理者が必要時に一時的に開放する運用
ステップ4:専用ユーザーの制限設定
- ディスククォータ:20GB 上限
- リソース制限:ulimit でプロセス数制限、cgroups(systemd スライス)でメモリ制限
- .bashrc / .profile / .bash_logout を chattr +i で変更不可に
- ネットワーク系コマンドの実行制限(wget / curl / nc / ssh / scp / sftp)
- ブラウザの確認・不要であれば削除
ブラウザがインストールされているかは dpkg -l | grep firefox や snap list で確認できます。Server版では通常インストールされていませんが、念のため確認しておくと安心です。
ステップ5:初期パッケージのインストール
- python3(Claude Code が補助的に使用する可能性があるため)
- build-essential(gcc/g++、コンパイル用)
- PHP / MySQL / その他の言語環境は、必要になった時点で管理者が追加する
ステップ6:Claude Code のインストール
- ネイティブインストーラーを使用(sudo 不要、~/.local/bin にインストールされる)
- インストール手順:curl でスクリプトを取得して実行
- 認証設定(OAuth または API キー)
インストール完了後に curl の実行制限を適用します。また、各専用ユーザーごとにインストールが必要です。
ステップ7:rsync 同期の準備
- 各専用ユーザーのホームディレクトリ内に作業用ディレクトリを作成
- パーミッションの設定(管理ユーザーから読み取り可能にする)
- メインPC側に PowerShell 監視スクリプトを配置(フラグ検知 → rsync → Beep通知)
- rsync は管理ユーザー経由で接続し、各専用ユーザーの作業ディレクトリを pull する
ステップ8:スナップショット取得
- すべてのセットアップと制限が完了した状態を保存
- 例:
2026-02-XX_claude-code-ready
ステップ9:動作確認
- メインPCから SSH で接続できること
- Claude Code が起動し、API と通信できること
- rsync でファイルを同期できること
- 専用ユーザーから外部に不正な通信が出ていないこと
- 制限したコマンドが実行できないこと
想定されるリスクと対策
| リスク | 対策 |
|---|---|
| システムファイルの破壊 | sudo 権限なしで防止 |
| 不正なパッケージインストール | sudo なし+外部通信ブロックで防止 |
| 外部への不正通信 | UFW で API と DNS 以外をブロック |
| ディスク大量消費 | クォータ 20GB で制限 |
| CPU / メモリの暴走 | ulimit + cgroups で制限 |
| 設定ファイルの改ざん | chattr +i で変更不可 |
| ネットワークツール経由の脱出 | wget / curl / nc 等を実行不可に |
| プロジェクト間の情報漏洩 | プロジェクトごとにユーザーを分離、他ユーザーのホームディレクトリにアクセス不可 |
| データベースの破壊・改ざん | 読み取り専用ユーザーで接続(SELECT のみ) |
| 個人情報の漏洩 | 開発用DBにはダミーデータのみ格納 |
| Anthropic API 経由の情報漏洩 | API 通信自体は必須のため許容(ホームディレクトリ内に限定) |
記事の構成(予定)
この全体概要のあと、各ステップを1記事ずつ記録していきます。
- Claude Code 実行環境の設計と構築 ― 全体概要(この記事)
- Ubuntu 24.04.3 LTS 初期セットアップ(ベースライン構築)
- Claude Code 専用ユーザーの作成と権限設計
- SSH の強化(公開鍵認証・ルートログイン禁止)
- UFW によるネットワーク制限
- 専用ユーザーの制限設定(クォータ・リソース・コマンド制限)
- Claude Code のインストールと初期設定
- rsync 同期の設定と動作確認
- 最終確認とスナップショット取得
※ 作業の進行に応じて、記事の分け方は変わる可能性があります。
セットアップ後の開発ワークフロー
環境が完成したあと、日々の開発は以下の流れで進めます。
Claude Code の起動と終了
Claude Code は常駐プロセスではありません。必要なときに起動し、作業が終われば終了します。
作業開始:
管理ユーザーで SSH ログイン
→ su - claudecode-a(対象プロジェクトの専用ユーザーに切り替え)
→ claude(Claude Code 起動)
作業終了:
→ /exit または Ctrl+C で Claude Code 終了
→ プロセスは残らない
再開(後日):
→ su - claudecode-a
→ claude --continue(直前のセッションを再開)
→ claude --resume(過去のセッションを選択して再開)
セッション履歴は各専用ユーザーの ~/.claude/sessions/ に保存されます。
プロジェクトごとにユーザーが分かれているため、セッションも完全に分離されます。
プロジェクト完了時はユーザーを無効化し、改修時に有効に戻すだけで復帰できます。
開発サイクル
1. Claude Code に作業を依頼
└→ コードの生成・修正・リファクタリングなど
2. Claude Code がファイルを更新
└→ Ubuntu 上の作業ディレクトリ内でファイルが変更される
3. Claude Code が作業完了
└→ CLAUDE.md に「作業完了時は touch ~/sync-ready を実行する」と
記載しておくことで、Claude Code が自動でフラグを作成する
4. メインPC の監視スクリプトがフラグを検知
└→ 管理ユーザー経由で SSH 接続、フラグを確認
└→ rsync で作業ディレクトリを自動 pull
└→ フラグを削除、Beep で完了通知
5. メインPC で差分を確認(diff)
└→ 変更内容を目視レビュー、必要なら手動修正
6. Claude Code にコミットメッセージを用意してもらう
└→ 変更内容に応じた適切なメッセージを提案させる
7. メインPC でコミット・プッシュ
└→ git add / commit / push はメインPC側で実行
ポイントは、Claude Code が直接 git を操作しないことです。
コードの生成は Claude Code に任せますが、最終的な判断(差分の承認・コミット)は必ず人間が行います。
データベースに関しても同様です。Claude Code は DB の構造やデータを読んで SQL を提案しますが、実行はメインPC側から手動で行います。
※ git 操作を Claude Code にどこまで任せるかは、運用しながら今後検討します。
次のアクション
この全体像をもとに、まず Ubuntu 24.04.3 LTS の初期セットアップ(ベースライン構築)から実作業を開始します。
【広告】 XServer VPS には Claude Code のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』