Skip to main content

Self-Host Dozzle: Real-Time Docker Log Viewer 2026

·OSSAlt Team
dozzledockerlogsmonitoringself-hostingdevops2026

TL;DR

Dozzle (MIT, ~6K GitHub stars, Go) is a real-time Docker log viewer with a clean web UI. Point it at your Docker socket and instantly stream, search, and filter logs from all containers — no agents, no databases, no configuration. Datadog Log Management costs $0.10/GB ingested; Dozzle is free with zero storage overhead because it reads directly from Docker's log driver.

Key Takeaways

  • Dozzle: MIT, ~6K stars, Go — real-time Docker log viewer in the browser
  • Zero config: Mount Docker socket → done — no database, no storage, no agents
  • Multi-host: Connect to remote Docker hosts to view all logs in one UI
  • Log streaming: Real-time tailing with auto-scroll, pause, and search
  • Filtering: Regex search, container name filter, log level highlighting
  • Tiny footprint: ~10MB RAM, single binary — runs anywhere Docker runs

Part 1: Docker Setup

# docker-compose.yml
services:
  dozzle:
    image: amir20/dozzle:latest
    container_name: dozzle
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      # Optional: set base path for reverse proxy:
      # DOZZLE_BASE: /logs
      
      # Optional: filter containers:
      # DOZZLE_FILTER: "status=running"
      
      # Optional: enable authentication:
      # DOZZLE_AUTH_PROVIDER: simple
docker compose up -d

Visit http://your-server:8080 — immediately see all running containers and their logs.


Part 2: HTTPS with Caddy

logs.yourdomain.com {
    reverse_proxy localhost:8080
}

Part 3: Authentication

Simple auth (username/password)

services:
  dozzle:
    image: amir20/dozzle:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./users.yml:/data/users.yml:ro
    environment:
      DOZZLE_AUTH_PROVIDER: simple
# users.yml
users:
  admin:
    name: "Admin"
    # Generate: echo -n 'password' | shasum -a 256
    password: "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
    email: admin@yourdomain.com
  viewer:
    name: "Viewer"
    password: "..."
    email: viewer@yourdomain.com
# Generate password hash:
echo -n 'your-password' | shasum -a 256 | cut -d' ' -f1

Forward auth (Authentik/Authelia)

If you're already using Authentik or Authelia:

logs.yourdomain.com {
    forward_auth authelia:9091 {
        uri /api/verify?rd=https://auth.yourdomain.com
        copy_headers Remote-User Remote-Groups
    }
    reverse_proxy dozzle:8080
}

Part 4: Multi-Host Setup

View logs from multiple Docker hosts in a single Dozzle instance.

Remote agent setup

On each remote host, deploy the Dozzle agent:

# On remote-host-1 docker-compose.yml:
services:
  dozzle-agent:
    image: amir20/dozzle:latest
    container_name: dozzle-agent
    restart: unless-stopped
    command: agent
    ports:
      - "7007:7007"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

Connect from the main Dozzle instance

# On your main server:
services:
  dozzle:
    image: amir20/dozzle:latest
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      DOZZLE_REMOTE_HOST: >-
        tcp://remote-host-1:7007|Host-1,
        tcp://remote-host-2:7007|Host-2

Now all containers from all hosts appear in the sidebar, grouped by host.


Part 5: Log Features

Real-time streaming

  • Logs auto-scroll as new entries arrive
  • Click Pause to stop auto-scroll and inspect historical entries
  • Click Resume to jump back to live tailing

Search and filter

# Type in the search bar:
ERROR                    — find error messages
"connection refused"     — exact phrase match
level=error              — structured log fields
500|502|503              — regex: any of these status codes

Log level highlighting

Dozzle automatically detects and color-codes log levels:

  • 🔴 ERROR, FATAL, PANIC
  • 🟡 WARN, WARNING
  • 🟢 INFO
  • 🔵 DEBUG, TRACE

Container grouping

Containers from docker-compose projects are automatically grouped together under the project name.


Part 6: Container Actions

Beyond just viewing logs, Dozzle shows:

  • Container info: Image, ports, volumes, environment variables, networks
  • CPU/Memory charts: Real-time resource usage per container
  • Log download: Download logs as a text file
  • Multiple containers: View logs from multiple containers side-by-side

Merged log view

Select multiple containers → Merged view to see interleaved logs from related services (e.g., web app + database + cache) in chronological order.


Part 7: Configuration Options

environment:
  # Timezone:
  TZ: America/Los_Angeles
  
  # Filter which containers are shown:
  DOZZLE_FILTER: "status=running"
  # Or by label:
  DOZZLE_FILTER: "label=logging=true"
  
  # Tail size (how many lines to load initially):
  DOZZLE_TAILSIZE: 300
  
  # Custom base path (for reverse proxy subpath):
  DOZZLE_BASE: /logs
  
  # Disable analytics:
  DOZZLE_NO_ANALYTICS: "true"
  
  # Hide specific containers:
  # Add label to container: dozzle.ignore=true

Hide containers via labels

# On containers you don't want in Dozzle:
services:
  internal-service:
    image: myimage
    labels:
      dozzle.ignore: "true"

Part 8: Docker Compose Integration

Run Dozzle alongside all your other services:

# Your existing docker-compose.yml:
services:
  webapp:
    image: myapp:latest
    labels:
      dozzle.group: "production"

  database:
    image: postgres:16
    labels:
      dozzle.group: "production"

  redis:
    image: redis:7
    labels:
      dozzle.group: "production"

  dozzle:
    image: amir20/dozzle:latest
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

Maintenance

# Update:
docker compose pull dozzle
docker compose up -d dozzle

# No backup needed — Dozzle is stateless
# It reads logs directly from Docker, stores nothing

# Check resource usage (should be minimal):
docker stats dozzle --no-stream

# Logs:
docker compose logs -f dozzle

See all open source DevOps tools at OSSAlt.com/categories/devops.

Comments