Deployment guide

How to Self-Host Dozzle on a VPS: Real-Time Docker Log Viewer

Deploy on a VPS Cloud →

Self-hosting4 min read

How to Self-Host Dozzle on a VPS: Real-Time Docker Log Viewer

Every developer has been there: something breaks in production, you SSH into the server, find the right container name, and run `docker logs -f` — only to scroll through thousands of lines trying to spot the error. Dozzle (MIT, ~12k stars) eliminates that workflow. It is a lightweight Go binary that connects to the Docker socket read-only and streams every container's logs into a clean browser UI with live search. Here is how to deploy it on a VPS in minutes.

Why a browser-based Docker log viewer

The standard Docker CLI workflow — docker ps, then docker logs -f <container> — is fine for one container on one server. It breaks down the moment you run several containers, need to correlate logs across services, or want to give a teammate read-only visibility without an SSH key. Dozzle solves all three: a single browser tab shows every container on the host, you click to tail any of them, and real-time search filters the stream without leaving the page. Because Dozzle only reads the Docker socket and never writes to disk, there is nothing to maintain, no database to back up, and no storage cost.

What Dozzle gives you

  • Live log streaming via WebSocket — no polling, no delay, instant tail of any container.
  • Full-text search and regex filtering directly in the log stream, per container.
  • Multi-container split view — pin several containers side-by-side to correlate events in real time.
  • Read-only Docker socket access — Dozzle cannot start, stop or modify any container.
  • Under 10 MB RAM at idle — negligible overhead, safe to add to any running VPS.
  • Optional multi-host agent mode — one Dozzle hub aggregates logs from several Docker hosts.
  • Built-in basic auth and OIDC support to restrict access to authorised users.

Requirements

A VPS with Ubuntu 22.04 (or Debian 12) and Docker already installed. Dozzle needs under 10 MB RAM and no disk space — it is completely stateless. No domain name is strictly required: Dozzle is accessible on port 8080 via your server's IP. If you want HTTPS and a custom subdomain (logs.yourdomain.com), place a Caddy or Nginx reverse proxy in front.

Deploy Dozzle on your VPS

01

Pull and start Dozzle

Connect via SSH and run a single Docker command: docker run -d --restart=always -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock:ro --name dozzle amir20/dozzle:latest. The :ro flag mounts the socket read-only — Dozzle can only read logs, not control containers. The image is about 20 MB on first pull. Dozzle starts immediately with no initial configuration.

02

Open the log console

Navigate to http://<your-server-ip>:8080. The left sidebar lists every running container by name. Click any container to start tailing its logs live. Use the search bar at the top to filter by keyword or paste a regex for advanced filtering.

03

Enable authentication

By default, Dozzle is open to anyone who can reach port 8080. Add basic auth by passing environment variables: --env DOZZLE_USERNAME=admin --env DOZZLE_PASSWORD=<strong-password>. For team deployments, configure OIDC by creating a dozzle.yml config file and mounting it at /data/config.yaml inside the container. At minimum, restrict port 8080 to your IP: ufw allow from <your-ip> to any port 8080.

04

Optional: HTTPS with Caddy

To serve Dozzle over HTTPS at logs.yourdomain.com, install Caddy (apt install caddy) and create /etc/caddy/Caddyfile with: logs.yourdomain.com { reverse_proxy localhost:8080 }. Run systemctl reload caddy and Caddy automatically issues a Let's Encrypt certificate. Point the DNS A record for logs.yourdomain.com at your VPS IP first.

05

Optional: multi-host agents

To monitor containers on multiple servers, run Dozzle in agent mode on each remote host: docker run -d --restart=always -p 7007:7007 -v /var/run/docker.sock:/var/run/docker.sock:ro --name dozzle-agent amir20/dozzle:latest agent. On your main Dozzle instance, add --env DOZZLE_REMOTE_AGENT=<agent-ip>:7007 for each remote. All hosts then appear as separate nodes in the left sidebar.

06

Logging in for the first time

Dozzle opens straight onto the logs of your containers, with no credentials at all. Treat this address as confidential and protect it before sharing it.

Pair Dozzle with Beszel for complete container visibility

Dozzle shows you *what* a container is printing. Beszel shows you *how much* CPU, RAM and disk it is consuming, with historical charts and alerts. Deploy both on the same VPS — Dozzle for live log debugging, Beszel for resource trend monitoring — and you have a complete, self-hosted container observability stack under 60 MB RAM total.

Deploy Dozzle on your VPS in one click

Stop SSH-ing into servers to tail container logs. ServOrbit provisions a ready-to-use Dozzle instance on a VPS — Docker socket pre-wired, accessible from your browser in minutes.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.