コンテンツにスキップ

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-x64Error: Could not find vibium binary. Set VIBIUM_BIN_PATH environment variable or install @vibium/linux-x64 これにし、エンジン別途インストールしてパスすなどの対応った結果、次以下エラーへと進展(「死闘」本格化)した。2番目にして致命的エラー: ブラウザクラッシュ[ERROR] アンケート自動実行プロセスエラー発生しました: Browser crashed with exit code 1BrowserCrashedError: 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/vibium2. Chrome依存ライブラリ不足 エンジンパスしたことで「バイナリつからない」エラーえたが、に「Browser crashed(ブラウザクラッシュ)」という抽象的エラー変化した。 この原因特定するためには、まず「OSChromeかすための最低限パーツ(共有ライブラリ)えているか」検証し、問題ける必要があった。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)最終的手離れがい」という、古典的ながら重要教訓た。