home / skills / jmerta / codex-skills / vps-checkup
This skill performs a read-only health and security check on an Ubuntu VPS with Docker, reports findings, and awaits explicit confirmation for fixes.
npx playbooks add skill jmerta/codex-skills --skill vps-checkupReview the files below or copy the command above to add this skill to your agents.
---
name: vps-checkup
description: "SSH into an Ubuntu VPS (Docker) for a read-only health/security/update report (UFW + fail2ban) and propose fixes; apply updates/restarts only with explicit confirmation. Use when the user wants a read-only VPS health/security check."
---
# VPS checkup (Ubuntu + Docker)
## Goal
- Produce a clear, read-only health/security/update report for an Ubuntu VPS running Docker.
- Propose safe, minimal fixes; do not apply changes or restart anything unless the user explicitly confirms.
## Inputs to ask for (if missing)
- SSH target host alias (from `~/.ssh/config` on Windows: `$HOME\\.ssh\\config`) or `user@ip`.
- Confirm `sudo` access and whether running `apt update` is allowed (it modifies package lists).
- Required open ports (e.g., `22`, `80`, `443`) and any non-standard SSH port.
- Where deployments live: confirm if Docker Compose is used on the VPS (common), and whether compose files are in a known path.
- If the local `ssh` client or required tools are missing, tell the user and ask whether to install them or provide command output manually.
## Workflow (checklist)
1) Connect safely
- Keep a second SSH session open before any SSH/firewall changes.
- Record identity/time/host: `whoami`, `hostname -f`, `date -Is`, `uptime`.
2) Collect a read-only baseline (system)
- OS/kernel: `lsb_release -a` (or `cat /etc/os-release`), `uname -a`.
- CPU/mem/disk: `top` snapshot, `free -h`, `df -hT`, `lsblk`.
- Services: `systemctl --failed`, `journalctl -p 3 -xb --no-pager` (use `sudo` if needed).
3) Check security posture (read-only)
- SSH: prefer `sudo sshd -T` (fallback to `sudo cat /etc/ssh/sshd_config` + `sshd_config.d/`).
- Firewall: `sudo ufw status verbose` (and `sudo ufw status numbered`).
- Fail2ban: `sudo fail2ban-client status` (+ `status sshd` if present).
- Listening ports: `ss -tulpn` (use `sudo` if needed).
4) Check update posture (read-only by default)
- If user allows: run `sudo apt update` to ensure accurate results.
- Then collect: `apt list --upgradable`, `ubuntu-security-status` (if available), and `/var/run/reboot-required` presence.
- Check unattended upgrades: `systemctl status unattended-upgrades --no-pager` and `/var/log/unattended-upgrades/`.
5) Check Docker health (read-only)
- Daemon status: `systemctl status docker --no-pager`, `docker info`.
- Containers: `docker ps`, unhealthy/restarting containers, recent restarts, and `docker stats --no-stream`.
- Disk usage: `docker system df` and large log growth indicators.
- Compose overview: `docker compose ls` (then inspect key projects as needed).
6) Produce the report + recommendations
- Use `references/report-template.md`.
- Use `references/ubuntu-docker-checkup-commands.md` for a copy/paste command set.
- Rank findings by severity and explicitly list what requires confirmation (updates, firewall changes, SSH changes, restarts, pruning, reboot).
7) Apply fixes (ONLY with explicit confirmation)
- Do not run `apt upgrade`, change UFW rules, change SSH auth, prune Docker, restart services/containers, or reboot unless the user says to.
## Safety gates (non-negotiable)
- No restarts (Docker/system services) unless the user explicitly asks for restart.
- No SSH/firewall changes unless you have a backup access path (second session open) and the user confirms the plan.
- Never paste secrets (tokens, private keys) into chat or logs.
## Deliverable
Provide:
- A read-only report using `references/report-template.md`.
- A prioritized list of recommended fixes and which ones require explicit confirmation.
- The exact commands run (or requested if the user ran them manually).
This skill performs a read-only health, security, and update check on an Ubuntu VPS running Docker over SSH. It collects system, firewall (UFW), fail2ban, package, and Docker data, produces a prioritized report, and proposes safe fixes. Any change, update, restart, or firewall modification is only applied after you explicitly confirm.
The skill connects to the target VPS via SSH (user@host or an SSH config alias) and runs a predefined set of read-only commands to gather OS, resource, service, SSH, UFW, fail2ban, package, and Docker status. If you permit, it will run sudo apt update to provide current upgrade data. It formats findings into a prioritized report, lists recommended fixes, and marks which actions require explicit confirmation before being executed.
Do you make changes to the server without permission?
No. The skill only suggests fixes and will not apply updates, firewall rules, or restarts unless you explicitly confirm each action.
What inputs do you need to start?
Provide an SSH target (user@host or SSH alias), confirm sudo capability, state allowed open ports and whether Docker Compose is used. Optionally allow apt update for accurate upgrade info.