国内クラウドサーバーで Bun インストールスクリプトを加速する三つの方法

(記事は中国語) 中文 →

スクリプト修正から環境変数の利用、そして自前の海外 VPS 経由 SOCKS プロキシまで、より洗練され、より速く、より信頼性の高い手法を段階的に提示する。実測で自前で構築したプロキシは公開ミラーより約 16 倍速い。


国内クラウドサーバーで Bun の公式インストールスクリプトを走らせると、往々にして非常に遅い。原因はスクリプトが GitHub Releases からバイナリをダウンロードするが、国内から GitHub へのアクセスが制限されているためだ。

本稿は既に国内クラウドサーバーを一台持ち、SSH でログインでき、基本コマンドを走らせられる前提とする。以下の三つの方法は「洗練度」の順に並んでおり、最後の方法は実測で速度差が格段に大きい。

方法一:スクリプト内の GitHub アドレスを修正する

最も素直なやり方で、スクリプトをダウンロードして手動でアドレスを変える。

wget https://bun.sh/install -O bun-install.sh
# bun-install.sh を編集し、GITHUB のデフォルト値を gh-proxy ミラーに変更
# GITHUB=${GITHUB-"https://hk.gh-proxy.com/https://github.com"}
bash bun-install.sh

使えるが、遠回りだ。

方法二:環境変数で上書きする(ファイル変更不要)

インストールスクリプトを読むと、スクリプト自体が GITHUB を環境変数で上書き可能な設計にしているのが分かる。

GITHUB=${GITHUB-"https://github.com"}
github_repo="$GITHUB/oven-sh/bun"

${VAR-default} はシェルのデフォルト値構文で、環境に GITHUB があればそれを使い、なければデフォルトを使う。つまり一行で済む。

curl -fsSL https://bun.sh/install | GITHUB="https://hk.gh-proxy.com/https://github.com" bash

一時ファイルをダウンロードせず、ゴミも残さない。この発想は「スクリプトを読む前に作者が設定の余地があるか確認する」あらゆるシナリオに適用できる。

方法三:自分の海外 VPS で SOCKS プロキシを通す(推奨)

gh-proxy.com のような公開ミラーは速度制限があり、突如サービス停止やブロックの可能性がある。既に海外 VPS(Vultr、BandwagonHost(搬瓦工)、テンセントクラウド香港Lighthouseなど、月数ドルで手に入る)を一台持ち、SSH 鍵認証を設定済みなら、SSH 動的転送で SOCKS5 ポートを開ける。

# 1. 海外 VPS への SOCKS5 トンネルを一時的に確立(-f でバックグラウンド、-N でコマンド非実行)
ssh -fN -D 127.0.0.1:1080 your-overseas-host

# 2. インストールスクリプトをプロキシ経由で走らせる
ALL_PROXY=socks5h://127.0.0.1:1080 bash -c "$(curl -fsSL --socks5-hostname 127.0.0.1:1080 https://bun.sh/install)"

# 3. 使い終わったら閉じる。さもなくばトンネルがバックグラウンドに残り続ける
pkill -f 'ssh -fN -D 127.0.0.1:1080'

socks5h--socks5-hostname は DNS 解析もプロキシ経由にすることを意味し、国内 DNS 汚染による誤ったアドレスへの解決を防ぐ。

この方案の利点:

実測比較

同一の上海 VPS で Bun 1.3.13 をインストール。

方案ダウンロード元所要時間
方法二公益ミラー hk.gh-proxy.com2m59s
方法三自建香港 VPS(SOCKS5)11s

約 16 倍の差だ。

三つの方法にはそれぞれに適した使い道がある。一回限りのインストールなら方法二が最も手軽。国内で長期開発するなら方法三が一度の設定で長く恩恵を受ける。方法一はスクリプトのロジックを読み解きたいときにだけ意味がある。国内で長期開発するなら、安価な海外の小さなサーバーを一台踏み台として用意すると、その月額をはるかに超えるリターンがある。

ついでに補足。まだマシンを持っていないなら、まず安定した海外軽量サーバーを一台用意するのが最も手間が省ける。テンセントクラウド Lighthouse のようなシナリオ別販売の軽量マシンは、この手のプロキシ踏み台や臨時開発機に適している。

テンセントクラウド Lighthouse が越境ECの海外展開を支援

もし海外軽量サーバーを探していてこれに使いたいなら、このテンセントクラウド Lighthouse キャンペーンページを直接見てほしい:【腾讯云】Lighthouse助力跨境电商业务扬帆出海。ここのシナリオに合致する。香港軽量を踏み台、プロキシ、テスト機として使うのに都合が良い。

Bun の軽量特性はシステムレベルの定期タスクにも適している。例えば brew-daily という Homebrew の毎日の新規パッケージ追跡ツールは、Bun スクリプトで実装されている。


関連ツール:

更新履歴

  • 公開