Skip to content

Security wizard

How to walk through the Security step of the setup wizard (see Step 8 of the installation). The same phases remain available after installation, under Security → Scan and apply protections (/security/hardening), so you can review, simulate or reapply them.

A scan with Lynis plus the panel’s own checks gives a score before and after. Hardening runs in idempotent phases, with a backup of every file it changes. Each phase can be simulated first: nothing changes on the VPS during a simulation. Scans and phases run in the panel’s embedded terminal, and you see the real commands, just as you would over SSH.

The Security step applies hardening in eight phases, one at a time: apply, confirm, and only then move on to the next one. Never start a new phase while the previous one is still waiting for confirmation.

PhaseWhat it doesAsks for confirmation?
00 · Updatesapt full-upgrade + automatic updates (except Docker)No
01 · Non-root userInstalls your SSH key and locks the root passwordYes
02 · SSHDisables password login and root over SSH; only your user can sign in. Keeps the panel tunnel (ssh -L) workingYes
03 · FirewallEnables UFW (denies everything except what was allowed beforehand)Yes
04 · Intrusion preventionfail2ban + AppArmorNo
05 · MinimizationRemoves unnecessary packages (e.g. snapd)No
06 · Auditingauditd, Lynis, AIDE, rkhunter — slowNo
07 · Additional hardeningThe Lynis recommendations that are safe to automate: core dumps disabled, umask 027, kernel modules and tuning, legal banner at login, compilers restricted to root, process accountingNo

The three phases marked as requiring confirmation (01, 02 and 03) change how you get into the machine — the key, the password and the firewall. That is why, before applying any of them, the script itself already schedules an automatic rollback on the server. If nobody confirms within ~5 minutes, the server undoes by itself what it just did. Confirming cancels that schedule — which is why the test below matters: it is your only way to know, before cancelling the safety net, whether it would still be needed.

Two safeguards already exist in the script itself and help avoid the worst-case scenario, but they do not replace the test in the new window: phase 01 only locks the root password if it finds at least one SSH key installed, and phase 02 refuses to run (with an error) if the given user does not exist or has no key. They are safety nets, not proof that your specific access works.

If something still goes wrong, see I lost access: now what?.

Before you run: phases that deserve attention

Section titled “Before you run: phases that deserve attention”