以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

DockerでTor Browserを動かしてみる何か

f:id:abyssluke:20160316193055p:plain:w200:leftTor Browserのα版にはセキュリティを向上したhardened版もあるが、専用のメモリ領域を多く(4Gくらい)確保するため環境によってはスワップしまくりでヤバイのでDockerで環境を隔離して動かす方法をやってみるなどしたのは秘密。長いので続きを読むから。

目次

Dockerfileを勝手に弄った

dockerfiles/tor-browser/alpha at master · jfrazelle/dockerfiles · GitHub
Docker Hubから探したところ普通に発見したが英語版をダウンロードするものだったので、Dockerfileをパクってきて日本語版をダウンロードするようにしてみた。gitには一部forkする方法もあるにはあるがめんどいのでgistに上げた。
ちなみにTOR_LANGのところを変えると違う言語のバージョンを動かすことができる。

tor-browser(Alpha/ja) Dockerfile, forked from http ...

使ってみる

build

適当なディレクトリにDockerfileとlocal.confを持ってきてビルドする。そこそこ時間が掛かる。

$ docker build -t tor-browser-alpha .
buildのその後に

buildしたらすぐrunしたいところだが、魔法の呪文 xauthなんちゃらを唱えて専用のXauthority(認証ファイル)を作ってからrunする。この魔法の呪文 xauthなんちゃらを唱えないと起動しない*1。呪文の有効期限は多分次の再起動またはログインまで。

$ xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker.xauth nmerge -
xauth:  file /tmp/.docker.xauth does not exist #←このエラーは無視してもOK
runする

run時は-vオプションでホストの/tmp/.X11-unix*2とxauthなんちゃらで生成された/tmp/.docker.xauthをコンテナ側にマウントし、同時に-eオプションで出力先ディスプレイとXauthorityの場所の指定をする。これによりホスト側にコンテナ内のアプリのウインドウが表示される。
/dev/sndへのマウントは音を鳴らす必要がなければ外してもいい。というかTor Browser使ってて音鳴らす場面ってあるの?一応音鳴らすためのライブラリは入れてるみたいだけど鳴るかどうかもわからないし

$ docker run --rm -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth -v /dev/snd:/dev/snd -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=$DISPLAY tor-browser-alpha

しばらくすると開始画面が表示されるのでTorネットワークに接続すればブラウザが起動する。

ちなみに

xauthなんちゃらはxhost +でも代用可能(この場合/tmp/.docker.xauth絡みの部分は不要)だが、アクセス制御機能を解除するのでセキュリティ上あまりおすすめできないらしい。

起動後について

・「runする」の例では終了するとコンテナごと破棄するようにしている(--rm)がこれは好みで。
・コンテナ上でのTor Browserは日本語入力できないのでIgoIMEを使う*3かホスト側で文字変換してコピーアンドペーストすべし(クリップボードは共用できる模様)。

*1:そのままだとdocker logsを見てもエラーメッセージは出ていないが、DockerfileのCMD内に ,”-v”を付けてbuild→runするとlogsにディスプレイ :0が開けない旨のエラーを吐いているはず

*2:ホストのXサーバーに繋がるUnixドメインソケットがある

*3:ChasenのAjaxIMEは挙動がおかしいし、サーバーでの変換なのでローカル変換のIgoIMEを推奨