Docker management for the discerning individual.
Compoza's thoughtfully designed interface has just the features you need to easily do everything docker on your server.
| Manage | Do |
|---|---|
|
|
# docker-compose.yaml
services:
compoza:
image: ghcr.io/lyallcooper/compoza:latest
container_name: compoza
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /path/to/your/projects:/path/to/your/projects
environment:
- PROJECTS_DIR=/path/to/your/projects
restart: unless-stoppeddocker compose up -d
# Open http://localhost:3000PROJECTS_DIR should point to a directory containing your Docker Compose projects (each in its own subdirectory with a compose.yaml or docker-compose.yaml). The volume mount path must match PROJECTS_DIR so compose file paths resolve correctly unless you are using the path mapping feature via setting HOST_PROJECTS_DIR (see below).
Compoza has no built-in authentication. Any client that can reach the application has full access to manage your Docker environment.
You must restrict access to compoza by deploying it behind an authentication service (e.g. tinyauth, Cloudflare Access, Authelia) or by restricting network access to trusted clients only (e.g. VPN, tailscale).
Caution
Never expose compoza directly to the internet without authentication.
For additional security, consider using a Docker socket proxy to limit Docker API access instead of the raw docker socket. For full feature support, the required permissions are: CONTAINERS, IMAGES, NETWORKS, VOLUMES, INFO, DISTRIBUTION, POST, DELETE, EXEC, BUILD.
All configuration is via environment variables:
| Variable | Description | Default |
|---|---|---|
PROJECTS_DIR |
Path to projects inside the container | /home/user/docker |
DOCKER_HOST |
Docker socket or TCP endpoint | /var/run/docker.sock |
PORT |
Port to listen on | 3000 |
Compoza queries container registries to check for image updates. For best performance we recommend providing Docker Hub and GitHub credentials. Without authentication, Docker Hub limits requests to 100 per 6 hours per IP and GitHub restricts access to some APIs. To authenticate:
| Variable | Description |
|---|---|
DOCKERHUB_USERNAME |
Docker Hub username |
DOCKERHUB_TOKEN |
Docker Hub access token |
GHCR_TOKEN |
GitHub classic PAT with read:packages scope |
Authenticated Docker Hub users get 200 requests per 6 hours. GHCR has no rate limits for authenticated users.
| Variable | Description | Default |
|---|---|---|
HOST_PROJECTS_DIR |
Path to projects on the Docker host (see below) | Same as PROJECTS_DIR |
While not needed in most cases, it's possible to change the projects directory path mapping via setting HOST_PROJECTS_DIR. PROJECTS_DIR controls where compoza looks inside its own container for compose files and HOST_PROJECTS_DIR controls the path that is sent to the host docker daemon with commands.
By default, HOST_PROJECTS_DIR is set to equal PROJECTS_DIR, so it's not necessary to specify a value unless you need to enable path mapping.
environment:
- HOST_PROJECTS_DIR=/home/user/docker
- PROJECTS_DIR=/projects
volumes:
- /home/user/docker:/projectsTo manage a remote Docker host, mount or access the projects directory from the remote machine and set HOST_PROJECTS_DIR to the path on the remote host:
PROJECTS_DIR=/mnt/server/docker
HOST_PROJECTS_DIR=/home/user/docker
DOCKER_HOST=tcp://your-server:2375| Shortcut | Action |
|---|---|
/ |
Focus search |
? |
Show keyboard shortcuts |
g h |
Go to Dashboard |
g p |
Go to Projects |
g c |
Go to Containers |
g i |
Go to Images |
g n |
Go to Networks |
g v |
Go to Volumes |
g s |
Go to System |
Esc |
Close modal |
Cmd/Ctrl + S |
Save (in editor) |
pnpm install
pnpm dev # Serves at http://localhost:3000Set PROJECTS_DIR in a .env/.env.local file or your environment to point at a directory of Docker Compose projects.
AI tools are used as part of the compoza development process. Nonetheless, we hold ourselves and the project to a high standard. We strive to ensure that every feature is well tested, every design choice well considered, and every pixel well placed. Our goal is to use AI tools where appropriate to achieve a previously unreasonable level of quality and polish. Constructive feedback is always welcome.