最初に
https://github.com/jlesage/docker-firefox を参考に進めていく。
ブラウザ経由でダウンロードしたデータをリモートサーバーにアップロードしたいとき、手元PCを経由するのが二度手間なので、リモートサーバーで直接ダウンロードしたい諸君に送る。
jlesage/docker-firefox を使って「日本語表示」かつ「ダウンロード先 = ~/docker/firefox/download」にする手順
前提
- remote-host-name は
remote-host-name
と記述します(例:ssh remote-host-name
)。- Docker は
remote-host-name
上で利用可能。- ローカルPC(Windowsなど)からブラウザはローカルで開き、SSHポートフォワーディングで
remote-host-name
上のコンテナに接続します。
1) remote-host-name
上で作業用ディレクトリを作成
ssh remote-host-name
mkdir -p ~/docker/firefox/{config,download}
2) コンテナ起動(日本語化 + ダウンロード先マウント)
既定のダウンロード先
/config/downloads
に、ホストの~/docker/firefox/download
をマウントします。
UI 言語と CJK フォントを有効化し、about:config
相当の初期値をFF_PREF_*
で設定します。
# ※ ここから先は remote-host-name にログイン済みのシェルで実行
docker rm -f firefox 2>/dev/null || true
docker run -d --name=firefox -p 5800:5800 -e TZ=Asia/Tokyo -e LANG=ja_JP.UTF-8 -e LC_ALL=ja_JP.UTF-8 -e ENABLE_CJK_FONT=1 -e INSTALL_PACKAGES="font-noto-cjk" -e FF_PREF_UI='intl.locale.requested="ja-JP"' -e FF_PREF_ACCEPT='intl.accept_languages="ja,ja-JP,en-US,en"' -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -v ~/docker/firefox/config:/config:rw -v ~/docker/firefox/download:/config/downloads:rw jlesage/firefox
3) ローカルPC → remote-host-name
へのポートフォワーディング
コンテナの Web UI(noVNC)は 5800/tcp。ローカル側を 15800 に載せ替えます。
# ローカルPCのターミナルで実行(フォワード中は開いたままにする)
ssh -N -L 127.0.0.1:15800:localhost:5800 remote-host-name
毎回
-L
を書きたくない場合:SSH設定のHost remote-host-name
節に
LocalForward 15800 localhost:5800
を1行追加し、以後はssh -N remote-host-name
だけでOK。
4) ブラウザでアクセス(ローカルPC)
http://localhost:15800/
Firefox の UI が表示されれば成功。
5) ダウンロード先の確認(remote-host-name
上)
ls -l ~/docker/firefox/download
Firefox から保存したファイルがここに見えればOK。
6) トラブルシュート(要点)
-
文字が豆腐(□)になる
ENABLE_CJK_FONT=1
とfont-noto-cjk
の導入を確認。必要ならコンテナ再作成(rm -f
→run
)。 -
日本語 UI にならない / 言語優先が効かない
FF_PREF_UI
/FF_PREF_ACCEPT
のダブルクォート崩れを確認。FF_PREF_*
は "..." が必須(文字列型)。再作成で反映。 -
保存権限エラー
USER_ID
/GROUP_ID
を付与。既存ファイルはchown -R $(id -u):$(id -g) ~/docker/firefox
で修正。 -
ポート競合
-p 5800:5800
が衝突するならホスト側だけ変える(例:-p 8580:5800
)。この場合、フォワードも127.0.0.1:15800:localhost:8580
に合わせる。
7) (任意)docker-compose で運用する最小例
version: "3.8"
services:
firefox:
image: jlesage/firefox
container_name: firefox
ports:
- "5800:5800"
environment:
TZ: Asia/Tokyo
LANG: ja_JP.UTF-8
LC_ALL: ja_JP.UTF-8
ENABLE_CJK_FONT: "1"
INSTALL_PACKAGES: "font-noto-cjk"
FF_PREF_UI: 'intl.locale.requested="ja-JP"'
FF_PREF_ACCEPT: 'intl.accept_languages="ja,ja-JP,en-US,en"'
USER_ID: "${UID:-1000}"
GROUP_ID: "${GID:-1000}"
volumes:
- ~/docker/firefox/config:/config:rw
- ~/docker/firefox/download:/config/downloads:rw
restart: unless-stopped