電車に揺られながら、スマホでひと言だけ指示を出す。
それだけで、自宅に置いたノート PC が黙々とコードを書き進めてくれる。
そんな開発環境を、1 万 7 千円台の中古ノート PC で作りました。
VPS を借りるか、ノート PC を買うか
きっかけは、外出先からスマホで AI Agent に開発の指示を出したい、と考えたことでした。
指示を受け取って動き続けてくれる、サーバー役のマシンが必要になります。
最初は、VPS で Linux マシンを借りるつもりでした。
ところが、SSD 256GB・RAM 8GB クラスの VPS は、最安プランでも月 3,000 円以上かかります。
月 3,000 円くらいなら払ってもよいと考えていた矢先、同じスペックの Amazon 認定整備済みノート PC が、しかも Let's note で 1 万円台後半に見つかりました。
そこで方針を変え、VPS ではなくノート PC を購入することにしました。
費用感を並べると、次のとおりです。
買ったのは 1 万 7 千円の中古 Let's note
購入したのは、Panasonic の Let's note CF-SZ6 です。
第 7 世代の Core i5 に、RAM 8GB、SSD 256GB という構成でした。
Windows 11 がプリインストールされていましたが、RAM 8GB で Windows 11 を動かすのはさすがに厳しいと判断しました。
そこで、Linux Mint を入れ直しました。
さらに OpenCode や Node.js をインストールし、開発サーバーとして使える状態に整えています。
また、このノート PC から GitHub CLI で AI 用の GitHub アカウントにログインしました。
これにより、push・commit・pull・PR 作成・Issue 作成まで、一通りの操作をこのマシン単独で完結できます。
この 1 台の中には、次の図のような構成でソフトウェアが積み重なっています。
Cloudflare Tunnel と Google SSO で外から安全にアクセス
中古のノート PC を用意しても、外から接続できなければ意味がありません。
そこで使ったのが Cloudflare Tunnel です。
これを使うと、ルーターのポート開放なしで、外部から Linux Mint 上のサーバーへ接続できるようになります。
ただし、誰でもアクセスできる状態は避けたかったので、Cloudflare の Identity Provider 機能で Google SSO 認証を導入しました。
ログインを許可しているのは、私個人の Google アカウントだけです。
Linux Mint 上では OpenCode Server を起動しました。
チャット操作は、Web 経由でできます。
実際にコードを書いているのは、OpenCode が呼び出す LLM Provider(Claude API など)です。
全体の流れは、次の図のとおりです。
なぜ Cloudflare Tunnel 経由の Google SSO を選んだか
選択肢は他にもあったはずですが、実際にはメリットばかりでした。
- 個人開発レベルだったら無料で使える
- 世界的企業のサービスなので安心感があり、セットアップの手順は AI に聞けば教えてくれる
- ログイン操作が簡単
- SSL 通信の証明書発行も Cloudflare 側が自動で対応してくれる
もともと Cloudflare でドメインを購入していたこともあり、今回は固定ドメインで運用しています。
電車の中からでも放置で開発が進む
外部の PC やスマホからアクセスすると、まず Google アカウントの SSO 認証が起動します。
認証が通ると、その後に OpenCode の Web ページが開きます。
スマホからチャットで指示を出すと、処理するのは Linux Mint 上の OpenCode です。
そのあとは、スマホの画面を閉じても構いません。
Linux Mint 側は、そのまま処理を継続してくれます。
ただし、注意点も 1 つあります。
OpenCode 側から確認の質問が来た場合、そこで処理が止まってしまいます。
そのため完全な放置とはいかず、ちょくちょく進捗状況をチェックする必要があります。
この分岐をまとめると、次の図のようになります。
結果
導入してみると、めちゃくちゃ便利になりました。
今では、電車の中の暇な時間にスマホで実装の指示を出し、帰宅後に GitHub アプリで PR をマージする、という流れが定着しつつあります。
去年までは、自宅のノート PC・OSS・Cloudflare を組み合わせて、ここまでのことができるとは考えていませんでした。







