コンテンツにスキップ
数学の主張
検索
Ctrl
K
キャンセル
GitHub
X
Instagram
テーマの選択
ダーク
ライト
自動
数学
読書・学習・ライフ
数学日誌
Software
Software
astro
AstroのStepsコンポーネント使用時のルール
Astro(starlight)でrehypeKatexプラグインに引数を渡す方法.
「完全無料」で作る!Astro, GitHub, 忍者ホームページで始めるWebサイト構築入門(0)
[WARN] [@astrojs/sitemap] The Sitemap integration requires the ...
Astro(Starlight)でテキストにハイライトする.
other
ADBを使ったAndroid自動操作入門 〜スマホ専用ポイ活の第一歩〜
AndroidでVisaのタッチ決済を使う方法|iD・QUICPayにならない登録手順
BunでPlaywrightをバイナリ化した際の「Cannot find package」エラーの解決策
ChromeのURL欄からGeminiにページを要約させる方法
私が使っているスマホアプリ・Webサービスの招待コード一覧.
マクロミル紹介ページ.
「ナゾる!ほぼヨコハマ街歩き2」に助けられる.
忍者AdMaxの紹介ページ.
ModuleNotFoundError: No module named 'blinker._saferef'
WordPressでの数式入力・表示の決定版【KaTeX】
puppeteer
SyntaxError: Unexpected identifier 'Ay0'
Puppeteerでchromeをモバイル対応で起動する.
Vibiumとの死闘と敗北:Linux VPS環境でのブラウザ自動化の罠
Rakuten
2024
9月
10月
11月
12月
2025
1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月
2026
1月
2月
3月
raspberrypi
ファイル(拡張子)と関連付けてアプリケーションを実行する.(ラズパイ)
DietPiのChromiumブラウザを日本語表記にする.
ラズパイ4Bにgoogle-drive-ocamlfuseをインストールする.
DietPiにおける日本語フォント.
ラズパイ4B+bookwormをオーバークロック.
DietPi(bookworm)でアプリをタイル配置させたい.
DietPi(bookworm)にてbluetoothを使うために.
ラズパイ4BにBraveブラウザをインストールする。
ブラウザのvivaldiをラズパイ上にインストールする方法.
webpファイルをラズパイ上で見る方法
ラズパイへのリモートデスクトップ接続を試みたときの青い画面解消の1つの方法
ラズパイ4Bをアクセスポイント(2.4GHz)にする.
Warning: 'ozone-platform-hint' is not in the list of known options, but still passed to Electron/Chromium.
GitHub
X
Instagram
テーマの選択
ダーク
ライト
自動
Vibiumとの死闘と敗北:Linux VPS環境でのブラウザ自動化の罠
※ 本記事
は、
Vibium
との「
死闘」
の
記録
を
生成
AI(Antigravity)
の
支援
を
受
けてまとめ
直
したものです。
💡
死闘
の
結論(2026/03時点)
•
「サーバーサイド
環境(特
に
Sandbox
制限
のある
VPS)
において、
ブラウザ
の
起動
引数(–
no-sandbox
等)
を
外部
から
確実
に
制御
できない
ライブラリ
は、
本番採用
を
見送
るべきである」
•
Vibium
は
モダン
な
設計
だが、
エンジン
の
仕様上、肝心
の
引数制御
が
ブラックボッ
クス
化
されており、
制約
の
多
い
サーバー
環境
では
致命的
な
障害
となった。
死闘
の
要約
•
開発環境
vs
本番環境
: Windows
環境
では
完璧
に
動作
したが、
Linux VPS(Ubuntu 24.04)
上
では
Browser crashed with exit code 1
で
即死。
•
執念
の
デバッグ
: エンジン
の
手動
インストール、
OS
依存
ライブラリ
の
網羅、環境変数
による
制御
など、
持
てる
技術
を
尽
くして
環境構築
に
挑
んだ。
•
Sandbox
の
壁
: Linux
サーバー
で
必須
となる
--no-sandbox
フラグ
を、
ライブラリ
が
内部
で
握
り
潰
してしまう(または
透過
させない)ことが
致命傷
となった。
•
戦略的撤退
: ツール
を
動
かすという
本来
の
目的
を
達成
するため、
枯
れた
技術(
Puppeteer)
への
移
行
による「
戦略的撤退」
を
選択
した。
はじめに
最新
の
自動化
ライブラリ
である「
Vibium」
を
使
い、
ポイ
活
を
自動化
する
ツール
を
作成
した。
開発
機(
Windows / Node.js)
では
完璧
に
動作
したが、いざ
本番環境
である
Linux VPS(XServer VPS /
Ubuntu 24.04 / Bun
で
ビルド)
へ
デプロイ
し,
実行
した
際
に
想定外
の「
壁」
に
阻
まれて
敗北
した。
発生
した
問題
ビルド
した
バイナリ
を
Linux
環境
で
実行
した
際、
まず
直面
したのは「
エンジン
自体
が
見
つからな
い」という
初歩的
かつ
高
い
壁
だった。
最初
の
エラー:
Vibium
エンジン
がない
[ERROR]
アンケート
自動実行
プロセス
で
エラー
が
発生
しました
:
Could not find vibium binary. Set
VIBIUM_BIN_PATH environment variable or install @vibium/linux-x64
Error: Could not find vibium binary. Set VIBIUM_BIN_PATH environment variable or install
@vibium/linux-x64
これに
対
し、
エンジン
を
別途
インストール
して
パス
を
通
すなどの
対応
を
行
った
結果、次
に
以下
の
エラー
へと
進展(「死闘」
が
本格化)
した。
2番目
にして
致命的
な
エラー: ブラウザ
が
クラッシュ
[ERROR]
アンケート
自動実行
プロセス
で
エラー
が
発生
しました
:
Browser crashed with exit code 1
BrowserCrashedError: Browser crashed with exit code 1
試行錯誤
の
プロセス
1. バイナリ
の
欠如
Vibium
の
エンジン
自体
は
実行
ファイル
に
含
まれていなかった。そのため,
実行環境
に
Vibium
エ
ンジン
を
インストール
し、
パス
を
明示的
に
指定
する
必要
があった。
•
対応
: 以下
の
コマンド
を
VPS
側
で
実行。
エンジン
を
インストール
し、
環境変数
でその
場所
を
教
え
ることで
起動
を
試
みた。
#
エンジン
(
バイナリ
)
の
インストール
npm
install @vibium/linux-x64
#
バイナリ
の
パス
を
環境変数
に
セット
export
VIBIUM_BIN_PATH
=
$
(
pwd
)
/node_modules/@vibium/linux-x64/bin/vibium
2. Chrome
の
依存
ライブラリ
不足
エンジン
の
パス
を
通
したことで「
バイナリ
が
見
つからない」
エラー
は
消
えたが、
次
に「
Browser
crashed(
ブラウザ
が
クラッシュ)」
という
抽象的
な
エラー
に
変化
した。
この
原因
を
特定
するためには、まず
「OS
が
Chrome
を
動
かすための
最低限
の
パーツ(
共有
ライ
ブラリ)
を
備
えているか」
を
検証
し、
問題
を
切
り
分
ける
必要
があった。
Ubuntu
の
最小構成
サーバ
では、
GUI
関連
の
ライブラリ
が
標準
で
入
っていないことが
多
いためである。
•
対応
: 以下
の
パッケージ
を
網羅的
に
インストール。
これにより、
OS
レベル
での「
欠損」
を
原因
か
ら
除外
した。
sudo
apt install
-
y
libnss3 libatk1.0-0t64 libatk-bridge2.0-0t64
\
libcups2t64 libdrm2 libxkbcommon0 libxcomposite1
\
libxdamage1 libxrandr2 libgbm1 libasound2t64
\
libpango-1.0-0 libcairo2
•
結果
:
エラー
内容
は
変
わらず「
Browser crashed」
のままだった。
しかし、これにより「
ライブラ
リ(ファイル)
がないから
起動
できない」という
線
は
消
え、
問題
は「
起動
はしようとしているが、
OS
から
拒否
されている」という
次
の
レイヤー
へ
絞
り
込
まれた。
3. Sandbox
の
壁(決定打)
ライブラリ
不足
を
解消
しても
クラッシュ
が
続
く。この
状況
から、
Linux
サーバー
特有
の
「Sandbox
(
隔離機能)
による
実行制限」
が
真犯人
であると
推測
した。
root
権限
や
限定的
な
環境
では、
--
no-sandbox
フラグ
を
明示的
に
付
けない
限
り、
Chrome
は
セキュリティ
保護
のために
即座
に
プロセス
を
終了
する
仕様
だからである。
•
ライブラリ
の
制約
:
browser.start({ args: [...] })
で
引数
を
渡
しても、
Vibium
エンジン
側
で
無
視
される
仕様。
•
ラッパースクリプト
戦略
: ライブラリ
側
が
起動引数
を
透過
させないなら、
「ブラウザ
そのものを
偽
装
する」
という
アプローチ
を
取
った。
具体的
には、
以下
の
内容
で
google-chrome
という
名前
の
シェ
ルスクリプト
を
自作
した。
#
!/bin/bash
#
本物
の
Chrome
バイナリ
を
呼
び
出
す
際
に、
強制的
に
フラグ
を
差
し
込
む
exec
/usr/bin/google-chrome --no-sandbox --disable-setuid-sandbox
"
$
@
"
この
スクリプト
に
実行権限
を
与
え、
環境変数
PATH
の
先頭
に
配置
することで、
Vibium
に「
偽
の
Chrome」
を
本物
だと
思
わせて
掴
ませ、
無理
やり
設定
を
注入
することを
狙
った。
•
PATH
の
操作
の
結果
: シェル
上
で
google-chrome --version
を
叩
けば
自作
スクリプト
が
呼
ばれ,
偽
装
は
成功
している
状態
になったが、
Vibium
からの
起動
では
依然
として
クラッシュ
が
続
いた。
Vibium
の
エンジン
が
内部
で
PATH
を
無視
して
バイナリ
を
直接絶対
パス
で
探索
しているか、
シンボ
リックリンク
を
解決
して
実体
の
実行
ファイル
を
特定
している
可能性
もあり、この「
中間者攻撃」的
な
戦略
も
虚
しく
回避
されてしまった。
4. ブラウザ
専用版
の
導入
ラッパースクリプト
すら
回避
される
状況
に、もはや
現状
の
OS
環境
にある
Chrome(google-
chrome-stable)
を
使
うこと
自体
に
限界
があると
考
えた。そこで、
Vibium
エンジン
そのものの
能力
を
改
めて
探
るため、
vibium --help
を
実行
し、
利用可能
な
オプション
を
精査
した。
•
新
たな
発見
: ヘルプ
画面
を
確認
したところ、
Vibium
自身
に
install
という
サブコマンド
が
存在
し、
「Chrome for Testing(
自動
テスト
専用
の
ブラウザ)」
を
独自
に
ダウンロード・
管理
する
機能
を
備
え
ていることが
判明
した。「
専用
の
ブラウザ
を
Vibium
自身
の
管理下
で
動
かせば、
権限
や
設定
の
問題
を
内部的
に
解決
してくれるのではないか」という
最後
の
望
みをかけ、
vibium install
を
実行
した。
•
結果
: 再実行
してみたところ、
今
までの「
即死」
とは
異
なり、
数秒間
は
エラー
が
出
ずに
プロセス
が
存続
した。
期待
が
高
まったが、
結局
は
「Browser crashed with exit code 1」
に
終
わった。
OS
標準
の
ブラウザ
でも、
Vibium
純正(?)
の
ブラウザ
でも、
VPS
環境(
Sandbox
制限)
という
巨
大
な
壁
の
前
では
同様
の
末路
を
辿
ることを
痛感
し、ここで
Vibium
による
解決
は
不可能
であるとの
確
信
に
至
った。
Puppeteer
への
切
り
替
え
Vibium
は
モダン
で
使
いやすい
API
を
備
えているが、
「ブラウザ
への
起動引数
を
透明
に
透過
させ
る」
という、
サーバーサイド
環境
において
極
めて
重要
な
制御
が
エンジン
の
仕様上困難
であった。
もともと
Puppeteer
で
実装
していたので,そちらに
戻
すことにした.
Web
上
にはさまざまな
情
報
が
転
がっているので,
問題
があっても
対処
しやすいので.
まとめ
💡
教訓
「最新
の
ライブラリ
は
開発環境
では
素晴
らしいが、
制約
の
多
い
サーバー
環境
では、
枯
れた
技術(
Puppeteer)
の
方
が
最終的
な
手離
れが
良
い」という、
古典的
ながら
重要
な
教訓
を
得
た。