Restruo

Every stack.
One click.

Restruo puts all of your Portainer instances on one dashboard — every stack and container, with a one-click repull + redeploy, honest update badges, and a red dot when something's down.

Get it on GitHub Explore features
Self-hosted Open source Installable PWA Portainer 2.x
Why Restruo

Updating stacks shouldn't be a ritual

Keeping containers current across several machines means repeating the same clicks in every Portainer, on every stack. Restruo collapses all of it into one screen and one button.

Every Portainer, one list

All your instances aggregated into a single dashboard — stacks and the standalone containers that aren't part of one. Portainer stays the source of truth.

One-click repull + redeploy

The whole log-in → Editor → re-pull → Deploy dance becomes a single Update button per stack, through the Portainer API, with env vars preserved.

Honest update detection

It compares the digest your container is actually running against the registry, and badges only what's behind. Pinned tags like postgres:16 are deliberately left alone.

Red dot for trouble

Containers that are stopped — or running but failing their healthcheck — get flagged instantly, across every machine, on one screen.

Everything inside

Built for the homelab update loop

Check what's behind, update it, clean up after it — from your desk or your phone.

Stacks & loose containers

Sees everything on every instance — compose stacks and standalone containers alike.

Update all — safely

One button updates only the items whose digests are genuinely behind the registry.

Prune & clean up

Sweep the unused images your :latest updates leave behind, plus networks — and volumes only if you explicitly ask.

Health at a glance

Stopped containers and failing healthchecks show as a red dot — no more surprise outages.

Installable PWA

Add it to your phone's home screen; a 30-day session means it reopens signed in.

Zero-friction setup

Add instances from a settings page — no config files, no restarts. Stateless apart from its instance list.

The ritual, retired

log in → open stack → Editor → Update the stack → tick Re-pull image → Deploy  ×  every machine

Restruo replaces all of that with one dashboard and one button — and its name says so: restruo is Latin for "I rebuild."

Run it yourself

Deployed in one stack

You need Docker and at least one Portainer 2.x instance you can reach. Fittingly, Restruo deploys as a Portainer stack itself.

1

Paste the stack

Add it in Portainer (Stacks → Add stack) or run docker compose up.

2

Sign in

Open port 8080 and sign in with your dashboard password.

3

Add your instances

Point it at each Portainer from the settings page — no config files, no restarts.

services:
  restruo:
    image: ghcr.io/jwapps-app/restruo:latest
    ports: ["8080:8080"]
    volumes: [restruo-data:/data]
    environment:
      - DASHBOARD_PASSWORD=change-me
    restart: unless-stopped
volumes:
  restruo-data:

Open http://<host>:8080, sign in, and add your Portainer instances from Settings.

DockerPortainer 2.xPWAAGPL-3.0
FAQ

Questions, answered

What do I need to run Restruo?
Just Docker and at least one Portainer 2.x (Community Edition) instance you can reach. Restruo itself deploys as a single container — paste the stack into Portainer or run docker compose.
How does it know a stack actually needs updating?
It compares the digest of the image your container is really running against the registry, and badges only what's genuinely behind. Pinned tags like postgres:16 are deliberately left alone, so "Update all" never touches what you froze on purpose.
Does it store or change my stack definitions?
No. Restruo is stateless apart from its instance list — Portainer remains the source of truth for your stacks. Updates go through the Portainer API with your env vars preserved.
Can I use it from my phone?
Yes. Restruo installs as a PWA — add it to your home screen, and a 30-day session means a force-closed app reopens signed in. Update your homelab from the couch.
What does "Restruo" mean?
It's Latin: restruo, "I rebuild" — exactly what it does to your stacks, one click at a time.