# Linux for Servers

You're comfortable on a Linux desktop - you live in the terminal, you know your way around files and
permissions. Now someone has handed you a server: a fresh cloud box, or the production machine the team
depends on, and the expectation is that you'll *administer* it. No wallpaper to click, no Software Center,
no "I'll figure it out in the GUI." Just an IP address, a username, and the quiet understanding that if you
break it, something real goes down.

The good news is that a server is the same Linux you already know - the kernel, the filesystem, the
permissions, all of it. What changes is the *posture*. A server has no screen, runs unattended for months,
and exists to keep a handful of long-running services alive. Once you internalize that shift, the unfamiliar
tools (`systemctl`, `journalctl`, `ufw`) stop looking like a new operating system and start looking like
exactly what you'd expect a headless, always-on machine to need.

This guide assumes you've done [Linux From Zero](/guides/linux-from-zero) and are at home in
[the terminal and shell](/guides/the-terminal-and-shell). We won't re-teach `cd`, `ls`, or `chmod`. We'll
build on them.

## How to read this
- **About to log into a box right now?** Skim [Phase 1: The Server Mindset](01-the-server-mindset.md) for
  the `ssh` connect, then keep the [server-hardening cheat-card](03-running-it-safely.md) from Phase 3 open
  in another tab.
- **Want it to finally make sense?** Read in order - the mindset makes systemd make sense, and systemd
  makes the safety practices make sense.

## The phases
1. **[The Server Mindset](01-the-server-mindset.md)** - what's actually different about a server: headless,
   reached over SSH, everything is config files and long-running services. Plus the basic `ssh user@host`
   connect, annotated.
2. **[Managing Services with systemd](02-managing-services-with-systemd.md)** - what systemd *is* (the first
   process, the service manager), `systemctl` start/stop/restart/enable/status, and reading logs with
   `journalctl`, on real services.
3. **[Running It Safely](03-running-it-safely.md)** - least-privilege users and `sudo`, scheduled jobs with
   `cron`, firewall basics with `ufw`, SSH hardening, keeping packages updated - ending in a server-hardening
   cheat-card.

> Deliberately deferred to a follow-up infrastructure track: SSH-key generation and agent forwarding in
> depth, configuration management (Ansible/cloud-init), reverse proxies and TLS, containers, and monitoring
> stacks. This guide gets you to *competently administering one box by hand* - the foundation everything
> else is automated on top of.
