Learn the terminal, then run a server.
For developers who copy commands and avoid vim. 171 short steps, from pwd to running and defending servers in production.
You are on the list, there. We will email you when LinuxPath opens.
01. Moving around: pwd, ls, cd
Block A, free
Find the failed release and create a directory named inspected inside it.
linuxpath:~$ cd shop/releases linuxpath:~/shop/releases$ ls 2026-10-28 2026-10-29 2026-10-30 linuxpath:~/shop/releases$ ls -a 2026-10-29 . .. .failed .revision release.txt linuxpath:~/shop/releases$ cd 2026-10-29 linuxpath:~/shop/releases/2026-10-29$ mkdir inspected linuxpath:~/shop/releases/2026-10-29$
What Check looks at
- [ ]inspected is in the failed release
- [ ]no inspected anywhere else
- [ ]you own it, not root
- [ ]the .failed marker is still there
Part 1 in a browser tab. Part 2 on your own server.
Each step is one topic and one session of 10 to 15 minutes. You read, then you do the task in a real shell.
00 - 70
In your browser tab
An emulator boots Alpine Linux from a saved snapshot, with GNU grep, sed, awk, vim and tmux, so the flags behave the way they will on Debian. A setup script prepares each task: files to find, broken permissions, a script that fails. You fix it and press Check.
71 - 170
On a server you control
A small VPS, or a VM on your laptop with UTM, VirtualBox or WSL. The step gives you one command. It runs a check script on your server and prints a signed token, and the site marks the step done when the token comes back.
Practice needs a keyboard. On a phone you can read every step, and the terminal stays off.
Twenty-one blocks, A to U.
The bar is the whole course, one block per segment, sized by its number of steps. Pick a block to see its topics.
- Free, 00 - 20
- In the browser, 00 - 70
- On your server, 71 - 108
- Middle level, 109 - 156
- Defence with Kali, 157 - 170
In the browser
A
00 - 07
8 steps
- Terminal, shell, prompt
- pwd, ls, cd
- Paths
- man and --help
- History, Tab, Ctrl+C, Ctrl+D, Ctrl+L, Ctrl+R
B
08 - 20
13 steps
- mkdir, touch, cp, mv, rm
- cat, less, head, tail
- Wildcards * and ?
- find
- Hidden files
- Links
- tar, gzip
- du, df
C
21 - 32
12 steps
- stdin, stdout, stderr
- Redirects
- Pipes
- grep
- sort, uniq, wc, cut, tr
- sed
- awk
- xargs
- tee
- diff
D
33 - 43
11 steps
- Survive and quit
- Modes
- Motions
- Editing
- Search and replace
- Visual mode
- Registers
- Macros
- Buffers and windows
- .vimrc
E
44 - 50
7 steps
- chmod, chown
- sudo, su
- /etc/passwd, groups
- umask
- SUID
- Why "Permission denied"
F
51 - 59
9 steps
- ps, top, kill, signals
- fg, bg, jobs, nohup
- Variables, PATH
- .bashrc and .profile
G
60 - 70
11 steps
- Shebang, variables
- if, case
- Loops
- Functions
- Arguments
- Exit codes
- set -euo pipefail
- cron
- Your own CLI tool
Defence with Kali Linux
T
157 - 163
7 steps
- Kali in a VM, and the rule: scan only what you own
- nmap on your own server
- Lynis
- Greenbone
- nikto and testssl.sh on your site
- gitleaks on your repos
- Case: an audit report and a fix list
U
164 - 170
7 steps
- File integrity with AIDE
- Suricata
- rkhunter and chkrootkit
- Read an attack in the logs
- Incident response
- A timeline of files and logins
- Final project: defend your server through an incident
On your own server
H
71 - 77
7 steps
- Getting a VPS
- ssh keys
- ssh config
- scp, rsync
- tmux
I
78 - 84
7 steps
- apt
- systemctl, journalctl
- Your own unit
- Timers in place of cron
- What fails at boot
J
85 - 92
8 steps
- ip, ss
- curl
- DNS
- Ports, /etc/hosts
- ufw
- lsof
- Why it will not connect
K
93 - 98
6 steps
- lsblk, mount, fstab
- Logs in /var/log
- logrotate
- Backups on cron
- Out of disk space
L
99 - 108
10 steps
- nginx
- A domain and TLS with certbot
- Docker
- docker compose
- Deploy your own app
- Env and secrets
- Simple monitoring and an alert
Middle level, on your own server
M
109 - 115
7 steps
- Load average and vmstat
- Memory, swap and the OOM killer
- Disk I/O: iostat, iotop
- strace
- /proc, limits, cgroups
- perf top
- Case: the server is slow
N
116 - 122
7 steps
- ip route and gateways
- tcpdump
- nftables
- Debug TLS with openssl s_client
- Load balancing with nginx upstreams
- sysctl and conntrack
- Case: a 502 every now and then
O
123 - 127
5 steps
- LVM
- Grow a disk on a live server
- RAID with mdadm
- ext4, xfs and inodes
- Case: the volume filled up at night
P
128 - 134
7 steps
- Harden sshd
- fail2ban
- sudoers and least privilege
- unattended-upgrades
- AppArmor
- auditd
- Case: audit a server you did not set up
Q
135 - 141
7 steps
- Inventory and ad-hoc commands
- A playbook
- Templates, variables, handlers
- Roles and idempotency
- ansible-vault
- --check and --diff
- Case: a server from zero in one command
R
142 - 147
6 steps
- node_exporter and Prometheus
- Grafana
- Alertmanager
- Logs in one place with Loki
- Runbooks and postmortems
- Case: find the incident on the graphs
S
148 - 156
9 steps
- Multi-stage images
- Deploy from GitHub Actions over ssh
- Blue/green deploy
- Roll back in one command
- k3s: pods and deployments
- Services and ingress
- ConfigMaps, Secrets, probes
- Debug a crashing pod
- Final project: an on-call week
A script checks every task.
Each task ends with a check script. It reads the state of the machine: the file, its owner, the mode bits, the exit code of your script. Reset puts the machine back to the start of the task.
In some vim lessons the editor also logs your keystrokes, so the check sees that you used dd or ciw and did not retype the line.
. /usr/local/lib/lp-check.sh
d=/home/learner/shop
r="$d/releases/2026-10-29"
lp_check "inspected is in the failed release" test -d "$r/inspected"
lp_check "no inspected anywhere else" bash -c "test \"\$(find '$d' -name inspected | wc -l)\" -eq 1"
lp_check "you own it, not root" bash -c "test \"\$(stat -c %U '$r/inspected')\" = learner"
lp_check "the .failed marker is still there" test -f "$r/.failed"
Every step has the same ten parts.
Here is step 01, pwd, ls and cd, part by part.
-
1
A familiar moment
You type
cd var/logand getNo such file or directory. The path is right; you are in a different directory than you think. -
2
In plain words
The shell always stands in one directory of the tree, the working directory.
-
3
How it works
A diagram of the tree from
/down toshop, withpwd,lsandcddrawn on it. -
4
The command and its flags
ls -a,ls -l,ls -lt,cd ..,cd -, and when you reach for each. -
5
Worked example
A full session in
~/shop, with the output the terminal prints. -
6
Common mistakes
-bash: cd..: command not found.cdand..need a space between them. -
7
Practice
Find the failed release and create a directory named
inspectedinside it. -
8
Real case
You log in to a Debian server to read why nginx returns errors.
-
9
Prove it
Say aloud, without notes, why
lsdid not show.failed. Then do the task again with no hints. -
10
Cheat sheet
cd -back to the previous directory, and eight more lines.
Hints open one at a time, on a ladder from 0 to 5. Practice comes in three tiers: build from an empty prompt, fix something broken, extend a working script.
Questions before you join.
Do I need to install anything?
Not for part 1. Steps 0-70 run in a desktop browser. Part 2 needs a server: a small VPS, or a VM on your own machine with UTM, VirtualBox or WSL. Step 71 walks you through both options.
What level will I reach?
Steps 0-108 make you a solid junior: you run your own server and deploy to it. Steps 109-156 take you to middle: you find why a server is slow, harden it, manage machines with Ansible, set up monitoring and alerts, and run apps on k3s. Steps 157-170 teach defence with Kali Linux: you audit your own server, catch an intrusion and respond to it. There are no attacks on other systems in the course. Parts 3 and 4 need a VPS with 4 GB of memory and a second machine for Ansible, plus a Kali VM for part 4.
What is free?
Steps 0-20, blocks A and B: from your first command to files, find, links, tar and disk usage. The rest opens with a paid plan.
How will it be priced?
An annual subscription or a one-time lifetime plan. Prices will be announced at launch.
How do you check a server I own?
The step gives you one command to run on your server. It fetches a check script, runs it, and prints a signed token tied to your account and the step. The site accepts the token and marks the step done.
Can I do it on a phone?
You can read every step on a phone. The terminal needs a keyboard, so practice is off there.
I already know some commands. Is it too basic for me?
Block A starts from zero, and blocks A and B are free. Try them and decide before you pay.
What language is it in?
English and Russian. Both versions have the same steps and the same sections.
When does it launch?
It is in progress, with no date yet. Join the waitlist and we will email you when it opens.
Hear first when LinuxPath opens.
Leave your email and we will send one message at launch. Steps 0-20 will be free.
You are on the list, there. We will email you when LinuxPath opens.