Sign inSign up

amslertec/containly

By amslertec

•Updated about 10 hours ago

A modern, secure, self-hosted Docker management web UI with file-based Compose stacks.

Image
0

10K+

amslertec/containly repository overview

⁠Containly

A modern, secure, self-hosted Docker management web UI — no vendor lock-in. Stack definitions live as version-controllable files on the filesystem, not in a database. Built for homelabs with multiple Docker hosts behind a reverse proxy.

šŸ“¦ Source & docs: https://github.com/amslertec/containly⁠

āš ļø Security-critical. Containly talks to the Docker socket — that is equivalent to root on the host. Read the security notes before you expose it.

⁠Features

  • Containers — list, inspect, start/stop/restart/pause/kill/remove, live logs, in-browser exec console, live resource stats.
  • Images / volumes / networks — full management, prune, update indicator, and CVE / vulnerability scanning (Trivy).
  • Stacks — Compose deployments as files; folder browser + editor, search, a docker run → docker-compose.yml converter, stack-wide actions.
  • Multi-host — local socket, TCP (TLS), SSH; "All hosts" view; agent-less remote stack management over the plain Docker API.
  • Live migration — move a container or a whole Compose stack (image, volumes, networks) between hosts, streamed live with automatic rollback on failure.
  • Monitoring & alerts — offline hosts, unhealthy containers, OOM, restart loops, low disk, image updates and new critical CVEs — in-app and by email.
  • Updates & self-update — registry digest + semver checks (public and private repos), one bundled email per update scan, a bulk update job with live progress, one-click self-update with automatic rollback.
  • Registry logins — connect multiple Docker Hub (or private registry) accounts; the right account is picked per image namespace, for authenticated and private pulls.
  • Scheduled tasks — hourly / per-weekday / monthly automation for update checks, vulnerability scans, backups, pruning and auto-updates.
  • Users & access control — admin / viewer roles, invite users by email, and admin-initiated password reset (emailed link, or a copyable link when SMTP is off).
  • Security — Argon2id, two-factor auth (TOTP + recovery codes), encrypted secrets at rest, CSRF, rate limiting, audit log, encrypted backup/restore.
  • Single sign-on (Pro) — Microsoft Entra ID SSO: sign in with Microsoft accounts, Entra security groups mapped to admin/read-only roles, device-code login (plain HTTP, no domain) or seamless redirect, and a scheduled background role sync.
  • Appearance presets (Pro) — curated colour & typography presets, or your own from an accent, a font and per-mode background colours; derived contrast-safe for light & dark and applied to every user on the instance.

⁠Pricing

Free for up to 2 Docker hosts (the built-in local host plus one more) — every feature included, self-hosted, no account. For unlimited hosts, Microsoft Entra ID single sign-on and appearance presets, a Pro license (Lifetime, Yearly or Monthly — the subscriptions include a 7-day free trial) is bought and activated in-app under Settings → License. See https://containly.amslertec.ch⁠.

⁠Supported tags

  • latest — the newest release.
  • X.Y.Z (e.g. 1.2.2) — pin an exact, immutable version.

Architectures: linux/amd64, linux/arm64.

⁠Quick start

mkdir containly && cd containly

# Grab the example files from the public repo:
curl -fsSL https://raw.githubusercontent.com/amslertec/containly/main/docker-compose.example.yml -o docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/amslertec/containly/main/.env.example -o .env

# Edit docker-compose.yml (volume mounts, port, CONTAINLY_SECURE_COOKIES), then:
docker compose pull
docker compose up -d
docker compose logs -f containly   # copy the one-time setup token from the logs

On first start there is no admin yet — Containly prints a one-time setup token to the logs (also in data/setup.token). Open the UI, enter the token, and create the first administrator.

Put a reverse proxy with TLS in front of Containly and bind the port locally (127.0.0.1:8420). See the repo's SECURITY.md for the full hardening guide.

Tag summary

Content type

Image

Digest

sha256:59241153e…

Size

97.9 MB

Last updated

about 10 hours ago

docker pull amslertec/containly