Book a call
Tool in production

Portainer

Container management in the browser. Stack editor, log stream, volume browser, multi-endpoint — the UI layer on top of that lets an SMB run a container stack without CLI expertise.

Project profile

Portainer

Container management UI for Docker, Swarm and Kubernetes

As of: June 1, 2026

GitHub stars

38k

Forks

2.8k

Open issues

744

License

Zlib (CE)

Latest version

v2.39.2

Language

TypeScript

First release
May 19, 2016
Last commit
May 31, 2026

Third-party source · Wikidata (CC0)

Wikidata profile

Portainer

Q64825554

License

Zlib (CE)

What is Portainer?

is a web UI for , Swarm and Kubernetes. Instead of typing commands in the shell, you click in the browser: container overview, stack editor, log tab, volume browser, container console. The experience feels like a hosting panel.

The Community Edition (CE) is licensed under Zlib — a very permissive OSI open-source license. Alongside that there is a commercial Business Edition for setups with 5+ nodes or strict requirements (, AD, ). For an SMB with one server, CE is fully sufficient.

Why an SMB uses Portainer

The engine is powerful, but you have to know the commands: ps, logs, exec, volume ls, compose pull, network inspect. People who only operate containers — without developing them — do not want to that vocabulary every day.

translates all of it into clicks and lists. A crashing container is red on the dashboard, the log tab streams live, the volume browser shows files, the console opens a shell inside the container. Nobody needs SSH, nobody needs to memorise vocabulary — operations become accessible.

Client case study

Marketing studio Schmidt & Bertram

Four people, one UGREEN NAS (dxp4800) in the office, 12 containers for internal tools (files, Notion clone, image archive, engine, status board, Vaultwarden, backup routines). Nobody on the team can or wants to use the CLI. is what makes this constellation operable in the first place.

12 containers visually instead of SSH

All containers at a glance — status, RAM, CPU, uptime. People who do not type ps every day should see without CLI whether everything is green today.

Stack editor in the browser

Read and change compose.yml without nano/vim on the server. Versioning of stacks, editing with syntax highlighting, validation before deploy.

Logs without journalctl

When a container falls over: open the log tab, follow live, scroll through history, filter by keyword. No SSH, no tail -f knowledge required.

Volume browser

Where exactly is the Nextcloud container's backup archive? Open the volume, click through the file tree, see contents, download a file — without ssh + ls -la.

Dashboard overview

One screen shows: running stacks, failed containers, volume disk usage, pending image updates. A 30-second daily check instead of weekend drama.

Container console

Click into a running container, open a shell, check a file or fire a command — like exec -it, just without having to exec.

What the team actually does

Eight typical click paths from the marketing studio's everyday. Each replaces a sequence of shell commands — that the team previously either did not know or did not enjoy running.

Dashboard — daily check

Morning at .firm.com — one page shows: 12 green containers, no crashed stack, volume usage 47 %. If everything is green: tab closed, day starts. If red: one click on the container, open logs.

Stack update via the editor

BookStack is to be bumped from v25.05 to v25.06. Stack 'wiki' → Edit → change image line → Update Stack. pulls the image, restarts, the stack is on the new version in 40 seconds. Rollback equally easy.

Logs of a crashing container

Vaultwarden is red. Open container → log tab. Live stream shows: 'sqlite database locked'. Volume browser shows a 1.9 GB database file. Backup restore via the container console, recovery in 5 minutes.

Volume browser

Question: where is the backup file created tonight? Volumes → backup_data → Browse. File list with timestamps, click file → download or delete. No SSH access required.

Image pull with tag selection

Test a new image for without opening a Compose file. Images → Pull → 'n8nio/:2.23.0-rc.1'. Image lands locally, can be assigned via the stack editor — cleanly separated from production.

Container shell without SSH

BookStack needs a one-off 'php artisan cache:clear'. Container → Console → connect shell, fire command, close tab. No SSH login on the NAS host, no extra permissions for the team.

Network inspection

Why can't Mailcow talk to the external database? Networks → mailcow-net → show container list. Visible: redis and postfix are on the network, db is NOT — configuration error spotted in 30 seconds.

Multi-endpoint (NAS + Mac Studio)

The studio has a second container host (a Mac Studio with Orbstack). can manage both endpoints in parallel — UI stays the same, click on endpoint, the other stack appears. Clean separation, unified operation.

Core capabilities of Portainer CE

What the Community Edition delivers — and which capabilities really carry an SMB setup.

Dashboard with real-time stats

CPU, RAM, network traffic per container in real time. Global overview per endpoint — sortable by usage, status, stack affiliation. Replaces stats and htop in one.

Stack editor with validation

compose.yml directly in the browser, with syntax highlighting, YAML validation and versioning. Update prepared locally, click Deploy — runs compose up -d under the hood.

Log streaming + filter

Live log stream per container, filter by keyword, line, time window. Logs from multiple containers at once for stack debugging. Export as text file for ticket attachments.

Volume browser

Contents of every volume as a file tree, with download and delete actions. Important for inspection without server access, for reviews and backup verification.

Container console

Browser-based shell into a running container — bash, sh, ash depending on the image. Full tty, with copy-paste, history, resize. Replaces exec -it without CLI knowledge.

Multi-endpoint management

Several hosts in one UI: production server, backup machine, NAS, local developer VM. Endpoints are connected by token, access is role-based (basic roles in CE, fine-grained in BE).

Honest alternatives

If Portainer is not a fit — what else?

Three alternatives with different depth. is the most mature standard tool — the others are interesting specialists.

Compose specialist

Dockge

Louislam (Uptime Kuma maintainer), MIT

  • + Very focused on Compose stacks
  • + Minimalist UI, fast onboarding
  • − No volume browser, no console
  • − No multi-endpoint support

Lightweight

Yacht

selfhostedpro, MIT

  • + Template-based container installation
  • + Very lightweight, low RAM footprint
  • − Active development quiet since 2023
  • − Feature set noticeably smaller than Portainer

TUI (terminal UI)

Lazydocker

Jesse Duffield, MIT

  • + Fast keyboard navigation
  • + No browser, no ports, runs over SSH
  • − Only local per host, no multi-endpoint
  • − Not usable by non-technical staff

Rule of thumb: anyone who only operates Compose stacks and wants a minimal UI is up faster on Dockge. Anyone who stays CLI-affine and just wants a cockpit on their notebook picks Lazydocker. Anyone who needs multi-host, stack editor, logs and volume browser under one roof stays on .

Pricing

Zlib for CE. Asterisks on the Business Edition.

License

Portainer CE (Community Edition): Zlib license, very permissive OSI open source. Fully free, all core functions, unlimited containers and stacks. Business Edition (BE): commercial, from 5 nodes around 150 €/year/node, adds RBAC, AD/OAuth auth and audit log.

Running costs

One extra container on the existing Docker host. RAM footprint around 100–200 MB. No license fees, no external service required. Updates via docker compose pull, an image tag reset and stack restart.

Effort

Installation: 10 minutes (start container, set admin password). Team onboarding: 30–60 minutes per person. SMB setup with multi-endpoint, reverse-proxy hook-up and backup strategy: 1 consulting day.

Unlike Desktop, the Business variant is a standalone software edition, not a license threshold inside CE. People who do not pay do not lose features — BE adds extra modules on top. For SMBs with one or two servers CE is the permanent default.

Caddy block for Portainer behind HTTPS

portainer.firm.com {
  reverse_proxy https://portainer:9443 {
    transport http {
      tls_insecure_skip_verify
    }
  }
  encode gzip zstd
}
Portainer runs internally on port 9443 (with a self-signed cert). Caddy terminates the real HTTPS and proxies through — clean URL portainer.firm.com, valid certificate. Source: own practice.

Portainer setup as a Docker container

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - 9443:9443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - portainer_data:/data
    networks:
      - frontend

volumes:
  portainer_data:

networks:
  frontend:
    external: true
A single container starts Portainer CE. Persistent volume for the configuration, Docker socket bind-mounted for management. Source: docs.portainer.io, Zlib license.

Related topics

Portainer makes Docker accessible

assumes is already running. Caddy brings HTTPS in front, the container stack is the actual substance:

Ready for the next step?

Free intro call, no strings attached. In 30 minutes you'll know whether and how AI can help your business.

Book a callBAFA funding