Sign inSign up

ericfg82/ghost-browse

By ericfg82

•Updated about 1 month ago

Disposable Chromium in Docker, accessible from your browser via noVNC. Built to run behind gluetun.

Image
Networking
0

461

ericfg82/ghost-browse repository overview

⁠ghost-browse

A disposable, privacy-focused Chromium browser that runs in Docker and is accessible from any web browser via noVNC. No client software, no persistent profile — the browser profile is wiped and Chromium relaunches fresh every time it closes or the container restarts.

⁠Highlights

  • Ephemeral tmpfs profile — nothing survives a session except an optional Downloads folder (and optionally Bookmarks/UI language)
  • uBlock Origin Lite, Privacy Badger, "I still don't care about cookies", and Cookie-Editor force-installed and pinned
  • Hardened Chromium policies: blocked third-party cookies, DuckDuckGo default search, WebRTC leak protection
  • Auto-resizing desktop (TigerVNC + noVNC) — the remote screen follows your browser window
  • Optional audio streaming — hear the remote Chromium's tab audio (e.g. YouTube) via a button on the noVNC page, off by default with zero overhead
  • No VPN client baked in — designed to run behind your own gluetun⁠ container

⁠Quick start

services:
  gluetun:
    image: qmcgaw/gluetun:latest
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=your_provider
      - VPN_TYPE=wireguard
      # ...the rest of your gluetun VPN configuration
    ports:
      - "6080:6080"   # noVNC — published here, not on ghost-browse
      # - "6082:6082" # only if you enable AUDIO_ENABLED below
    restart: unless-stopped

  ghost-browse:
    image: ericfg82/ghost-browse:latest
    container_name: ghost-browse
    network_mode: "service:gluetun"
    depends_on:
      - gluetun
    environment:
      # VNC_PASSWORD is optional. Left unset/blank, the container starts
      # with NO VNC authentication at all -- set a real password unless
      # you already have your own access control in front of this.
      - VNC_PASSWORD=change-me-to-a-long-random-password
      - INCOGNITO=false
      - TZ=Europe/Madrid
      # CHROME_LANG sets Chromium's UI language. Unset defaults to
      # English. Uncomment for Spanish:
      # - CHROME_LANG=es
      # ALLOW_INSECURE_DOWNLOADS=true disables Chrome's "mixed content"
      # download blocking site-wide -- only enable it against a site you
      # trust:
      # - ALLOW_INSECURE_DOWNLOADS=true
      # RESOLUTION only sets the *starting* size -- the desktop
      # auto-resizes to your browser window after that:
      # - RESOLUTION=1920x1080x24
      # VNC_LISTENING_PORT/WEB_LISTENING_PORT: only needed if this
      # collides with another VNC-based container sharing the same VPN
      # network namespace (both default to 5900/6080):
      # - VNC_LISTENING_PORT=5901
      # - WEB_LISTENING_PORT=6081
      # AUDIO_ENABLED streams the remote Chromium's audio (e.g. YouTube)
      # to a button in the noVNC page. Off by default (zero overhead).
      # Needs the "6082:6082" mapping above uncommented too if turned on:
      # - AUDIO_ENABLED=true
      # - AUDIO_LISTENING_PORT=6082
    tmpfs:
      - /tmp:size=1g,mode=1777
    volumes:
      - ./ghost-browse-downloads:/home/ghost/Downloads
      - ./ghost-browse-settings:/home/ghost/chrome-settings
    shm_size: 1gb

Open http://<host>:6080. Don't expose port 6080 to the internet directly; put it behind an authenticated HTTPS reverse proxy for remote access.

Tag summary

Content type

Image

Digest

sha256:bdcf370ee…

Size

466.9 MB

Last updated

about 1 month ago

docker pull ericfg82/ghost-browse