[Middleman 3] middleman server -h オプションで LAN 内の別端末からアクセスする

LAN 内の別端末から Middleman にアクセスします。

% middleman version
Middleman 3.3.6

状況

middleman server -h オプションがあったので試してみます。

% middleman server -h 192.168.33.11
== The Middleman is loading
== LiveReload is waiting for a browser to connect
/Users/****/.rbenv/versions/2.1.1/lib/ruby/2.1.0/socket.rb:206:in `bind': Can't assign requested address - bind(2) for 192.168.33.11:4567 (Errno::EADDRNOTAVAIL)

ネットワークの設定が必要そうですが、とりあえず Mac の IP を調べて立ち上げます。

% ifconfig | grep inet

inet 192.168.33.1 だったのでこれで起動します。

% middleman server -h 192.168.33.1

これで(mac 内の)VirtualBox からも 192.168.33.11:4567 でアクセスできるようになりました。

ただし、LAN 内の別端末からサーバにアクセスはできないよう。
なにかしら設定はありそうですが 。。。
他のタスクもあるので build ディレクトリを vagrant でまかなう方向で検討する。

以下の追記を参照のこと。

Unknown switches ‘–host’ 問題

追記: 2016/01/29

--host オプションが使えなくなっていました。
Middleman 3.4.1 で確認。原因不明。

% bundle exec middleman server --host 10.0.1.7
Unknown switches '--host'

VirtualBox のホストオンリーアダプターで対応

こちらの解決は思い当たるところがなく難しそうなので、VirtualBox のネットワーク設定をまじめに確認しました。
host OS (Mac) と guest OS 間の通信がうまくいっていないようなので、ホストオンリーアダプターを追加します。

VirtualBox にてHostOSとGuestOS間に外部とは隔離されたネットワークを作成します。

2016-01-29_VirtualBox_01

設定後、VirtualBox 上の Windows Edge から Middleman server の内容を表示することができました。
また、同一 LAN に接続しているスマホからも表示を確認できました。

補遺

ポートフォワーディングの設定。