Blog

Guide

FleetOps as a Portainer alternative

Where FleetOps fits for teams coming from Portainer, where Portainer is still the better choice, and how to try the two side by side.

FleetOps and Portainer both give a team a web UI for Docker, Podman and Kubernetes, with local and remote hosts in one place. They differ mostly in what is free and in what each one is built around.

FleetOps Community is Apache-2.0 with no node or user limit, and it includes per-environment roles, Kubernetes namespace scoping and an audit log of every change. In Portainer, fine-grained roles, namespace scoping and the audit log are part of the paid Business Edition.

Choose FleetOps if

  • Several people share hosts or clusters, and you want to know who changed what without buying a per-node license. Every change, terminal session and refused request is in the audit log, kept for 90 days by default.
  • You want the screen to be current. Lists follow Docker events and Kubernetes watches instead of polling, and when the connection drops the page says so rather than showing old data as live. See Live lists without polling.
  • Remote hosts sit behind NAT. A dial-out agent joins each host without opening a port or exposing its Docker socket. See How a remote host joins without opening a port.
  • Weight matters. The server is one static binary of about 30 MB with the web UI and a SQLite database inside, and it never phones home.

Stay with Portainer if

  • You run Docker Swarm. FleetOps does not support Swarm, and it is not planned.
  • You deploy Compose stacks from Git today. Stacks with GitOps are next on the FleetOps roadmap, not shipped.
  • You need single sign-on now. SSO is merged for the next FleetOps release, in the Enterprise edition.

FleetOps is also younger: it is 0.x, so expect breaking changes between minor versions.

Try it next to Portainer

Both only need the Docker socket, so they can run on the same host. Portainer often holds port 9000, so publish FleetOps on another one:

docker run -d --name fleetops -p 9100:9000 \
  -v fleetops-data:/data \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --group-add "$(stat -c %g /var/run/docker.sock)" \
  fleets/fleetops

Then open http://localhost:9100 and create the first admin. The install guide covers the binary, remote agents and Kubernetes.

Moving over

There is nothing to import for containers, images, volumes and networks: FleetOps reads them straight from Docker. Users, roles and remote environments are set up again in FleetOps; it does not read Portainer’s settings.

Something here out of date about either tool? Open an issue.