I’ve always treated SSH as the front door to my home servers. If I wanted to check on a Docker container, read its logs, edit a Compose file, or just copy something across, I opened a terminal first.
Of course, doing any of this over SSH isn’t exactly difficult, but every small job means remembering another command or installing another utility.
Portainer, Dozzle, and File Browser Quantum put the work I usually do in SSH into three browser tabs. Together, they used only 283 MB of memory on my Home Ops server. I’ll still need SSH when something inevitably breaks, but the boring administrative work no longer happens in the terminal.
Portainer
Replaced half my Docker command history
My Home Ops server is a 4 GB Ubuntu VM. It already runs a crowded mix of container services including Homarr, Uptime Kuma, Glances, Dozzle, and serves some custom HTTP pages.
Before Portainer, checking on all of them usually meant opening SSH and working through the same tiresome Docker commands:
-
docker psto see what’s running -
docker statsto check memory and CPU use -
docker inspectto jog my memory of ports, mounts, and restart policies -
docker restartwhen a service inevitably crashes and needs a restart
None of the commands are difficult, but they deliver information that’s scattered. Portainer pulls it all onto a single page. Its container list shows each service’s state, image, stack, and creation date. The environment dashboard summarizes my images, volumes, networks, and stacks.
Clicking a container shows more detail, including ports, mounts, resource data, logs, and controls.
I tested out Portainer’s functionality by opening up Homarr’s container details and then restarting it from Portainer. That replaced the old SSH procedure of checking the exact container name, running the restart command, and checking it again afterward.
Portainer is way denser than docker ps due to the extensive information accessible under menus, counters, actions, and objects. On a server with only a handful of containers, that’s probably a bit excessive.
With my Home Ops server running a mix of permanent and temporary services, the granularity of Portainer made a lot more sense. It gave an incredible amount of information at a glance, including details that previously required more commands than I had brain power to remember.
- Platform(s)
-
Linux and Windows servers, accessed through a web browser
- Developer
-
Portainer.io
Portainer is a lightweight, user-friendly web-based interface for managing, deploying, and troubleshooting containerized applications.
Dozzle
Made container logs less miserable
Logs were another task that always sent me back to SSH. If a service misbehaved, I usually started with docker logs container-name, then reran it with --tail to cut down old output or -f to follow failures in real time.
The commands, of course, work perfectly. But a busy container can fill the terminal too quickly to narrow in on anything meaningful. Switching services also meant stopping one stream, remembering the next container name, and starting from scratch.
Dozzle keeps all that information in a browser tab. Its sidebar lists all my containers on the Home Ops server, while the main panel serves a timestamped log output in a readable and scannable stream.
The handoff from Portainer demonstrates how Dozzle works in practice. After restarting the Homarr dashboard container in Portainer, I opened it in Dozzle and found the startup output. One container had handled the action, while the other made its result really easy to analyze.
Dozzle has a really narrow job, but I wouldn’t call its logs basic by any stretch. They’re detailed enough for troubleshooting and beat tailing output in an SSH session any day.
- Developer
-
Amir Raminfar
- Price model
-
Free and open-source
Dozzle is a lightweight, web-based application that allows you to monitor Docker logs in real time.
FileBrowser Quantum
Beats both nano and SCP
My least favorite SSH jobs are the tiny ones. Tasks like finding the correct Docker project with cd and ls, opening a Compose file in nano, or using scp to upload a file. FileBrowser Quantum made those directories behave more like ordinary files on my desktop.
From its directory view, I opened services, selected the existing docker-compose.yml, and read it in the built-in editor. The terminal version would have involved remembering the path, opening the file with nano, and being careful not to accidentally break YAML indentation.
The upload test was even simpler. I created a maintenance note on Windows and uploaded it to services directly from my browser. For local and routine homelab use, that beat using secure copy (scp) and its path syntax. It also felt easier than file transfer clients like WinSCP because I already had an authenticated session.
There is one obvious tradeoff, but it’s not such a big deal for homelab use. My direct HTTP connection didn’t encrypt the upload, while SCP would have protected data in transit over SSH. For this reason, I’d put Quantum behind HTTPS or Tailscale before using it across an untrusted network.
Mount only the directories the web interface needs. I exposed /home/home-labs/docker to it, not the entire host filesystem.
- Developer(s)
-
Graham Steffaniak
- Price model
-
Free and open-source
FileBrowser Quantum is a free, open-source web file manager for self-hosted servers. It supports browser-based uploads, editing, search, sharing, multiple sources, and granular access controls.
SSH is still my emergency exit
Convenience doesn’t make these dashboards harmless
All this convenience does come with a major security disadvantage. Portainer and Dozzle both communicate with Docker through /var/run/docker.sock. That socket is more than powerful enough to control the entire Docker host, so giving a web application access to it isn’t something trivial.
FileBrowser Quantum, too, has potential security issues because it can write to whatever directories I mount inside it.
However, because these interfaces are all on my trusted home network, protected by authentication, with Tailscale available for remote access, this isn’t a huge concern. In saying that, I certainly wouldn’t expose their raw HTTP ports to the internet.
They also can’t help when the layer beneath them fails. I still need SSH to:
- Repair or restart the Docker daemon itself
- Correct ownership and permission problems
- Change UFW or network rules
- Perform Linux maintenance and updates
The dashboards absolutely don’t replace administrative knowledge. They remove the needless and boring terminal work when the server is healthy. Any sort of disruption caused by a power outage or some bad configuration would have me reaching for SSH as the fallback.
So, while SSH remains the tool I trust when things break, I no longer open it for every little routine check.