Skip to content

New in 2.7.0: Workflows. Try Pro free for 7 days.

Containly
Back to home

Switching from Portainer to Containly

Updated 10 October 2026

Containly is a self-hosted Portainer alternative for people who run Docker Compose on a few hosts. This guide shows how to try it next to your current setup, without moving or stopping anything until you have decided.

Who Containly is for

Containly is built for homelabs and small fleets: a few Docker hosts at home, a NAS, a VPS or two, usually behind a reverse proxy. It suits people who keep their services in Docker Compose files and want one place to see every host, act on what needs attention and keep images up to date.

Containly manages Docker Engine hosts. If your work centres on Kubernetes clusters, Swarm services or Podman, Containly is not built for that.

What works differently in Containly

Compose stacks stay plain files

Every stack lives in a folder on the host, in the stack paths you set per host. You can version those folders with Git, back them up and edit them without Containly, and docker compose keeps working in the same folder. Before each redeploy Containly shows a diff of what changes on disk.

Existing Compose projects show up on their own

Compose projects that were started outside Containly are found through their Compose labels and listed next to the stacks Containly created. Every other container appears in the container list as it is.

Every host, however it is reachable

The local Docker socket, TCP with TLS client certificates, SSH, or the Containly agent. The agent is a small container that dials out to Containly over WSS, so a host behind NAT needs no open Docker port, no SSH and no inbound firewall rule.

Containers and stacks move between hosts

Live migration moves a container or a whole Compose stack, with its image, volumes and networks, to another host. Pre-flight checks run first, a live log shows the progress, and Containly rolls back automatically if a step fails.

Self-update with rollback

Containly updates its own container in one click and goes back to the previous version if the new one does not start up healthy.

Free for 2 hosts, Pro once or by subscription

The free tier includes every core feature for 2 Docker hosts, with no trial and no account. Pro adds unlimited hosts, Microsoft Entra ID single sign-on and appearance presets: Pro Lifetime for CHF 189 once, Pro Annual for CHF 89/yr or Pro Monthly for CHF 15.90/mo. Licences are bought and activated in the app and keep working offline.

English and German, made in Switzerland

The interface is available in English and German. Containly is made by Pascal Amsler (Amslertec) in Spreitenbach, Switzerland.

Step by step: try Containly next to your current setup

You do not have to switch in one go. Containly talks to the Docker API, the same way the docker command does. It does not take over containers and does not need anything removed first, so it can run next to the tool you use today.

1Install Containly next to your current setup

Install Containly on one of your hosts with Docker Compose. It listens on port 8420 by default; if that port is taken, change PORT in .env and the ports: mapping in docker-compose.yml.

shell
# get the compose file and the .env template$ mkdir containly && cd containly$ REPO=https://raw.githubusercontent.com/amslertec/containly/main$ curl -fsSL $REPO/docker-compose.example.yml -o docker-compose.yml$ curl -fsSL $REPO/.env.example -o .env# pull, start, then copy the setup token from the log$ docker compose pull$ docker compose up -d$ docker compose logs -f containly

The install guide covers the setup token, the first admin and a reverse proxy.

2Point it at the same stack folders

In docker-compose.yml, mount the folder that holds your Compose projects at the same path inside the container, for example /opt/stacks:/opt/stacks, and add that folder as a stack path for the host in Containly. Stacks in that folder appear with their files, and running Compose projects are found through their labels.

If a stack’s Compose file is not in a folder on the host yet, copy its YAML into a new folder as docker-compose.yml. From then on it is an ordinary file that any tool can read.

3Add your other hosts

Add each remote host over TCP with TLS, over SSH or with the agent. For the agent, Containly shows a one-time token and a docker run or Compose snippet that you paste on the remote host. The free tier covers 2 hosts, the local one plus one more; Pro has no host limit.

4Use both for a while, then decide

Work with Containly for a few days next to your current tool and check what matters to you: the dashboard, logs, updates, CVE scans, a migration between two hosts. Containers belong to the Docker engine, not to the interface that started them, so stopping a management interface does not stop the containers it shows. If you stay with Containly, remove the old tool the same way you installed it.

Portainer is a trademark of its respective owner. Containly is not affiliated with Portainer.