Closed6

DDPSでISOイメージのURLを指定してOSを入れる方法

かめっちかめっち

VPSサービスの DDPSVirtFusion パネルを採用しおり、「カスタムCD/DVD-ROM」 にisoイメージへのURLを入力することでメディアブートができる。

ただこの「URLを指定」というのが曲者で

  • https:// かつ .iso で終わっている必要がある (リダイレクトもNG)
  • Cloudflareは使えない
  • ストリーミングで読み込む、ある程度高速である必要がある

必要がある。また、落とし穴が多い。

今回はDDPSにOPNsense(ルーターOS)をインストールする過程で6時間ぐらい溶かしたためメモを残す。

かめっちかめっち

結論

以下の二択になる。

  • DDPS以外のVPSを借りてisoファイルをホスト
  • ポート開放してisoファイルをホスト

注意点として

  • サーバーがOFF状態でiso挿入を行うこと (忘れるとよくわからないエラーになるので注意)

以下の落とし穴によって上記二択に落ち着いた。

  • https:// かつ .iso で終わっている必要がある (リダイレクトもNG)
    • Google Driveやギガファイル便などのクッションページがあるサービスは使えないということになる。
    • ここでほとんどのクラウドストレージサービスは使えないということになる。
    • Dropboxはパネル上でのURLチェックは通るが、起動時にエラーになった。
  • Cloudflareは使えなかった
    • Cloudflare R2やCloudflare Tunnelは使用できなかった。
    • おそらくDDPSのパネルがCloudflareを使っているため、相性が悪いのだと思われる。
  • ストリーミングで読み込む、ある程度高速である必要がある
    • isoはストリーミング方式でオンデマンドに読み込まれる。(おそらくqemuのURLマウント機能を使っていると思う)
    • そのため、iso配布元のURLを直接指定したところ、起動に15分くらいかかり、その後isoへアクセスする操作やコマンドを打つたびに数分間フリーズするという散々な結果になった。
    • 私の回線はVDSLで遅いため、ポート開放する選択肢も見送った。
  • DDPSは使えなかった
    • DDPSで他のサーバーを借りていたので、流用してホストしようとしたが、起動時にエラーとなった。
かめっちかめっち

isoをVPSに置いてメディアブートしてみる

VPS上にnginxをインストールしてホストしたらメディアブートできた。

VPS選定

今回はLinodeの Nanode 1 GB プランを1時間だけ借りてホストすることにした。(2025/5/4時点で $0.0075/h、1時間約1円なのでお手軽)

isoデータを用意

配布サイトからisoをダウンロードして展開する。

# nginxのWWW用フォルダにisoをダウンロード
cd /var/lib/nginx/body/
wget https://mirror.ams1.nl.leaseweb.net/opnsense/releases/25.1/OPNsense-25.1-dvd-amd64.iso.bz2

# bzip2でbz2を解凍
apt update
apt install bzip2
bzip2 -d OPNsense-25.1-dvd-amd64.iso.bz2

CertbotでSSL取得

DDPSのメディアブート欄には「https」しか使えないのでSSL証明書を取得する必要がある。

certbot certonly

# How would you like to authenticate with the ACME CA?
# 1を選択 (Runs an HTTP server locally)

Nginxインストール&起動

apt install nginx

# nginx設定を追加
nano /etc/nginx/conf.d/my-data.example.com.conf
# 設定をチェックして適用
nginx -t
nginx -s reload
/etc/nginx/conf.d/my-data.example.com.conf
server {
    listen       443 ssl;
    server_name  my-data.example.com;

    # SSL 証明書・秘密鍵のパス
    ssl_certificate     /etc/letsencrypt/live/my-data.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-data.example.com/privkey.pem;

    # ドキュメントルートを設定
    root   /var/lib/nginx/body;
}

DDPSでURLを指定&起動

できた!

かめっちかめっち

トラブルシューティング

  • 実際はサーバーをOFFにしてからisoを挿入することで解決する
    (一見ストリーミング設定ミスったように見えたが、全然関係なかった)
  • 以下はエラーになるようだ。
    • ❌️443以外のポートを使う
    • ❌️短縮URLの使用
    • ❌️?.iso みたいなクエリ指定
かめっちかめっち

解約後にLinodeから通信量超過のメールが来た。

途中解約すると通信が従量課金になるっぽい。
38GBも通信したらしく、Linodeの追加転送料金は0.005USD/GBなので、34GB×0.005USD=0.17USD(約25円)くらい請求されそう。

(ストリーミング通信って、こんなに通信するのか、、、)

このスクラップは3ヶ月前にクローズされました