A lightweight Alpine-based Chrome browser container using the Selkies base image with auto-start functionality.
docker run -d \
--name=alpine-chrome \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e PASSWORD="yourpassword" \
-p 3000:3000 \
-p 3001:3001 \
-v ./chrome-config:/config \
--restart unless-stopped \
image72/alpine-chrome-selkies:amd64---
services:
alpine-chrome:
image: image72/alpine-chrome-selkies:amd64
container_name: alpine-chrome
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- PASSWORD=yourpassword
- CHROME_CLI=https://www.linuxserver.io/ #optional
volumes:
- /path/to/config:/config
ports:
- 3000:3000
- 3001:3001
shm_size: "1gb"
restart: unless-stoppedThe Dockerfile is now self-contained with all files embedded using heredocs:
# Download the self-contained Dockerfile
curl -O https://gist.githubusercontent.com/image72/329986ea5ebabc5515849f1b19db2686/raw/alpine-chrome.Dockerfile
# Build for your platform (no external files needed!)
docker build -f alpine-chrome.Dockerfile -t alpine-chrome .
# Run
docker run -d -p 3000:3000 -e PASSWORD="yourpassword" alpine-chrome- Auto-start Chrome: Chromium browser launches automatically on container start
- XFCE Desktop: Full desktop environment with file manager, terminal, etc.
- Web Access: Access via browser at
http://your-server:3000(HTTP) orhttps://your-server:3001(HTTPS) - HTTPS Support: Self-signed certificate included for secure access
- Alpine Base: Smaller image size compared to Ubuntu/Debian variants
- Password Protection: Set PASSWORD environment variable for security
- Persistent Config: Mount
/configvolume to persist settings and data
chromium- Main browserxfce4- Desktop environmentthunar- File managerxfce4-terminal- Terminal emulatormousepad- Text editorristretto- Image viewer- Plus various GTK themes and utilities
| Variable | Description | Default |
|---|---|---|
PUID |
User ID for file permissions | 1000 |
PGID |
Group ID for file permissions | 1000 |
TZ |
Timezone (e.g., America/New_York) |
Etc/UTC |
PASSWORD |
Web interface password (recommended) | abc |
CUSTOM_USER |
HTTP Basic auth username | abc |
CHROME_CLI |
Additional Chrome command line arguments | - |
| Port | Protocol | Description |
|---|---|---|
3000 |
HTTP | Web interface (HTTP) |
3001 |
HTTPS | Web interface (HTTPS) - Recommended |
| Path | Description |
|---|---|
/config |
User home directory - stores settings, bookmarks, downloads |
- HTTPS is required for full functionality - Modern browser features like WebCodecs (video/audio) require secure connections
- Access via:
https://your-server:3001 - Uses self-signed certificate by default (you'll see a security warning - click "Advanced" → "Proceed")
- Container provides privileged access to host system
- Do not expose to internet without proper security measures
- For internet access, use behind reverse proxy like SWAG
If you get platform mismatch warnings, explicitly specify the platform:
docker run --platform linux/amd64 ...For better performance on servers, consider:
- Allocating more memory:
--memory=2g - Required SHM size:
--shm-size=1gb(needed for modern websites like YouTube)
If using behind a reverse proxy that validates certificates, you may need to disable certificate validation for this container.