Guide

How to manage Docker and Podman hosts in a homelab

Containers end up everywhere in a homelab: a VM on a Proxmox VE node, an LXC container with Docker inside, the NAS, a Raspberry Pi in a cupboard. Checking on them usually means signing in to each host in turn and typing docker ps again.

The RemoteAccessApp app for Windows reads Docker and Podman over the SSH connection you already have, with nothing to install on the host. Each host gets a Containers tab, a live load dashboard, and a place in the list of hosts your scripts run on.

  • Docker and Podman over SSH
  • Logs, restarts and shells
  • Nothing installed on the host

Updated · Works on Windows 10 and 11

Set up your container hosts

  1. Step 1: Add each container host as an SSH host

    In the RemoteAccessApp app, open Connections, click Add host and choose SSH. Use the user who runs your containers, and sign in with a key (see SSH keys). Check the host's key fingerprint the first time you connect.

  2. Step 2: Group and tag them

    Put the hosts in a group such as Docker hosts, and tag them by role, for example media, monitoring or pi. Tags make it quick to pick the right hosts when you run a script on several at once.

  3. Step 3: Open the Containers tab

    Choose Containers from the host's menu, or click Containers on a connected terminal tab. The app looks for docker, then podman, on that account's path and lists every container, running or not.

  4. Step 4: Turn on sudo only if your setup needs it

    If your user isn't allowed to use Docker directly, Use sudo for Docker on this host runs the commands as sudo -n docker. It only works when that account can run Docker with sudo without a password: the app never types a sudo password. The setting is saved with the host.

  5. Step 5: Save a workspace

    Put the Containers tabs and dashboards you check most side by side in split view and save them as a workspace, so the whole set comes back with one click. See split view and workspaces.

What the Containers tab shows

  • Every container with its name, image, state, published ports and age, plus CPU and memory for the running ones, and a summary such as how many are running and stopped.
  • Start, Stop and Restart, each confirmed before it runs, so a stray click doesn't take down a service.
  • The log of the container you select: its last 300 lines, with Follow for new lines as they arrive and a search box that narrows the lines on show.
  • Shell, which opens a new terminal tab inside the container: bash when the container has it, otherwise sh. Leaving that shell puts you back on the host's prompt.

The list refreshes by itself while the tab is on screen and stops reading when it isn't, so a tab left open in the background doesn't keep polling your hosts. If there's nothing to list, the tab says why, for example that Docker's daemon isn't running or that your account isn't allowed to use it.

Good to know

The tab works with containers one at a time. There's no Compose view: run docker compose in the terminal as you do now, and use the tab to watch what it started.

Edit compose files in your own editor

Open the host's files (an SFTP tab of the same host), find your compose.yaml or .env file, and choose Edit. The file opens in your editor on Windows, and every save is uploaded back to the host. Use Choose editor… to pick a different program. The tab shows which files you're editing, with a Stop button when you're done. Then apply the change from the terminal:

cd ~/stacks/media
docker compose up -d

Watch host load

Click Dashboard on the host's terminal tab for live graphs of CPU, memory, load, disks and network, plus the busiest processes, read over SSH every few seconds. It works on Linux hosts, including ARM boards like a Raspberry Pi, and flags disks over 90% full, which is often the first sign that images and logs are piling up.

If some of your containers run on a NAS, the guide to TrueNAS, Unraid and NAS remote access shows how to keep its web interface, SSH terminal and files together in the same app.

The same check on every host

Save a script in the terminal's Scripts & History panel (Ctrl+Shift+S), then use Run on hosts… to run it on the hosts you tick. You get each host's output and result in one list, and can run it again on the ones that failed. A quick round of checks:

docker ps --format '{{.Names}}: {{.Status}}'
docker system df

On Podman hosts, use podman in place of docker, or keep a separate script for them. To type into several open terminals at once, turn on Broadcast.

Before you prune

docker image prune -a removes every image no container is using, including ones you meant to keep for a rollback. Run docker system df first, and try a prune on one host before sending it to all of them.

Move volume backups between hosts

A transfer tab copies files from one saved host to another directly, streaming through your PC with nothing saved on your own disk, and with Verify comparing SHA-256 checksums where both hosts have sha256sum. Stop the container or use its own backup tool first, archive the volume's folder, then copy the archive to your backup host. See copying files between two servers.

Keep it secure

  • Membership of the docker group is effectively root on that host: anyone in it can start a container that reads any file. Give it only to accounts you'd trust with root.
  • Never publish the Docker daemon's TCP port on your network or the internet. The app needs only SSH.
  • Sign in with SSH keys, and turn on two-step verification for your RemoteAccessApp account.
  • Keep admin pages of containers on your own network. When you're away, use a PC at home, as the pillar guide explains.

With Pro, an AI assistant connected through the MCP Desktop Connection can run commands on your saved SSH hosts too, so you can ask it to check which containers have restarted. For the bigger picture, see managing Proxmox, VMware and KVM hosts from one app.

Questions, answered

More homelab and virtualization guides

Related