XServer VPS 無料枠 + Static 無料枠で Claude Code on the Web 相当の「エージェント用ベース環境」を `curl | bash` で再現する

@Kongyokongyo / 更新: 2026/05/20 18:56

例の如くvibe執筆ですはい。

MD 11.1KB
1

XServer VPS 無料枠 + Static 無料枠で Claude Code on the Web 相当の「エージェント用ベース環境」を curl | bash で再現する

TL;DR

  • 自分用のエージェント踏み台として XServer VPS の 無料枠 を使っているが、立ち上がった Ubuntu Desktop は素の状態で、Claude Code on the Web の VM みたいに「最初から pytestcargoripgrep も入っている」状態ではない
  • そこで Claude Code on the Web の Installed tools を目標値にした setup.sh を手元のエージェントに書かせて、XServer Static の無料枠 に置いた (バイブコーダーなので手打ちはしない)
  • VPS 立て直後にリモートデスクトップで入って、端末で curl -fsSL https://stXXXXXX.static.jp/setup.sh | bash 1 行で 5 分くらいで揃う
  • XServer Static は private repo OK / SSL 自動 / 転送量無制限 で curl | bash のホストとして手頃
  • ハマるのは「反映待ちのデフォルトページ」「ブラウザキャッシュ」の 2 つだけ

目標値: Claude Code on the Web の “セッション VM”

setup.sh の目的を一言で言うと、Claude Code on the Web の “セッションごとに立ち上がる VM の中身” を、自分の VPS の上に再現すること

Anthropic のドキュメント Use Claude Code on the web — Installed tools によると、Web 版のセッションは Ubuntu 24.04 ベースで、起動直後から以下が入っている:

カテゴリ プリインストール
Python Python 3.x + pip, poetry, uv, black, mypy, pytest, ruff
Node.js nvm 経由の 20 / 21 / 22 + npm, yarn, pnpm, bun, eslint, prettier, chromedriver
Ruby 3.1 / 3.2 / 3.3 + gem, bundler, rbenv
PHP 8.4 + Composer
Java OpenJDK 21 + Maven + Gradle
Go 最新安定版 (モジュールサポート)
Rust rustc + cargo
C/C++ GCC, Clang, cmake, ninja, conan
Docker docker, dockerd, docker compose
データベース PostgreSQL 16, Redis 7.0
ユーティリティ git, jq, yq, ripgrep, tmux, vim, nano

リソースは 4 vCPU / 16 GB RAM / 30 GB disk。これが Claude Code が走る「初期土俵」で、エージェントが pytestcargo builddocker compose探さずに叩ける、という状態が常に成り立つ。エージェント側の負荷とコケるリスクが目に見えて減る。

なんでこの構成になったか (経緯)

Claude Code on the Web を直接使えばいいじゃん、という話なのだが、Web 版は (執筆時点で) Pro / Max / Team の research preview。手元の AI コーディングエージェント (Codex CLI など) を同じ土俵で走らせたいときに、自分のマシンや無料 VPS の上で同等の環境を作りたくなる。

最初から「private repo + 短い HTTPS + 書き換え自由」を求めて XServer Static に行き着いたわけではなく、実際の経緯はもうちょっと泥臭い:

  1. XServer VPS の 無料枠 で Codex CLI とかを動かしてみた。スペックは 3 vCPU / 4 GB RAM / NVMe 30 GB / Ubuntu Desktop (GNOME)。Claude Code on the Web (4 vCPU / 16 GB / 30 GB) と比べると CPU・ディスクはほぼ同等、メモリだけ 16 → 4 GB に妥協が入る
  2. 接続は SSH ではなく 公式手順のリモートデスクトップ で入っている。デスクトップから「端末」を開いて作業
  3. ただし立ち上がった Ubuntu Desktop は本当に何も入っていない (git すらない)。自分はバイブコーダーで手打ちはしないので、最初は md のメモに「apt install … / nvm 入れる / rustup … / pipx で poetry mypy …」というコマンド一覧を貼っておいて、端末にコピペしていた。それでも毎回コピペするのは面倒
  4. 別件で取っていた XServer Static の無料枠 の使い道が決まっていなかった。1 GB / SSL 自動 / 転送量無制限 / GitHub 自動デプロイ付きの無料サブドメインが余っている、という状態
  5. 「ちょうど setup.sh を 1 行で配れるホストがほしい」と気づいて、md コピペを curl -fsSL https://stXXXXXX.static.jp/setup.sh | bash 1 行に置き換えたら、案外かなり実用的だった ← イマココ

要するに、Static の無料枠の使い道を探した結果として XServer の無料枠を 2 つ重ねる構成になり、結果として Claude Code on the Web の VM を擬似的に手元に持ってくる形にできた、という後付け感のある成立過程。

XServer Static の何が嬉しいか

項目 仕様
料金 0 円
ディスク 1.00 GB
転送量 無制限 (過大負荷時は制限の注意書きあり)
独自 SSL 無料 (https://stXXXXXX.static.jp が自動で立つ)
Web サーバー Apache 2.4.x / nginx
.htaccess / mod_rewrite 利用可能
アカウント上限 お一人様 3 個まで
GitHub 自動デプロイ private repo OK

curl | bash の URL ホストとしてはこの表の右列 (転送量無制限 / HTTPS 自動 / private repo OK) が全部ついてくるのが効く。setup.sh は数 KB なので 1 GB の枠は使い切らない。

手順

前提: 手元のマシンでの作業。git と GitHub アカウントがあれば足りる。

1. XServer Static のアカウントを取る

https://static.xserver.ne.jp/ からお申し込み。コンビニのプリカで貫通する。

セットアップ直後は反映待ちのデフォルトページが返るが、十数分待てば抜ける (後述)。

2. GitHub リポジトリを用意して public/ 等の公開フォルダを作る

リポジトリ自体は private で OK。任意のフォルダだけを公開対象に切り分ける。と良。

my-vps-setup/ ├── README.md # 公開しない ├── notes/ # 公開しない └── public/ # ← stXXXXXX.static.jp/ に展開される ├── index.html └── setup.sh

この場合リポジトリは private のまま、public/ の中身だけがインターネットに出る — これが GitHub Pages との差分。

4. setup.sh をエージェントに書かせる

ここが本記事の (ある意味) 一番どうでもいいパート。setup.sh の中身を真面目に手で書く必要はない。上の Installed tools 表を手元のエージェント (Claude Code でも Codex でも) に渡して、

「この表に揃えた Ubuntu 24.04 用の setup.sh を書いて。自分は普段 Python + Node + Rust + C/C++ + ユーティリティしか使わないのでそれだけ。set -eo pipefail で止めて、apt → nvm → rustup → pipx の順で」

くらいの指示を出せば、30 秒で叩き台が出てくる。バイブコーディングで書き換えていけばいい。自分も Claude Code に書かせた。

結果として出てくる骨格は、概ねこんな形 (これも参考程度):

!/usr/bin/env bash

set -eo pipefail

Utilities + C/C++ (Installed tools の C/C++ + Utilities 相当)

sudo apt-get update sudo apt-get install -y –no-install-recommends \ build-essential clang cmake ninja-build git tmux vim nano curl \ ripgrep fd-find jq python3-pip python3-venv pipx

Node.js (nvm 経由で 20 / 21 / 22)

curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash export NVM_DIR=”$HOME/.nvm”; . “$NVM_DIR/nvm.sh” nvm install 20 && nvm install 21 && nvm install 22 && nvm alias default lts/* npm i -g yarn pnpm bun eslint prettier

Rust (rustc + cargo)

curl -fsSL https://sh.rustup.rs | sh -s – -y –default-toolchain stable

Python ツール (pipx で分離)

pipx ensurepath for p in poetry black mypy pytest ruff uv conan; do pipx install “$p”; done

echo “done — open a new shell to pick up PATH (nvm / cargo / pipx)”

Ruby / PHP / Java / Go / Docker / DB が必要になったプロジェクトを触る時は、また同じエージェントに「Ruby (rbenv + 3.1/3.2/3.3) も足して」と頼めばいい。必要分しか入れないほうが起動も速い。

自分が今運用している sh は swap / GNOME 調整 / git global config / yq なども含めて 4KB ほどあり、https://st274264.static.jp/setup.sh でそのまま見られる。中身は全部エージェントに書かせた / 修正させたもの。

5. VPS を立てて 1 行で叩く

XServer VPS で Ubuntu Desktop (GNOME) を作ってリモートデスクトップで入り、デスクトップから「端末」を開いて、

curl -fsSL https://st274264.static.jp/setup.sh bash

そこまで待たずに全部入る。新しいシェルを開けば node, cargo, pipx 経由のツールが PATH に乗っている。これで Claude Code on the Web 相当のスタート地点に立てた状態 で、エージェントを走らせ始められる。VPS を作り直しても同じ 1 行で同じ状態が戻る。


ハマったところ

反映待ちのデフォルトページ

サーバー作成直後は

無効なURLです。 プログラム設定の反映待ち

という XServer のデフォルトページ (Content-Length: 678, Last-Modified: 2024-08-21) が返ってくる。TLS 証明書もこの間は未発行で、curl は SNI 不一致で落ちる。curl -k で中身だけ確認できる。十数分〜数十分で抜けるので焦らないでいい。

できないこと

動的処理 (PHP / Node / Python) は不可。ホスト名は自動採番 (stXXXXXX)。アカウントは 3 個まで。curl | bash で配るのが目的ならどれも刺さらない。

(なお curl | bash を不特定多数向けに置くなら setup.sh.sha256 を併置する、記事側で全文を貼る、くらいの配慮はする。これは XServer Static の話というより curl | bash 全般の話)

まとめ

XServer の無料枠を 2 つ重ねて、Claude Code on the Web の VM の中身を VPS の上に焼き戻す、というのがこの記事の正体:

  • XServer VPS (無料) で Ubuntu Desktop (GNOME) を立てる (3 vCPU / 4 GB RAM / NVMe 30 GB)
  • XServer Static (無料)setup.sh を置く (Claude Code on the Web の Installed tools を目標値)
  • VPS 立て直後にリモートデスクトップで入って curl -fsSL https://stXXXXXX.static.jp/setup.sh | bash で 5 分

月 0 円で、GitHub に push するだけで setup.sh を更新できる。VPS を作り直しても同じ 1 行で同じ環境が戻る。エージェントが pytestcargo を探さずに叩ける土俵が常に手元にある、というのがこの構成の効能。