Single Container - Zero Dependencies

Your Docker containers,
managed from one
beautiful page.

DockLite is a lightweight, Docker-Desktop-style web GUI. See every container grouped by Compose project, start or stop whole stacks, tail live logs, and update images with one click — all talking to Docker through the socket alone.

Get Started

Built for people who just want to see their stacks

Compose-aware Socket-only httpOnly sessions Live logs CI webhooks
Features

Everything Docker Desktop does
that you actually reach for.

No agents, no daemons beyond Docker itself. DockLite reads and drives the Docker socket and renders it into a page you'll actually enjoy using.

Compose Aware

Containers roll up under the project that owns them, with a live running / total count on every group header.

Stack Control

Flip a single container, or hit Start all / Stop all to bring an entire Compose project up or down in one move.

Live Logs

Open a container and watch its logs stream in real time — no docker logs -f, no second terminal window.

One-Click Update

The button re-pulls the image tag and recreates the container with its exact config — name, env, volumes, networks, restart policy.

CI Ready

Set one API key and CI can POST to update a single container or an entire project — bearer-token authenticated.

Self Contained

No external services, no sidecars — just one container talking to the Docker socket. The single admin login is a scrypt hash in an env var, no user store to run.

docklite.local
DockLite dashboard showing containers grouped by Compose project with running and exited status pills, live counts, and per-container actions
How it works

Running in about a minute.

Point DockLite at the Docker socket, give it one login, open the page. That's the whole setup.

  1. 01

    Drop in a compose file

    Mount the Docker socket and set three environment variables. No extra services, no volumes for state.

  2. 02

    Hash your password

    Run npm run hash -- <password> and paste the salt:hash into AUTH_PASSWORD_HASH.

  3. 03

    Bring it up

    docker compose up, open port 3000, and every project on the host is right there.

docker-compose.yml
services:
  docklite:
    image: a2coder/docklite:latest
    ports:
      - "3000:3000"
    environment:
      AUTH_USERNAME: ${AUTH_USERNAME}
      AUTH_PASSWORD_HASH: ${AUTH_PASSWORD_HASH}
      SESSION_SECRET: ${SESSION_SECRET}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped
CI Webhook

Ship, then let CI
pull the new image.

Set WEBHOOK_API_KEY to unlock two authenticated POST endpoints. Your pipeline triggers the exact same recreate-with-new-image that the button does — per container or per whole project.

  • Bearer-token authenticated (401 on a bad token)
  • Disabled & returns 503 until you set the key
  • Private registries via REGISTRY_AUTH_*
  • Clean JSON responses: {"ok":true}
deploy.sh
# update every container in a project
curl -fsSL -X POST \
  -H "Authorization: Bearer $WEBHOOK_API_KEY" \
  https://docklite.example.com/api/webhook/project/my-project

{ "ok": true, "updated": 3, "project": "my-project" }
Security posture

Small surface, honest defaults.

DockLite is built for a private network, a VPN, or behind a reverse proxy — and it's upfront about exactly that.

Not for the open internet

There's no login rate-limiting or lockout by design. Keep it behind your own access controls — never expose it directly to the public internet.

Hardened session cookies

The session cookie is httpOnly, SameSite=Lax, and automatically Secure when NODE_ENV=production.

Auth re-checked everywhere

Every server action and API route validates the session independently — proxy.ts is a convenience gate, not the only check.

Lightweight. Simple.
Containers.

Pull the image, mount the socket, open the page. That's DockLite.

Read the quickstart