<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>デプロイ on Claude Code 始めました</title><link>https://kitepon-rgb.github.io/WebAICoding/tags/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4/</link><description>Recent content in デプロイ on Claude Code 始めました</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kitepon-rgb.github.io/WebAICoding/tags/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4/index.xml" rel="self" type="application/rss+xml"/><item><title>サーバーに実装する時にClaudeにSSH使わせたら驚くほど楽だった話</title><link>https://kitepon-rgb.github.io/WebAICoding/post/claude-code-deploy/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://kitepon-rgb.github.io/WebAICoding/post/claude-code-deploy/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;AIにコードを書かせるのはもう慣れた。設計は自分でやって、実装はClaudeに任せる。いつものスタイルだ。&lt;/p&gt;
&lt;p&gt;ただ、作ったものを自宅サーバーに載せる作業——デプロイは、自分の手でやるもんだと思っていた。Dockerでイメージをビルドして、サーバー側でpullして、コンテナ外にSQLiteのDBを置いて、.envを設定して、パーミッションを整えて。地味で面倒だが、こればっかりは手作業だろうと。&lt;/p&gt;
&lt;p&gt;そう思い込んでいた。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="コピペ相談の限界"&gt;コピペ相談の限界&lt;/h2&gt;
&lt;p&gt;以前はサーバー側でトラブルが起きたら、ターミナルの出力をコピペしてAIに聞いていた。&lt;/p&gt;
&lt;p&gt;Nextcloudを自宅サーバーに入れた時がひどかった。パーミッション周りのエラーが出て、GPT-5.4に相談したんだが、延々とループした。「このディレクトリの権限を変えてみてください」→ 変えた → 別のエラー → 「じゃあこっちも」→ 変えた → 最初のエラーに戻る。&lt;/p&gt;
&lt;p&gt;最終的にClaudeにも手伝ってもらって解決したが、相当時間を使った。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="スクリプト書きましょうか"&gt;「スクリプト書きましょうか？」&lt;/h2&gt;
&lt;p&gt;DiscordのオークションBotを自宅サーバーにデプロイする作業をしていた時のこと。&lt;/p&gt;
&lt;p&gt;コンテナの更新を何度かやった後、Claudeが聞いてきた。**「コンテナの更新を簡単にするスクリプト書きましょうか？」**と。&lt;/p&gt;
&lt;p&gt;いいよ、と返した。&lt;/p&gt;
&lt;p&gt;そしたらまず、SSH鍵認証の設定から始めた。鍵の生成、サーバー側のauthorized_keysへの登録。パスワードなしでリモート操作できる環境を整えてから、deploy.shを作った。&lt;/p&gt;
&lt;p&gt;それまでは、リモートのターミナルに手でコマンドを打ち込んでいた。エラーが出たらやり直しだし、動いたかどうかの確認もログをコピペして見てたし。面倒だった。&lt;/p&gt;
&lt;p&gt;deploy.shの中身はシンプルだ。ローカルでDockerイメージをビルド、GitHub Container Registryにpush、SSHでサーバーに入ってpodman pull（サーバー側はBazziteOSなのでDockerではなくpodman）、古いコンテナを止めて削除、新しいコンテナを起動。DBのボリュームマウントも.envの読み込みも全部入っている。これがスクリプト一発で終わる。&lt;/p&gt;
&lt;p&gt;しかもそこから先、起動時にBotがエラーを吐いた時も、ClaudeがSSHでサーバーのログを確認して、原因を特定して、ローカルでコードを直して、deploy.shで再デプロイ。一つのセッションで全部完結した。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="コピペと直接触らせるの差"&gt;コピペと直接触らせるの差&lt;/h2&gt;
&lt;p&gt;コピペで相談していた頃は、AIはサーバーの状態が見えていなかった。エラーメッセージだけ渡されても、「操作ミスでは？」「環境設定が違うのでは？」という可能性を一個ずつ手動で潰すしかない。人間がコピペで中継する分、遠回りになる。&lt;/p&gt;
&lt;p&gt;SSHで直接触らせると、Claudeが自分の目でサーバーの状態を確認できる。推測じゃなくて事実ベースで動ける。&lt;/p&gt;
&lt;p&gt;やっていることは &lt;code&gt;ssh user@host &amp;quot;コマンド&amp;quot;&lt;/code&gt; をBashから叩いているだけだ。特別な仕組みがあるわけじゃない。鍵認証が通っていれば、Claudeからすると「ちょっと遠いターミナル」でしかない。&lt;/p&gt;
&lt;p&gt;怖くないのかという話だが、ポートはSSHと80しか開けていないし、まだ売上もない環境だ。それに、Opusは指示の意図を正確に汲んでくれるから、変なコマンドを叩かれる心配が少ない。これが精度の低いモデルだったら怖いと思う。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;デプロイは手作業でやるもんだと思い込んでいた。Claudeに「スクリプト書きましょうか？」って言われるまで、任せるって発想がなかった。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;このブログ「Claude Code 始めました」は、Claude MAX ユーザーが実際の開発で使いながら学んだことを記録していくサイトです。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>