Logs, alerts, and control for every container you run
One free binary for Docker and Podman. Keeps your logs, tells you once when it breaks, lets you fix it.
Open source, self-hosted, no cloud tier. Keep your deploy tool.
Containers
0 containers on this host · unknown
| Container | Status | Actions | ||||
|---|---|---|---|---|---|---|
Loading containers… | ||||||
No containers · page 1 of 1
Live demo. Click anything.
Works with what you already run.
- Docker
- Podman
- Docker Compose
- podman-compose
- SSH hosts
- Coolify
- ntfy
- Gotify
- Telegram
- Slack
- Discord
- Claude
- Cursor
- Any MCP client
For everything after docker compose up -d
Dozzle for logs, Uptime Kuma for pings, ntfy glued on, a Grafana stack nobody finished. LogDeck does the three jobs that matter in one binary. Keep your deploy tool.
- Watch
- Live tail and stored history for every container on every host, stats beside it.
- Get told
- Died, OOM-killed, unhealthy, or logging errors. One alert to ntfy, Telegram, or a webhook.
- Fix
- Raise a limit, edit env, restart the stack, open a shell. Browser, CLI, or your AI agent.
Logs that outlive the container
Every container’s logs are stored on LogDeck’s own disk. Restart, rebuild, or remove it and the history is still there, searchable by regex, level, and time.
One alert, not two hundred
Rules for deaths, OOM kills, health checks, and log patterns. Rate windows and cooldowns turn a crash loop into one message to ntfy, Gotify, Telegram, or a webhook.
Fix it from the same screen
Raise a memory limit live, edit env vars, restart a Compose stack, or open a shell in the container. No SSH into the host.
Ask your agent what broke at 3am
Point Claude, Cursor, or any MCP client at LogDeck and ask what happened overnight. It can search history and pull stats, or act too with an admin token.
Up and running in a minute
One container for the server, one command for the CLI, one JSON block for your agent. Mount a volume or lose the history on recreate.
services:
logdeck:
image: amoabakelvin/logdeck:latest
ports:
- "8123:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /proc:/host/proc:ro
- logdeck-data:/data # config, log history, alert history
environment:
# DOCKER_HOSTS: local=unix:///var/run/docker.sock,prod=ssh://deploy@prod.example.com
# ADMIN_USERNAME: admin
# ADMIN_PASSWORD: your-bcrypt-hash
# JWT_SECRET: your-super-secret-key-min-32-chars
restart: unless-stopped
volumes:
logdeck-data:
# then: docker compose up -d → http://localhost:8123- Not a deploy tool
- Keep Dockge, Komodo, or plain Compose for shipping. LogDeck picks up after up -d.
- One admin login
- No multi-user or SSO. Hand out read or admin tokens to scripts, agents, and teammates.
- Logs live on this disk
- Stored on the LogDeck host, capped by the retention you set. Health badges are Docker-only.
Auth, more hosts, retention caps? See the configuration guide.
Everything else, no extra containers
One Go binary with the frontend embedded. No database to run, no agents on your hosts, no cloud tier.
Multi-host, no agents
Local sockets, TCP, or SSH with key auth. One list, nothing to install remotely.
Docker and Podman, mixed
Auto-detects Docker and rootless or rootful Podman. Mix both in one setup.
Live tail that keeps up
WebSocket tail with pause, timestamps, collapsible JSON, and line pinning.
Stats without a metrics stack
CPU and memory per container with sparklines, plus engine and host stats.
A CLI on the same API
grep every host, follow a service, restart a stack. JSON on every command.
A shell in the browser
Open a terminal in any running container, or run one command and get the exit code.
Scoped tokens, read-only mode
Admin and read tokens, plus a read-only switch for the instance everyone can see.
Images, volumes, networks
Read-only views of everything else on every host, in one filterable list.
How it compares to Dozzle
Dozzle is the live log viewer most people try first. Here’s where LogDeck differs, and where it doesn’t.
| Feature | LogDeck | Dozzle |
|---|---|---|
| Stored log history | On disk, searchable, survives rebuild and removal | None: live only, history via Dozzle Cloud |
| Search | Regex, level, and time range on the server, across history | Regex on the live view, SQL over JSON logs in the browser |
| Alerts | Event and log rules, rate windows, cooldowns, delivery history | Event, log, and metric rules with an expression language |
| Alert channels | Webhook (Slack and Discord as-is), ntfy, Gotify, Telegram | Webhook, Slack, Discord, ntfy; Telegram and email via Cloud |
| Edit env vars and resource limits | Yes, with .env import and Coolify sync | No |
| Compose stacks | Start, stop, restart a whole stack; merged logs | Merged group logs |
| Multi-host | Local, TCP, or SSH; no agents | TCP, or an agent container on each host |
| Web terminal | Yes | Yes |
| Split-screen log view | No | Yes |
| Swarm and Kubernetes | No | Yes |
| CLI and MCP | logdeck CLI on the server API; MCP with read and action tools | No API CLI; read-only MCP |
| Users and auth | Single admin, scoped API tokens, read-only mode | Multiple users, OIDC, forward proxy, per-user roles |
| Hosted tier | None | Dozzle Cloud (paid tiers) |
| License | GPL-3.0 | MIT |
Checked against the Dozzle v11 docs, September 2026. Spot something stale? Open an issue.
Your logs, your disk, your call.
Free, open source, one binary. Runs next to your containers on Docker or Podman.