I run a handful of small Linux servers. A few websites, a couple of APIs in Docker, a database. No on-call team, just me. And of course things tend to break when I'm not at my desk.

For years my "mobile setup" was a plain SSH app and a lot of careful typing. It works, but it's stressful. A phone keyboard has no Ctrl, no Esc, no Tab, and one typo in an nginx or sshd config can make a small problem a big one. I once locked myself out of a server while changing the SSH port from a train. That was the day I started building my own tool.

It turned into an Android app called VpsPilot. This post is less about the app and more about the way of working it pushed me into, because I think the habits are useful whatever you use.

A terminal that is actually usable on a phone

The first thing I needed was a terminal I didn't hate. VpsPilot has a key row above the keyboard with Esc, Ctrl, Alt, Tab, the arrows, Home and End, so Ctrl+C and Ctrl+R work like they do on a laptop. I can also keep a few sessions open on the same server.

The terminal with the key bar

The SSH key is created on the phone and lives in the Android Keystore. The app can use it but can't read it out, and I set mine to unlock with my fingerprint. No private key file sitting in a Downloads folder.

Seeing the plan before anything runs

This is the part that changed how I work. For the common jobs (installing updates, hardening SSH, turning on the firewall, setting up nginx with HTTPS, adding fail2ban, freeing up disk space) I don't type commands from memory anymore. I pick the task and the app shows me the plan first: every step and the exact commands it will run.

Risky steps stop and ask. If I switch to another app, the run keeps going, and when a step needs me I get a notification with Run this step, Skip step or Stop workflow. On the lock screen it only says "A workflow needs you", so nothing about my servers shows up there.

A notification asking before a risky step

Mobile connections drop all the time. When that happens mid-run, the step keeps running on the server and the app reconnects on its own.

Undo, which I now want everywhere

Before a workflow touches config files, it saves a snapshot of them. When the run is done there's an "Undo these changes" button that puts the files back, checks the config and reloads the service.

Undo these changes after a workflow run

Changing SSH settings from a phone is a lot less nerve-wracking when you know you can roll back with one tap.

Editing a config without breaking it

Sometimes I just need to change one line. The editor saves a backup of the old version first, has "Save with sudo" for files owned by root, and for configs it knows it runs the real check before reloading anything: nginx -t, sshd -t, fail2ban-client -t. If the check fails, nothing gets reloaded.

The editor on an nginx config

Finding problems before they find me

There's a security check that reads the server and lists what's worth fixing: SSH settings, open ports, waiting updates, failed logins, fail2ban and a few more. Findings come sorted into "Important" and "Worth a look", and many have a "Fix with" button that opens the right workflow, with the same plan-first flow as above.

The security check

The rest is the everyday stuff: restarting a Docker container and reading its logs, restarting a service, scheduled backups that run on the server itself (so they don't care if my phone is off), and deploying from a Git repo.

Habits I'd recommend, whatever tool you use

  1. Never edit a critical config without a backup you can restore in one step.
  2. Run the check before you reload (nginx -t, sshd -t). It takes a second.
  3. Keep a second SSH session open when you change SSH settings.
  4. On a phone, prefer steps you can read and review over typing from memory.

That's really all VpsPilot does: it makes those habits the default.

If you want to try it, it works with Debian, Ubuntu, Rocky Linux and AlmaLinux servers you can reach over SSH. There's no account, no ads and no tracking, and everything stays on your phone. There's a 14-day free trial, then $2.99 a month or $19.99 a year.

I'd really like to hear from people who self-host. What do you end up fixing from your phone most often, and what would you want a tool like this to do?