├── AptSources ├── CanonicalPartners.list └── OracleJava.list ├── configFiles ├── local-settings.js ├── profiles.ini ├── xulstore.json ├── bookmarks.json └── mozilla.cfg ├── start-firefox.sh ├── Dockerfile └── README.md /AptSources/CanonicalPartners.list: -------------------------------------------------------------------------------- 1 | deb http://archive.canonical.com/ubuntu trusty partner 2 | -------------------------------------------------------------------------------- /AptSources/OracleJava.list: -------------------------------------------------------------------------------- 1 | deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main 2 | -------------------------------------------------------------------------------- /configFiles/local-settings.js: -------------------------------------------------------------------------------- 1 | // 2 | pref("general.config.obscure_value", 0); 3 | pref("general.config.filename", "mozilla.cfg"); 4 | -------------------------------------------------------------------------------- /configFiles/profiles.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | StartWithLastProfile=1 3 | 4 | [Profile0] 5 | Name=FireFox 6 | IsRelative=0 7 | Path=/home/firefox/.mozilla/firefox 8 | Default=1 9 | -------------------------------------------------------------------------------- /configFiles/xulstore.json: -------------------------------------------------------------------------------- 1 | { 2 | "chrome://browser/content/browser.xul":{ 3 | "PersonalToolbar":{ 4 | "collapsed":"false", 5 | "currentset":"personal-bookmarks" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /start-firefox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | groupmod -g $gid firefox 3 | usermod -u $uid -g $gid firefox 4 | 5 | if [ -d /home/firefox/.mozilla ]; then 6 | chown -R firefox:firefox /home/firefox/.mozilla 7 | fi 8 | 9 | exec su -ls "/bin/bash" -c "/usr/bin/firefox -profile /home/firefox/.mozilla/firefox $ARGS $URL" firefox 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04.3 2 | 3 | MAINTAINER Chris Daish 4 | 5 | ENV DEBIAN_FRONTEND noninteractive 6 | 7 | COPY AptSources /etc/apt/sources.list.d/ 8 | 9 | ENV FIREFOXVERSION 46.0+build5-0ubuntu0.14.04.2 10 | 11 | RUN useradd -m firefox; \ 12 | echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections; \ 13 | apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886; \ 14 | apt-get update; \ 15 | apt-get install -y --no-install-recommends firefox=$FIREFOXVERSION \ 16 | dbus-x11 \ 17 | adobe-flashplugin \ 18 | libxext-dev \ 19 | libxrender-dev \ 20 | libxtst-dev \ 21 | oracle-java8-installer \ 22 | oracle-java8-set-default; \ 23 | rm -rf /var/lib/apt/lists/* 24 | 25 | COPY start-firefox.sh /tmp/ 26 | 27 | ENTRYPOINT ["/tmp/start-firefox.sh"] 28 | -------------------------------------------------------------------------------- /configFiles/bookmarks.json: -------------------------------------------------------------------------------- 1 | { 2 | "guid":"root________", 3 | "title":"", 4 | "index":0, 5 | "dateAdded":1427709460734106, 6 | "lastModified":1427709489093845, 7 | "id":1, 8 | "type":"text/x-moz-place-container", 9 | "root":"placesRoot", 10 | "children":[ 11 | { 12 | "guid":"toolbar_____", 13 | "title":"Bookmarks Toolbar", 14 | "index":1, 15 | "dateAdded":1427709460734106, 16 | "lastModified":1427710778319146, 17 | "id":3, 18 | "type":"text/x-moz-place-container", 19 | "root":"toolbarFolder", 20 | "children":[ 21 | { 22 | "guid":"7mgeaOEPld4a", 23 | "title":"Docker", 24 | "index":0, 25 | "dateAdded":1427710044010805, 26 | "lastModified":1427710058493156, 27 | "id":30, 28 | "type":"text/x-moz-place", 29 | "uri":"http://www.docker.com/" 30 | }, 31 | { 32 | "guid":"foKrG5jrgQxw", 33 | "title":"Github", 34 | "index":1, 35 | "dateAdded":1427710070953701, 36 | "lastModified":1427710078827862, 37 | "id":31, 38 | "type":"text/x-moz-place", 39 | "uri":"http://www.github.com/" 40 | }, 41 | { 42 | "guid":"0fLBmCgYyQNa", 43 | "title":"Folder of bookmarks", 44 | "index":16, 45 | "dateAdded":1427709841267262, 46 | "lastModified":1427710683381361, 47 | "id":100, 48 | "type":"text/x-moz-place-container", 49 | "children":[ 50 | { 51 | "guid":"8iyNBVC6QBXm", 52 | "title":"Docker", 53 | "index":0, 54 | "dateAdded":1427710574720861, 55 | "lastModified":1427710591513367, 56 | "id":101, 57 | "type":"text/x-moz-place", 58 | "uri":"http://www.docker.com/" 59 | }, 60 | { 61 | "guid":"gnwyDLcKPC-n", 62 | "title":"Github", 63 | "index":1, 64 | "dateAdded":1427710604928136, 65 | "lastModified":1427710612561860, 66 | "id":102, 67 | "type":"text/x-moz-place", 68 | "uri":"http://www.github.com/" 69 | } 70 | ] 71 | } 72 | ] 73 | } 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Firefox 2 | ======= 3 | 4 | Unofficial build of Firefox 46 running within a docker container and rendered by the local X Server. 5 | 6 | Changelog 7 | --------- 8 | ``` 9 | v2.0 10 | * Version bumped to 46 11 | 12 | v1.9 13 | * Version bumped to 43 14 | 15 | v1.8 16 | * Version bumped to 42. 17 | 18 | v1.7 19 | * Version bumped to 41. 20 | 21 | v1.6 22 | * Optional environment variables 'ARGS' and 'URL' can now be passed into the container. For example: -e ARGS=-jsconsole -e URL=http://www.docker.com 23 | 24 | v1.5 25 | * Firefox 36 upgraded to 37. 26 | 27 | v1.4 28 | * Automatic bookmark population by host mounting additional config. 29 | I have included the sample config in my [GitHub](https://github.com/chrisdaish/docker-firefox/tree/master/configFiles). 30 | 31 | v1.3 32 | * Added (Oracle) Java support. 33 | * Additional configuration files can now be mounted inside the container (see example below). 34 | 35 | v1.2 36 | * Added audio passthrough, however this requires the --privileged argument to be set. This should be used with caution. 37 | 38 | v1.1 39 | * Added (Adobe) Flash support. 40 | 41 | v1.0 42 | * User permissions now correlate between host and container. This allows Firefox downloads to be saved back to the host system by passing in the local users uid/gid as environment variables. 43 | ``` 44 | 45 | Launch Command 46 | --------------- 47 | ``` 48 | docker run -v $HOME/Downloads:/home/firefox/Downloads:rw -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/snd:/dev/snd --privileged -e uid=$(id -u) -e gid=$(id -g) -e DISPLAY=unix$DISPLAY --name firefox chrisdaish/firefox 49 | ``` 50 | Additional config example: 51 | 52 | ``` 53 | docker run -v $HOME//xulstore.json:/home/firefox/.mozilla/firefox/xulstore.json:ro \ 54 | -v $HOME//bookmarks.json:/home/firefox/.mozilla/firefox/bookmarkbackups/bookmarks-2015-03-30.json:ro \ 55 | -v $HOME//mozilla.cfg:/usr/lib/firefox/mozilla.cfg:ro \ 56 | -v $HOME//local-settings.js:/usr/lib/firefox/defaults/pref/local-settings.js:ro \ 57 | -v $HOME/Downloads:/home/firefox/Downloads:rw \ 58 | -v /tmp/.X11-unix:/tmp/.X11-unix \ 59 | -v /dev/snd:/dev/snd \ 60 | -e uid=$(id -u) \ 61 | -e gid=$(id -g) \ 62 | -e DISPLAY=unix$DISPLAY \ 63 | -e URL=http://www.docker.com \ 64 | --privileged \ 65 | --name firefox \ 66 | chrisdaish/firefox 67 | ``` 68 | 69 | FAQ 70 | --- 71 | Note: If you receive the following Gtk error: 72 | 73 | ``` 74 | Gtk-WARNING **: cannot open display: unix:0.0 75 | ``` 76 | Simply allow the docker user to communicate with your X session 77 | 78 | ``` 79 | xhost +local:docker 80 | ``` 81 | -------------------------------------------------------------------------------- /configFiles/mozilla.cfg: -------------------------------------------------------------------------------- 1 | // 2 | pref("app.update.autoUpdateEnabled", false); 3 | pref("app.update.enabled", false); 4 | pref("app.update.lastUpdateTime.addon-background-update-timer", 1234860164); 5 | pref("app.update.lastUpdateTime.background-update-timer", 1234860161); 6 | pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1234860164); 7 | pref("app.update.lastUpdateTime.search-engine-update-timer", 1234860164); 8 | pref("app.update.showInstalledUI", false); 9 | pref("browser.bookmarks.restore_default_bookmarks", false); 10 | pref("browser.cache.disk.capacity", 0); 11 | pref("browser.cache.check_doc_frequency", 1); 12 | pref("browser.download.manager.closeWhenDone", true); 13 | pref("browser.download.manager.retention", 0); 14 | pref("browser.formfill.enable", false); 15 | pref("browser.history_expire_days", 0); 16 | pref("browser.history_expire_days.mirror", 0); 17 | pref("browser.startup.homepage_override.mstone", "ignore"); 18 | pref("browser.link.open_external", 2); 19 | pref("browser.link.open_newwindow", 2); 20 | pref("browser.preferences.advanced.selectedTabIndex", 0); 21 | pref("browser.rights.3.shown", true); 22 | pref("browser.safebrowsing.enabled", false); 23 | pref("browser.safebrowsing.remoteLookups", false); 24 | pref("browser.search.update", false); 25 | pref("browser.shell.checkDefaultBrowser", false); 26 | pref("browser.startup.homepage", "http://www.docker.com"); 27 | pref("datareporting.healthreport.uploadEnabled", false); 28 | pref("datareporting.healthreport.service.enabled",false); 29 | pref("distribution.canonical.bookmarksProcessed", false); 30 | pref("extensions.update.autoUpdate", false); 31 | pref("extensions.update.enabled", false); 32 | pref("intl.accept_languages", "en"); 33 | pref("intl.charsetmenu.browser.cache", "ISO-8859-1, UTF-8"); 34 | pref("layout.spellcheckDefault", 0); 35 | pref("network.cookie.prefsMigrated", true); 36 | pref("pref.browser.language.disable_button.remove", false); 37 | pref("pref.general.disable_button.default_browser", false); 38 | pref("print.postscript.paper_size", "\"A4\""); 39 | pref("privacy.sanitize.didShutdownSanitize", true); 40 | pref("privacy.sanitize.promptOnSanitize", false); 41 | pref("privacy.sanitize.sanitizeOnShutdown", true); 42 | pref("security.warn_entering_secure", false); 43 | pref("security.warn_entering_secure.show_once", false); 44 | pref("security.warn_entering_weak", false); 45 | pref("security.warn_entering_weak.show_once", false); 46 | pref("security.warn_leaving_secure", false); 47 | pref("security.warn_leaving_secure.show_once", false); 48 | pref("security.warn_submit_insecure", false); 49 | pref("security.warn_submit_insecure.show_once", false); 50 | pref("security.warn_viewing_mixed", false); 51 | pref("security.warn_viewing_mixed.show_once", false); 52 | pref("signon.rememberSignons", false); 53 | pref("startup.homepage_override_url", ""); 54 | pref("startup.homepage_welcome_url", ""); 55 | pref("toolkit.crashreporter.enabled", false); 56 | pref("toolkit.telemetry.prompted", false); 57 | pref("toolkit.telemetry.rejected", true); 58 | pref("xpinstall.whitelist.add", ""); 59 | pref("xpinstall.whitelist.add.103", ""); 60 | --------------------------------------------------------------------------------