./lab up ubuntu
Ubuntu 26.04 LTS
apt package family
Linux Server Rescue
Public prerelease · version 0.1.0-alpha.9
A disposable systemd server with thirteen realistic incident tickets, ordered hints and outcome-based verification. Choose Ubuntu, Debian or Rocky Linux and practise the evidence-first repair loop. Free and open source under the MIT licence.
The systemd host uses a privileged container. Read the safety boundary before running it locally.
The rescue loop
Start from the incident ticket, inspect the live system and make the smallest safe change. The verifier checks the recovered outcome, not whether you copied one expected command.
01
Apply one known incident. The lab refuses to stack a second fault over the first.
02
Enter relay, collect evidence and narrow the failing layer before changing it.
03
Restore the intended behaviour without disabling the protection around it.
04
Leave the host and run the outcome-based verifier. Resume later with down and up, or reset when you want a clean run.
./lab up ubuntu
./lab break 01
./lab shell
./lab verify 01
./lab resetChoose your target
Run one distribution at a time and see which evidence is universal and where package-family details differ.
./lab up ubuntu
apt package family
./lab up debian
apt package family
./lab up rocky
dnf package family
Available incidents
Each one includes a ticket, three ordered hints, a spoiler-fenced solution and a verifier that never mutates the server.
Incident 01
Trace a systemd service trapped in a restart loop, find the bad override and restore the healthy service without weakening its restart policy.
Incident 02
Follow an application write failure to the correct filesystem, measure what consumed it and recover capacity without moving the data.
Incident 03
Find a stale local name-service override that shadows the lab network's DNS answer, restore the intended resolution path and recover the upstream systemd check.
Incident 04
Restore least-privilege write access after maintenance changes application-data ownership, without running the service as root or making the directory world-writable.
Incident 05
Trace sustained CPU use to a restart-managed worker, identify its owning systemd unit and stop it from returning without killing an unexplained PID.
Incident 06
Follow a service failure to malformed JSON, validate the deployed file and atomically restore the last-known-good configuration already on the host.
Incident 07
Explain why an in-container health check passes while the published service fails, then restore the listener to a container-network address.
Incident 08
Trace a failed systemd probe to the wrong external port and restore its healthy internal upstream endpoint without exposing or changing the companion service.
Incident 09
Find the unauthorised listener already holding the application port, remove it from this boot and the next, and restore the service without changing its published port.
Incident 10
Explain why a known-good configuration keeps reverting, stop the unauthorised timer restoring it, and make the correct deployment survive a restart.
Incident 11
Recover filesystem space a directory scan cannot account for, trace the unlinked file to the process still holding it and release the bytes without rebooting.
Incident 12
Explain a no-space error on a filesystem with free blocks, identify the capacity that is actually exhausted and remove only the obsolete artefacts responsible.
Incident 13
Trace a full data filesystem to a local backup schedule with no retention, preserve a recent complete archive, apply a safe retention response and stop the fault from returning.
What makes it practical
Each incident starts with a short operational ticket. The server exposes the evidence, and more than one safe repair can pass.
Inspect genuine units, process state and journal entries on a Linux host instead of reading invented terminal output.
Repeat the same incident on current Ubuntu, Debian and RHEL-compatible Rocky Linux user spaces, one target at a time.
The verifier checks whether the service is healthy again. It does not demand a memorised command sequence or reveal the answer.
Down and up preserve an active incident for that distribution. Reset removes the saved fault and rebuilds a known-good server when you want a clean run.
Launch a private Codespace with a dedicated Docker daemon or use the matching Bash and PowerShell wrappers on your own machine.
Capability boundary
This track teaches service, log, process, filesystem, permission, DNS, configuration and networking diagnosis in real Linux user spaces. Containers share the Docker host kernel, so it does not pretend to teach GRUB, initramfs, kernel selection, physical disks or an actual machine's boot path.
Start with the method
The introductory article explains the five-step incident method behind every drill and the signals worth collecting before you touch a broken server.