Compose Aware
Containers roll up under the project that owns them, with a live
running / total count on every group header.
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.
Built for people who just want to see their stacks
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.
Containers roll up under the project that owns them, with a live
running / total count on every group header.
Flip a single container, or hit Start all / Stop all to bring an entire Compose project up or down in one move.
Open a container and watch its logs stream in real time — no
docker logs -f, no second terminal window.
The ⟳ button re-pulls the image tag and recreates the container with its exact config — name, env, volumes, networks, restart policy.
Set one API key and CI can POST to update a single container or an
entire project — bearer-token authenticated.
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.
Point DockLite at the Docker socket, give it one login, open the page. That's the whole setup.
Mount the Docker socket and set three environment variables. No extra services, no volumes for state.
Run npm run hash -- <password> and paste the
salt:hash into AUTH_PASSWORD_HASH.
docker compose up, open port 3000, and every
project on the host is right there.
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
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.
401 on a bad token)503 until you set the keyREGISTRY_AUTH_*{"ok":true}# 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" }
DockLite is built for a private network, a VPN, or behind a reverse proxy — and it's upfront about exactly that.
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.
The session cookie is httpOnly, SameSite=Lax, and
automatically Secure when NODE_ENV=production.
Every server action and API route validates the session independently —
proxy.ts is a convenience gate, not the only check.
Pull the image, mount the socket, open the page. That's DockLite.