クラウド上に ClaudeCode 環境を作って、いつでも何処でも ClaudeCode で開発できるようになります。

このマニュアルでは、TerraformとAWSを使用してClaude Code開発環境を構築する手順を説明します。構築される環境には以下が含まれます:
- セキュアなEC2インスタンス(カスタムSSHポート、UFW、fail2ban)
- 開発ツール(mise、Node.js、Python、Claude Code、tmux)
- SSH認証(keychain、GitHub連携)
- 日本語環境(ja_JP.UTF-8ロケール、uim日本語入力)
- Git便利エイリアス(効率的なGit操作)
- Mac
- AWS CLIがインストール・設定済み
- ローカルマシンにSSHクライアント
# HashiCorp tapを追加
brew tap hashicorp/tap
# Terraformをインストール
brew install hashicorp/tap/terraform
# インストール確認
terraform versionまたは、シンプルに:
# 直接インストール(推奨)
brew install terraform
# インストール確認
terraform version以下の4つのファイルを同じディレクトリに配置してください:
main.tf- メインのTerraform設定variables.tf- 変数定義terraform.tfvars- 環境固有の設定値README.md- このマニュアル
サンプルファイルをコピーして設定ファイルを作成します:
# サンプルファイルをコピー
cp terraform.tfvars.sample terraform.tfvars
# 設定ファイルを編集
vim terraform.tfvars以下の項目を必ずあなたの情報に変更してください:
# 必須変更項目
github_username = "your-username" # あなたのGitHubユーザー名
github_email = "your@email.com" # あなたのメールアドレス
# キー設定(デフォルトで自動生成、カスタマイズする場合のみ設定)
# key_name = "" # 空の場合、SSH慣例に従った名前を自動生成
# ssh_key_algorithm = "ed25519" # デフォルト。rsa, ecdsa も選択可能
# environment_name = "dev" # デフォルト。test, project-a など任意の名前その他の設定はお好みで調整してください。
terraform.tfvars.sample に記載されている設定項目の説明:
| 設定項目 | 説明 | 推奨値 |
|---|---|---|
aws_region |
AWSリージョン | ap-northeast-1 (東京) |
instance_type |
EC2インスタンスタイプ | t3.medium (開発用途) |
ssh_port |
カスタムSSHポート | 10022 (セキュリティ向上) |
node_versions |
インストールするNode.jsバージョン | お好みで選択 |
python_versions |
インストールするPythonバージョン | お好みで選択 |
terraform.tfvarsの設定に基づいて、対応するSSHキーペアを作成します。
デフォルトでは、SSH慣例に従った自動キー生成を使用します:
# デフォルト設定でのキー作成(ED25519、環境名: dev)
aws ec2 create-key-pair \
--key-name id_ed25519_claude_dev_key \
--key-type ed25519 \
--region ap-northeast-1 \
--query 'KeyMaterial' \
--output text > ~/.ssh/id_ed25519_claude_dev_key.pem
# 権限設定
chmod 600 ~/.ssh/id_ed25519_claude_dev_key.pemterraform.tfvarsで設定を変更した場合のキー作成例:
例1: 環境名を"test"に変更
# terraform.tfvars
environment_name = "test"# 対応するキー作成コマンド
aws ec2 create-key-pair \
--key-name id_ed25519_claude_test_key \
--key-type ed25519 \
--region ap-northeast-1 \
--query 'KeyMaterial' \
--output text > ~/.ssh/id_ed25519_claude_test_key.pem
chmod 600 ~/.ssh/id_ed25519_claude_test_key.pem例2: アルゴリズムをRSAに変更
# terraform.tfvars
ssh_key_algorithm = "rsa"# 対応するキー作成コマンド
aws ec2 create-key-pair \
--key-name id_rsa_claude_dev_key \
--key-type rsa \
--region ap-northeast-1 \
--query 'KeyMaterial' \
--output text > ~/.ssh/id_rsa_claude_dev_key.pem
chmod 600 ~/.ssh/id_rsa_claude_dev_key.pem例3: 両方をカスタマイズ
# terraform.tfvars
environment_name = "project-a"
ssh_key_algorithm = "ecdsa"# 対応するキー作成コマンド
aws ec2 create-key-pair \
--key-name id_ecdsa_claude_project-a_key \
--key-type ecdsa \
--region ap-northeast-1 \
--query 'KeyMaterial' \
--output text > ~/.ssh/id_ecdsa_claude_project-a_key.pem
chmod 600 ~/.ssh/id_ecdsa_claude_project-a_key.pem# terraform.tfvars
key_name = "my-custom-key"# 指定したキー名でキー作成
aws ec2 create-key-pair \
--key-name my-custom-key \
--key-type ed25519 \
--region ap-northeast-1 \
--query 'KeyMaterial' \
--output text > ~/.ssh/my-custom-key.pem
chmod 600 ~/.ssh/my-custom-key.pem# キーペアが存在することを確認(デフォルト設定の場合)
aws ec2 describe-key-pairs --key-names id_ed25519_claude_dev_key --region ap-northeast-1
# カスタマイズした場合の例
# aws ec2 describe-key-pairs --key-names id_rsa_claude_test_key --region ap-northeast-1
# aws ec2 describe-key-pairs --key-names my-custom-key --region ap-northeast-1- EC2コンソール にアクセス
- 左メニューの「キーペア」をクリック
- 「キーペアを作成」をクリック
- 名前:上記で決定したキー名(例:
id_ed25519_claude_dev_key) - キータイプ:対応するタイプ(
ED25519/RSA/ECDSA) - プライベートキーファイル形式:
.pem - 「キーペアを作成」をクリック
- ダウンロードされたファイルを適切なパスに配置
- 権限設定:
chmod 600 ~/.ssh/<キーファイル名>
注意: key_nameを手動で指定した場合、environment_nameやssh_key_algorithmの設定は無視されます。
# プロジェクトディレクトリに移動
cd /path/to/your/terraform/project
# Terraformを初期化
terraform init# デプロイ内容を確認
terraform plan出力内容を確認し、想定通りのリソースが作成されることを確認してください。
# インフラストラクチャをデプロイ
terraform apply
# "yes" と入力して実行確認デプロイ完了後、以下の情報が出力されます:
instance_public_ip = "xxx.xxx.xxx.xxx"
ssh_command = "ssh -i ~/.ssh/id_ed25519_claude_dev_key.pem -p 10022 ubuntu@xxx.xxx.xxx.xxx"
setup_status = "Check setup status: ssh -i ~/.ssh/id_ed25519_claude_dev_key.pem -p 10022 ubuntu@xxx.xxx.xxx.xxx 'cat setup_complete.txt'"
github_ssh_setup = "Run GitHub SSH setup: ssh -i ~/.ssh/id_ed25519_claude_dev_key.pem -p 10022 ubuntu@xxx.xxx.xxx.xxx './setup-github-ssh.sh'"terraform apply 完了後、EC2インスタンスではuser_dataによるセットアップが自動実行されます。
SSH接続が可能になるまで3〜5分かかります。 以下の流れで状況を確認してください。
terraform apply 完了
│
├─ [0〜1分] OS起動・パッケージ更新
├─ [1〜2分] UFW・SSHポート変更・fail2ban設定
│ ← ここでSSHポートが10022に切り替わる
├─ [2〜4分] mise・Node.js・Python・Claude Codeインストール
└─ [4〜5分] Git設定・GitHub SSHスクリプト生成
← setup_complete.txt が作成される
# terraform apply の出力に表示されたSSHコマンドを使用
ssh -i ~/.ssh/id_ed25519_claude_dev_key.pem -p 10022 ubuntu@xxx.xxx.xxx.xxx接続できない場合の原因と対処:
| 症状 | 原因 | 対処 |
|---|---|---|
Connection refused |
SSHポート変更がまだ完了していない | 1〜2分待って再試行 |
Connection timed out |
セキュリティグループの問題 | AWSコンソールでSGを確認 |
Permission denied |
キーペアの不一致 | キー名・パスを確認 |
SSH接続できたら、以下のコマンドでセットアップの完了を確認します。
# セットアップ完了ファイルを確認
cat setup_complete.txtまだセットアップ中の場合(ファイルが存在しない):
# セットアップのリアルタイムログを確認
sudo tail -f /var/log/user-data.log
# 何がインストール済みか確認
mise list 2>/dev/null || echo "miseはまだインストールされていません"セットアップが完了している場合、以下のように表示されます:
Setup completed successfully at [日時]
Service status check:
- UFW: Status: active
- SSH: active
- SSH Port: 10022
- fail2ban: active
この表示が確認できたら、STEP 5に進んでください。
# GitHub SSH設定を実行
./setup-github-ssh.shEnter passphrase (empty for no passphrase): [強固なパスフレーズを入力]
Enter same passphrase again: [同じパスフレーズを再入力]スクリプト実行後、以下のような公開鍵が表示されます:
=== GitHub SSH Public Key ===
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your-email@example.com
📋 Copy the above public key to GitHub SSH settings:
https://github.com/settings/ssh/new
- GitHub SSH設定ページ にアクセス
- Title:
Claude Dev Environment - [日付] - Key: 上記で表示された公開鍵をコピー&ペースト
- 「Add SSH key」をクリック
# GitHub SSH接続をテスト
ssh -T git@github.com成功すると以下のメッセージが表示されます:
Hi [your-username]! You've successfully authenticated, but GitHub does not provide shell access.
# Git便利エイリアスの動作確認
git graph # ブランチ履歴をグラフで表示
git one # 履歴を1行で表示
git br # ブランチ一覧(更新日順)
git bc # 現在のブランチ確認
git st # ステータス短縮表示
# ファイル操作テスト
echo "test" > test.txt
git aa # 全変更をステージング
git st # 変更状況確認# Node.js バージョン確認
node --version
# Python バージョン確認
python --version
# Claude Code確認
claude-code --version
# mise確認
mise list# テスト用のディレクトリ作成
cd ~/workspace
mkdir test-repo
cd test-repo
# Gitリポジトリ初期化
git init
echo "# Test Repository" > README.md
git add README.md
git commit -m "Initial commit"
# GitHubに新しいリポジトリを作成してプッシュテスト
# (事前にGitHubでリポジトリを作成しておく)
git remote add origin git@github.com:your-username/test-repo.git
git push -u origin maingit@github.com:)を使用してください。HTTPS形式だとSSH認証が働きません。
# SSH形式でクローン(推奨)
git clone git@github.com:username/repository.git
# プロジェクトディレクトリに移動
cd repository# Claude Codeを起動
claude-code
# または特定のファイルで起動
claude-code filename.jsサーバーサイドの日本語入力機能の設定。ターミナル(スマホ)から日本語が入力できるならこれは不要
# 日本語入力モードを開始
uim-fep
# または短縮コマンド
jp
japanese
# 日本語入力モード中
# Ctrl+Space で 日本語⇔英語 切り替え# 利用可能なバージョン一覧
mise list node
# バージョン切り替え
mise use node@20.16.0
# プロジェクト固有の設定
echo "node 20.16.0" > .tool-versions- ロケール: ja_JP.UTF-8(日本語環境)
- タイムゾーン: Asia/Tokyo(日本時間)
- 日本語入力: uim + Anthy(Ctrl+Spaceで切り替え)
- セキュリティ: カスタムSSHポート、UFW、fail2ban
- 開発環境: mise + Node.js + Python + Claude Code
- ターミナル: tmux(マルチプレクサー)
- Git便利エイリアス: 8つの効率的なGitコマンド
- ログイン時ヘルプ: 基本ツールの使い方を自動表示
# SSH接続ログの確認
sudo tail -f /var/log/auth.log
# fail2ban状況確認
sudo fail2ban-client status sshd
# UFW設定確認
sudo ufw status verbose環境にログインすると、自動で基本ツールの使い方が表示されます:
=== 基本ツール使用方法 ===
【tmux - ターミナルマルチプレクサー】
セッション管理:
tmux # 新しいセッション開始
tmux new -s myname # 名前付きセッション作成
tmux ls # セッション一覧
tmux attach -t myname # セッションにアタッチ
tmux kill-session -t myname # セッション終了
tmuxのキーバインド (Ctrl+b がプレフィックス):
Ctrl+b d - セッションをデタッチ
Ctrl+b c - 新しいウィンドウ作成
Ctrl+b n/p - 次/前のウィンドウ
Ctrl+b w - ウィンドウ一覧
Ctrl+b % - 縦に分割
Ctrl+b " - 横に分割
Ctrl+b o - ペイン間移動
Ctrl+b x - ペイン削除
Ctrl+b z - ペイン最大化切り替え
【日本語入力 (uim-fep)】
jp # 日本語入力開始 (uim-fep のエイリアス)
Ctrl+Space # 日本語↔英語切り替え
【開発環境】
mise list # インストール済み言語バージョン一覧
mise use node@18 # Node.jsバージョン切り替え
mise use python@3.11 # Pythonバージョン切り替え
claude-code # Claude Code開始
【Git便利エイリアス】
git graph # ブランチ履歴をグラフで表示
git one # 履歴を1行で表示
git br # ブランチ一覧(更新日順)
git bc # 現在のブランチ確認
git st # ステータス短縮表示
git co <branch> # ブランチ切り替え
git cob <branch> # ブランチ作成&切り替え
git aa # 全変更をステージング
git conflicts # コンフリクトファイル一覧
=================================
このヘルプ表示を無効にしたい場合は、~/.bashrc を編集してください。
# システムアップデート
sudo apt update && sudo apt upgrade -y
# Node.jsの新バージョンインストール
mise install node@latest
# Pythonの新バージョンインストール
mise install python@latest重要なデータは定期的にGitリポジトリにコミットしてください:
# 定期的なコミット
git add .
git commit -m "Work in progress"
git push作業完了後、環境を削除する場合:
# Terraformで作成したリソースを削除
terraform destroy
# "yes" と入力して削除確認# セキュリティグループの確認
aws ec2 describe-security-groups --filters "Name=group-name,Values=claude-code-*"
# SSHポートが正しく開いているか確認
# 10022番ポートが許可されていることを確認# リモートURLを確認
git remote -v
# SSH形式に変更
git remote set-url origin git@github.com:username/repository.git# user-dataログを確認
sudo cat /var/log/user-data.log
# 手動でスクリプトを再実行
sudo bash /var/lib/cloud/instance/scripts/*# bashrcの再読み込み
source ~/.bashrc
# keychainを手動実行(デフォルト設定の場合)
keychain ~/.ssh/id_ed25519_claude_dev_key.pem
source ~/.keychain/$(hostname)-sh
# カスタマイズした場合は対応するキーファイルを使用
# keychain ~/.ssh/id_rsa_claude_test_key.pem
# keychain ~/.ssh/my-custom-key.pem
- Android で日本語のフリック入力が使えるので、日本語入力がしやすい
- Android だと音声入力ができて非常に快適
- Tips
- sshはデフォルトでは含まれていないので、
pkg install opensshでインストール - よく使うサーバーへのSSHは、.bashrc などに1文字コマンドのエイリアスを作成しておくと便利
- sshはデフォルトでは含まれていないので、