自宅サーバーにClaude Codeを入れて、面倒な設定を全部AIに任せる
Ubuntuの自宅サーバーにClaude Codeを導入して、以降の構築をAIに任せられる状態を作る手順です。Node.js 22系の確認、npmの導入先を ~/.npm-global に変えてパスを通す理由、@anthropic-ai/claude-code の導入とログイン、許可(パーミッション)の考え方、CLAUDE.md に書いておく内容、command not found などのトラブル対処までまとめました。
目次
はじめに
「自宅サーバーには興味があるけど、Linuxのコマンドが難しそうで手が出ない」と思っていませんか。
古いパソコンにUbuntuを入れて土台を作るところまではできても、その先には「アプリをDockerで動かす」「ファイアウォールを設定する」といった、いかにも専門的な作業が待っています。
結論からお伝えすると、私が動かしている自宅サーバーは、面倒な設定のほとんどを「Claude Code(クロードコード)」というAIにやってもらっています。
私がやったのは、日本語で「こういうことをしたい」とお願いして、提案された内容を確認してOKを出すこと。
それだけで、複雑なコマンドの入力も、設定ファイルの編集も、エラーが出たときの原因調べも、AIが代わりに進めてくれました。
この記事では、そのClaude Codeをサーバーに導入して、「以降の構築をAIに任せる」状態を作るところまでを紹介します。
前提になるのは、Ubuntu+CasaOS+DockerでSSHにつながる土台がある状態です。
そこまでの作り方は古いWindows機を自宅Linuxサーバーにする手順にまとめてあるので、まだの方はそちらを先に見ていただければと思います。
Claude Codeとは何か
Claude Codeは、Anthropic社が出している「ターミナルの中で動くAIアシスタント」です。
ふだんブラウザで使うチャットAIと似ていますが、決定的に違う点が2つあります。
- サーバーの中のファイルを直接読み書きできる:設定ファイルを開いて中身を理解し、必要な箇所を書き換えてくれます。
- サーバーのコマンドを実際に実行できる:「このアプリを入れて」とお願いすると、必要なコマンドを組み立てて、その場で実行までしてくれます。
普通のチャットAIだと「このコマンドをコピーして貼り付けてください」と言われて、自分で打ち込んでエラーが出て…という往復が発生しますが、Claude Codeはその往復ごと引き受けてくれます。
仕組みとしては、こういう流れを自動で回しています。
お願いを受け取る → 必要な調べ物(ファイルを読む、状態を確認する)をする → 手を動かす(コマンドを実行する、ファイルを書き換える)→ その結果(出力やエラー)を自分で読む → うまくいっていなければ直す。
この「実行して、結果を見て、直す」を人間に代わって繰り返してくれるのが、ただ答えを返すチャットAIとの大きな違いです。
エラーが出ても「このエラーはこういう意味で、こう直します」と説明しながら直してくれるので、知らないうちに少しずつLinuxやDockerのことも分かってきます。
なぜサーバーに直接入れるのか
「自分のパソコンでClaude Codeを動かして、遠隔でサーバーを操作すればいいのでは」と思うかもしれません。
私はサーバー本体の中にClaude Codeを入れて、サーバーの上で直接動かすやり方にしました。
理由は、サーバーのことはサーバーの中で完結させたほうが速いからです。
サーバーの中で動いているClaude Codeは、そのサーバーのファイルもアプリの状態(どのコンテナが動いているか、ディスクの空きはどれくらいか)も、すべてその場で直接確認できます。
遠隔のやり取りを挟まずに「調べて、直して、確認する」が回るので、作業がスムーズです。
普段は、いつものパソコンからSSHでサーバーに入り、そこでClaude Codeを起動して会話する、という流れになります。
サーバーは電源を入れっぱなしなので、AIに作業を頼んでパソコンを閉じても、サーバー側で作業が続く、といった使い方もできます。
ステップ1:Claude Codeを動かす準備をする(Node.js)
Claude Codeは「Node.js(ノードジェイエス)」という土台の上で動きます。
Node.jsは、もともとはWeb開発などで使われる実行環境ですが、ここでは「Claude Codeを動かすために必要な部品」くらいの理解で大丈夫です。
比較的新しいバージョンが必要なので、私の環境では Node 22系 を入れました。
まずSSHでサーバーに入った状態で、Node.jsを入れます。
Ubuntuに最初から入っているものは古いことがあるので、新しめのバージョンを入れるのが無難です。
入れ終わったら、次のコマンドでバージョンを確認します。
node -v
v22 で始まる番号(私の環境では v22.22.2)が表示されれば準備完了です。
具体的にどのコマンドで22系を入れるかは環境によって変わるので、ここはあえて手順を断定しません。
Node.jsの入れ方そのものに迷ったら、SSHでつないだサーバーのClaude Codeに「Node.jsの22系を入れたい」と頼むこともできます(ただしこの時点ではまだClaude Codeが入っていないので、最初の1回だけは自分で入れることになります)。
npmの「入れ場所」を自分のユーザー領域に向ける(ここが肝)
次に、Claude Code本体を導入します。
Node.jsに付いてくる「npm(エヌピーエム)」というアプリ管理ツールを使うのですが、その前にひと工夫をしておきます。
これをやっておくと後がぐっと楽になり、私自身もこの設定にしています。
npmで「グローバル(全体で使う)」にアプリを入れると、初期設定ではシステム全体の領域(/usr/lib などの管理者しか触れない場所)に入ろうとします。
すると毎回 sudo(管理者権限)が必要になり、システムの共有部分にどんどん物が増えていきます。
これは2つの理由でうれしくありません。
ひとつは、権限つきの操作はうっかり大事なファイルを壊すと影響が大きいこと。
もうひとつは、システム標準の領域に自分用のものを混ぜると、後でOSやNode.jsを入れ替えたときに何がどこから来たのか分からなくなることです。
そこで、npmの入れ場所を自分のホーム配下(ユーザー専用の領域)に向け直します。
具体的には次の1行を実行します。
npm config set prefix '~/.npm-global'
これで「グローバルに入れたアプリは ~/.npm-global の下に置く」という設定になります(~/ は自分のホームフォルダのことです)。
自分の持ち物の中に入れるので、以降は sudo なしで導入・更新ができ、システムの共有部分を一切汚しません。
ただし、入れ場所を変えただけだと、入れたコマンドを名前で呼んでも「見つからない」と言われます。
コマンドの実体が置かれるのは ~/.npm-global/bin というフォルダなのですが、システムはそこを探しに行く設定になっていないからです。
そこで、起動時に読み込まれる設定ファイル ~/.bashrc の末尾に、次の1行を足してパスを通します(その置き場所を探しに行くように教える、という意味です)。
export PATH=~/.npm-global/bin:$PATH
足したら、source ~/.bashrc を実行するか、いったんログインし直すと反映されます。
これで ~/.npm-global/bin に入ったコマンドを、フルパスを打たずに名前だけで呼べるようになります。
Claude Code本体を入れる
下ごしらえができたら、Claude Code本体を入れます。
パッケージ名は @anthropic-ai/claude-code です。
npm install -g @anthropic-ai/claude-code
行のなかの -g は「グローバルに(このユーザーで共通して使えるように)入れる」という意味です。
先ほどの設定のおかげで、これが ~/.npm-global 配下に、sudo なしで入ります。
導入が終わったら、次のコマンドで確認します。
claude --version
2 で始まるバージョン番号(私の環境では 2.1.168 でした)が表示されれば成功です。
番号が出ず「command not found(コマンドが見つからない)」と言われたら、それは導入の失敗ではなく、たいていパスの設定漏れです(後半のQ&Aで詳しく触れます)。
最後に、自分のAnthropicアカウントでログインします。
初めて claude と打って起動すると、ログインの案内が出るので、画面の指示に従ってブラウザでログインを済ませます。
一度ログインすれば、次回からはそのまま使えます。
料金とアカウントについて
ひとつ正直にお伝えしておくと、Claude Codeを使うには、Anthropicのアカウントと、それに対応した利用プランが必要です。
無料で何でも好きなだけ使える、というものではありません。
私は普段の調べ物や文章づくりでもClaudeを使っているので、その延長でこのサーバー構築にも使っています。
プランの種類や料金は変わることがあるので、最新の内容は公式サイトで確認してみてください。
サーバーの設定に詰まって何時間も検索して回る手間を考えると、私にとっては十分に見合う投資でした。
ここは人によって感じ方が違うところだと思うので、ご自身の使い方と相談してみてください。
ステップ2:実際にClaude Codeと会話してみる
準備ができたら、作業をしたいフォルダに移動して、claude と打つだけで起動します。
あとは、普通のチャットのように日本語で話しかけるだけです。
たとえば最初は、こんな当たり障りのないお願いから試すと感覚がつかめます。
このサーバーのOSのバージョンと、いま使えるディスクの空き容量を教えてください。
すると、Claude Codeは必要なコマンド(OSの情報やディスク使用量を調べるコマンド)を自分で考えて、「このコマンドを実行してよいですか」と確認してきます。
OKを出すと実行し、結果を分かりやすく日本語でまとめて教えてくれます。
ここで大事なのが、この「実行してよいですか」という確認(パーミッション)の仕組みです。
Claude Codeは、ファイルを書き換えたりコマンドを動かしたりする前に、原則として許可を求めてきます。
読むだけの安全な操作(ファイルを開いて読む、状態を確認するなど)はそのまま進め、変更を伴う操作(ファイルの書き換え、何かを入れる・消すコマンド)は確認する、という具合に、操作の危なさに応じて止まってくれます。
私たちは内容をざっと見て、納得できたらOKを出せばいいだけです。
専門的なコマンドの意味が分からなくても、「何をしようとしているか」は日本語で説明してくれるので、そこを読んで判断すれば大丈夫かと思います。
確認のときには、その都度OKを出すほかに、「このコマンドは今後は確認なしで実行してよい」と覚えさせる選択肢も出ます。
たとえば状態を確認するだけの読み取り系コマンドは、毎回聞かれると逆に手間なので、慣れてきたら確認なしに回すと作業が速くなります。
ポイントは、広げる範囲を自分で選べることです。
「ファイルを読む・状態を見るだけの安全な操作は確認なし、変更や削除を伴う操作は必ず確認」という線引きから始めて、信頼できる範囲だけを少しずつ広げていくのが安全です。
最初から「何でも自動実行」にするのだけは避けます(理由は次の見出しで述べます)。
ステップ3:安全に使うために最初に決めておくこと
AIにサーバーの操作を任せる、と聞くと不安に感じる方もいると思います。
実際に使っていて、最初に意識しておくとよかった点を挙げておきます。
- いきなり「何でも自動で実行」にしない:先ほどの確認の仕組みを使い、最初は1つ1つOKを出しながら進めるのが安心です。内容を読めば判断できるようになってから、任せる範囲を広げていきます。
- 大事なデータは先にバックアップしておく:設定をいじる前にバックアップがあると安心して試せます(自宅サーバーのバックアップの仕組み自体も、Claude Codeに作ってもらいました)。
- 作業するフォルダを意識する:いまどのフォルダで作業しているのかを把握しておくと、意図しない場所をいじってしまう事故を防げます。Claude Codeは、起動したフォルダとその下を主な作業範囲にします。
- 分からないことはその場で聞く:「いまの操作は何のため?」「元に戻せる?」と日本語で聞けば説明してくれます。
ステップ4:サーバーの説明書(CLAUDE.md)を用意しておく
もうひとつ、やっておくと後がぐっと楽になる工夫があります。
それは、このサーバーがどんな構成なのかをまとめた「説明書」のファイルを置いておくことです。
Claude Codeには、作業フォルダに CLAUDE.md という名前のファイルを置いておくと、毎回それを最初に読み込んでから作業を始めるという仕組みがあります(ファイル名は大文字でこの綴り)。
ここに前提や約束ごとを書いておくと、毎回ゼロから説明しなくても、文脈を踏まえた提案をしてくれます。
書く内容は、おおむね次の3本立てにしておくと過不足ありません。
- サーバーの基本構成:OS・データの置き場・アプリの管理方法など、土台の前提。
- 守ってほしいルール:「変更の前には必ず確認する」「この操作はしない」など、毎回伝えなくても守ってほしい約束。
- 応答の仕方:「専門用語は噛み砕いて」など、自分に合った説明のスタイル。
文章はふつうの箇条書きで構いません。
私が置いている CLAUDE.md は、骨子だけ抜き出すとこんな形です。
## 基本構成
- OSはUbuntu。データは /DATA の下にまとめている。
- アプリはDockerで動かし、CasaOSの画面から管理している。
- 外部からのアクセスはTailscale経由のみ(インターネットには直接公開しない)。
## 守ってほしいルール
- 設定ファイルやデータを変更する操作の前には、必ず何をするか説明して確認を取ること。
- ディスクを消す・初期化する系のコマンドは、私が明示的に頼むまで実行しない。
- 大きな変更の前には、戻せるように元の設定を控えてから進めること。
## 応答スタイル
- 私は非エンジニア。専門用語は毎回かんたんな言葉で補足してほしい。
- コマンドを実行するときは、何のためのコマンドかを一言添えること。
- 日本語で答えること。
こうした前提を一度書いておくと、会話のたびに同じ説明を繰り返さずに済みます。
しかも、このルール(とくに「変更前に確認する」)は先ほどのパーミッションの仕組みと噛み合って、安全側に倒すための二重の歯止めになります。
最初にこれを用意しておくのがおすすめです。
なお、ここに書いた「外部からのアクセスはTailscale経由のみ」という一行のように、後から構成を足すたびに CLAUDE.md も更新しておくと、説明書と実態がずれずに済みます。
実際の構築は「Claude Codeへの指示書」を渡して進める
ここまでで、サーバーの上でClaude Codeが動き、日本語でお願いすれば作業を代行してくれる状態ができました。
ここから先の構築は、やってほしいことを1枚のお願い文(プロンプト)にまとめて渡す、という進め方になります。
雰囲気をつかんでもらうために、指示書のサンプルを1つ載せておきます。
「サーバーの状態をひと通り教えてほしい」というお願いなら、こんな具合です。
あなたはこのUbuntuサーバーの構築を手伝うエンジニアです。
私は非エンジニアなので、専門用語は噛み砕いて説明してください。
まず現状を把握したいので、次を調べて日本語でまとめてください。
1. OSとバージョン
2. CPU・メモリ・ディスクの空き状況
3. いま動いているDockerのアプリ一覧
コマンドを実行する前には、何をするのか一言説明してから進めてください。
ポイントは、「自分は素人だから噛み砕いて説明して」「実行前に説明して」と最初に伝えておくことです。
こう書いておくだけで説明がぐっとやさしくなり、安心して任せられます。
私がこのサーバーに入れた各アプリも、すべてこの形の指示書を渡して構築しました。
それぞれの記事に実際の指示書を載せてあるので、同じものを作りたい方はコピーしてご自身のサーバーのClaude Codeに渡してみてください。
ファイル同期のSyncthing、自分専用クラウドのNextcloud、写真管理のImmich、RSSリーダーのMiniflux、スマホからObsidianを読み書きするObsidian MCPサーバー、バックアップの仕組みといった具合です。
よくあるトラブルと対処
導入のときにつまずきやすい点を、Q&Aでまとめておきます。
Q. claude と打っても「command not found(コマンドが見つからない)」と出る
A. 導入の失敗ではなく、コマンドの置き場所にパスが通っていないのがほぼ原因です。
ステップ1のとおり、入れ場所を ~/.npm-global に向けると、コマンドの実体は ~/.npm-global/bin に置かれます。
ここを探しに行く設定(~/.bashrc の export PATH=~/.npm-global/bin:$PATH の一行)が抜けていたり、足したあとに反映されていなかったりすると、この症状になります。
~/.bashrc に一行があるか確認し、足したばかりなら source ~/.bashrc を実行するか、ログインし直してください。
それでも直らないときは、npm config get prefix で入れ場所が ~/.npm-global になっているかを確かめます。
Q. SSH越しに使っていて、ログインの承認がうまくいかない
A. 初回ログインでは承認用のURLが表示されます。
SSHでつないだ黒い画面に出たURLを、手元のパソコンのブラウザにコピーして開き、そこでログインを済ませます。
サーバー自体にはブラウザが無くても、手元の端末のブラウザで承認できれば大丈夫です。
Q. 提案された操作が危なくないか不安
A. 変更を伴う操作の前には確認で止まるので、内容を読んで、不安なら「これは元に戻せる?」「もっと安全なやり方は?」と聞いてからOKを出せば大丈夫です。
どうしても判断がつかない操作は、いったん断っても問題ありません。
Q. 受け答えの賢さを変えたい(モデルの使い分け)
A. Claudeには賢さと速さのバランスが違う複数のモデルがあり、大きく3段階で考えると分かりやすいです。
いちばん賢くじっくり考えるのが Opus(オーパス)、賢さと速さのバランス型が Sonnet(ソネット)、いちばん軽くて速いのが Haiku(ハイク) です。
一般に、賢いモデルほど時間と消費が増え、軽いモデルほど速くて軽い、という関係になります。
使い分けの目安はこうです。
構成をどう組むか・エラーの原因が分からない、といった考えさせたい相談は賢いモデル(Opus/Sonnet)に、状態の確認や定型的なファイル整理のような軽い作業は速いモデル(Haiku)に、という具合です。
とはいえ最初から細かく切り替える必要はなく、迷ったら既定のままで十分かと思います。
慣れてきて「ここは深く考えてほしい」「ここは速く回したい」と感じたときに、起動中に切り替えれば大丈夫です。
まとめ
いかがでしたか。
今回は、自宅サーバーにClaude Codeを導入して、面倒な設定をAIに任せられる状態を作るところまでを紹介しました。
振り返ると、次のような内容でした。
- Claude Codeは、サーバーのファイルやコマンドを直接扱い、「実行して結果を見て直す」を繰り返すAIアシスタント
- Node.js(22系)を入れ、npmの入れ場所を
~/.npm-globalに向けて~/.npm-global/binにパスを通したうえで、@anthropic-ai/claude-codeをsudoなしで導入してログインする - 作業フォルダで起動し、確認(パーミッション)の仕組みを使いながら、日本語でお願いして進める
- 説明書(
CLAUDE.md)を置いておくと、前提やルールを毎回伝えずに済む - 個々の構築は、噛み砕いた説明と実行前の確認を求める「指示書」を1枚渡して進める
難しいコマンドを覚える必要はなく、「やりたいこと」を日本語で伝えられれば、あとは一緒に進めてくれます。
外出先からこのサーバーに安全につなぐ話はTailscaleの記事にまとめてあるので、続けて読んでいただければと思います。
この記事が誰かの役に立てばうれしいです。