pawful.dev

LunarShell

A hardened shell environment for Linux servers, installed in one command.

LunarShell sets up a server the way I would by hand: zsh with a Starship prompt, a system-status MOTD on SSH login, hardened SSH and firewall defaults, and the monitoring tools I reach for first. Supports Ubuntu Server, Enterprise Linux 8 and 9, and Arch.

LunarShell architecture: One command, one code path per distribution, one baseline on every host.

Why it exists

Every new server got the same twenty minutes of setup: install a decent shell, configure a prompt that shows the things that matter, make the SSH login tell me the state of the box, tighten the SSH config, install htop and jq and the rest. Twenty minutes times every VPS and bare-metal host across Darkless, JasmeowSystems, and my own machines adds up, and hand-done setup drifts. LunarShell turns that into one command and one place to change it.

What it installs

  • Shell and prompt: zsh and a Starship prompt with hardened shell configuration.
  • Login MOTD: a server status message rendered on SSH login from /etc/profile.d/sshmotd.sh, so the first thing you see is load, memory, disk, and what is running.
  • Security defaults: hardened SSH configuration, strict firewall rules, and secure shell defaults.
  • Tools: sysstat, htop, fastfetch, jq, figlet, and the server utilities I use daily.

Distributions

It targets servers, not desktops: Ubuntu Server 20.04 LTS and newer, Enterprise Linux 8 and 9, and minimal Arch. Each distribution has its own install path under src/distros, because package names, service managers, and firewall tooling differ enough that pretending otherwise produces installers that only work on the author’s machine.

Install

curl --remote-name -fsSL https://shell.lunarshell.dev/install.sh && bash install.sh

Design notes

The MOTD is the piece people notice, but the SSH and firewall defaults are the reason it exists. A consistent baseline across a fleet means the interesting differences between hosts are the ones you chose.