Advanced Search
Search Results
190 total results found
Lesson: Scripts You Can Trust
What you'll learn How set -euo pipefail turns silent failures into loud, safe ones. The quoting pitfalls that cause the worst real-world script bugs. How to lint your scripts automatically with ShellCheck. How to clean up reliably with trap, and what "idempot...
Assignment 1: A system health-check script
Goal: Write a Bash script that inspects the machine it runs on — disk usage, free memory, and whether a chosen service is running — and prints a clear, readable report with a meaningful exit code. Where: On the Jumpbox (10.100.100.254, Ubuntu, user ubuntu). Cr...
Assignment 2: A safe backup/parameterised script
Goal: Write a robust, parameterised Bash script that backs up a directory into a timestamped compressed archive, validates its inputs, is safe to re-run, and cleans up after itself. Where: On the Jumpbox (10.100.100.254, Ubuntu, user ubuntu). Create ~/backup.s...
Lesson: Git's Mental Model
What you'll learn Why version control exists and what problems it solves on a real team. The four core places your work lives: the working tree, the staging area, the local repository, and (later) a remote. What a commit actually is — a snapshot, not a list o...
Lesson: Status, Add, Commit, Log
What you'll learn The everyday loop every developer repeats dozens of times a day: edit → status → add → commit. How to read git status and git diff to see exactly what changed. How to write commit messages that your future self and teammates will thank you f...
Lesson: Branches, Merges & Conflicts
What you'll learn What a branch really is (a cheap, movable pointer — not a copy of your files). How to create and switch branches with git branch and git switch. How to combine work with git merge, and the difference between a fast-forward and a merge commit...
Lesson: Working with Gitea
What you'll learn What a remote is, and how your local repo and a server repo stay in sync. How to clone, and how to wire up an existing local repo with git remote add. The push/fetch/pull cycle, and what a tracking branch is. How to push your Module 3 script...
Assignment 1: Version your Module 3 scripts on Gitea
Goal: Take the shell scripts you wrote in Module 3, turn their folder into a real Git repository with clean commit history, and publish it to the lab's Gitea server. Where: On your lab VM, in the folder holding your Module 3 scripts. The remote is the lab Gite...
Assignment 2: Branch, conflict, resolve, and open a PR
Goal: Practice the full collaboration loop — create a feature branch, deliberately cause a merge conflict, resolve it correctly, and land your change through a pull request on Gitea. Where: On your lab VM, in the module3-scripts repository you pushed in Assign...
Lesson: Web Server & Reverse Proxy
What you'll learn What a web server does and how Nginx fits into a typical app stack. How to install Nginx and serve a static website. How to write server blocks (virtual hosts) to host more than one site. How to put Nginx in front of an application as a reve...
Lesson: MySQL/MariaDB & PostgreSQL
What you'll learn What a relational database (RDBMS) is and the core vocabulary (table, row, SQL). How to install and connect to MySQL/MariaDB and PostgreSQL. How to create a database, a user, and grant that user access. The practical differences between MySQ...
Lesson: A Document Database
What you'll learn The difference between the document model and the relational (table) model. When a NoSQL document store is a good fit — and when it isn't. How to install MongoDB and connect with mongosh. Basic CRUD (Create, Read, Update, Delete) operations....
Lesson: Redis & Memcached
What you'll learn Why caching exists and how an in-memory cache speeds up an app. Redis core data types and common use cases (caching, sessions, queues). What Memcached is and how it differs. The trade-offs between Redis and Memcached so you can pick one. Bas...
Assignment 1: Stand up Nginx in front of an app database
Goal: Put the whole module together: create a properly isolated per-app database and user on a lab DB VM, then serve and reverse-proxy a small app through Nginx — the everyday "web tier + data tier" shape you'll meet constantly. Where: One Nginx host of your c...
Assignment 2: Cache it — add Redis and measure the difference
Goal: Prove to yourself that caching is worth it. Take the app from Assignment 1, add Redis as a cache-aside layer, and measure the response time with and without the cache so you can talk about the result. Where: The same app/Nginx host from Assignment 1, plu...
Lesson: Images, Containers & Layers
What you'll learn Explain what a container is and how it differs from a virtual machine (VM). Tell the difference between an image (the blueprint) and a container (a running instance). Understand image layers and why they make containers small and fast. Conne...
Lesson: Two Engines, One Standard
What you'll learn Describe the daemon architecture of Docker and the daemonless architecture of Podman. Explain rootful vs rootless containers and why rootless is safer. Understand the OCI standard that lets images run on any compliant engine. Decide when you...
Lesson: How Containers Talk
What you'll learn Describe the three core Docker network modes: bridge, host, and none. Publish a container port to the host with -p and read the HOST:CONTAINER syntax correctly. Connect containers on a user-defined network so they reach each other by name (b...