Hands-on, auto-graded exercises for Amigoscode courses: Linux, Vim, shell scripting, Git, Docker and SQL. Every exercise runs inside a disposable container, so destructive commands are safe, the environment is identical for everyone, and a script checks your work with instant ✅ / ❌ feedback.
The goal: take you from beginner to the practical, day-to-day skills a backend or DevOps engineer relies on.
Everything happens in one terminal app: browse the courses, read each lesson, open a real sandbox with one key, and get graded the moment you leave it. Your progress is tracked for you.
./academy.sh # macOS, Linux, WSL, Git Bash, GitHub Codespaces
academy.cmd # Windows (PowerShell or Command Prompt)Docker is the only thing you install. The first run builds the app (about a minute); after that it starts instantly.
- Pick a section - courses on the left, their sections on the right.
↑↓to move,→/enterto go in,←/escto go back.cjumps straight to where you left off. - Read the questions - every question of the section is listed at the top. Move
through them with
↑↓; the panel underneath shows the selected one in full, with its scenario and hints. - Press
enter- you drop into a fresh, disposable sandbox with the scenario already set up, and the questions are printed right there. Forgot one? Typequestions. Want to see how you're doing? Typecheck- it grades your work on the spot without leaving. Break anything you like (evenrm -rf) - it can't touch your machine. - Type
exitwhen you're done - your work is checked instantly. Each question turns ✔ or ✘, the cursor jumps to the first one still open, and a ✘ tells you exactly what is missing.
| Key | Does |
|---|---|
↑ ↓ |
move - between courses, sections, or questions |
→ / enter |
go in - and inside an exercise, open your sandbox |
← / esc |
go back |
v |
check your work again (it also runs when you exit the sandbox) |
check |
inside the sandbox: check your work without leaving |
questions |
inside the sandbox: print the questions again |
space |
tick off a drill you've practised (drills aren't auto-checked) |
l |
show the full lesson |
s |
show the solution - it asks you to try once more first |
n / p |
next / previous section |
? |
all keys |
Progress is saved to my-journey/progress.json - commit it to your
fork with your notes and it becomes part of your portfolio.
You'll keep your own copy of these exercises, and still be able to pull in new content whenever it's added.
Fork this repository →
this creates your-username/devops-exercises, which is yours to keep.
On your fork: Code → Codespaces → Create codespace on main.
Wait ~1-2 min while it provisions Docker and pre-builds the Academy (handled by the
included .devcontainer), then in the terminal:
./academy.shPrefer your own machine? Install Docker, then:
git clone https://github.com/YOUR-USERNAME/devops-exercises.git
cd devops-exercises
./academy.sh # Windows: academy.cmdWhen new courses or fixes are published, open your fork on GitHub and click
Sync fork → Update branch. Because your work lives in a git-ignored ~/sandbox,
updates merge cleanly - you never lose progress. New sections appear in the Academy
automatically.
The my-journey/ folder is yours - log notes, commands and
takeaways as you go, then commit and push to your fork. Over time it becomes a
public portfolio of your journey. It's never touched by upstream syncs,
so it stays conflict-free.
| # | Course | Status |
|---|---|---|
| 01 | Linux Fundamentals | ✅ 8 sections, fully tested |
| 02 | Vim | ✅ 3 sections, fully tested |
| 03 | Linux for Professionals | ✅ 5 sections, fully tested |
| 04 | Shell Scripting | ✅ 5 sections, fully tested |
| 05 | Git & GitHub Fundamentals | ✅ 4 sections, fully tested |
| 06 | Docker for Professionals | ✅ 6 sections + 3 capstones (full-stack, microservices, real-app review), fully tested |
| 07 | Up and Running with SQL and Databases | ✅ PostgreSQL, psql, databases and tables |
| 08 | SQL and Databases Fundamentals | ✅ queries, filtering, aggregates, joins |
| 09 | Advanced Databases | ✅ 10 sections: indexes, transactions, window functions, triggers, security |
| 10 | Database Design & Implementation | ✅ modelling, normalization, design exercises |
More courses (Git for Professionals, CI/CD, AWS) will be added with the same format.
- A disposable sandbox per section - a fresh Ubuntu container with the scenario
set up in
~/sandbox. The SQL courses add a real PostgreSQL server and open straight inpsql, connected to the section's database - no Linux needed. Save a query with\w 1.1.sql, type:checkto grade it (:questionsshows the questions again), and the grader runs it against an untouched copy of the data. The Docker course is the exception: Docker itself is the subject, so you rundockeragainst your own daemon and the grader inspects the real containers, images and volumes you created. - Three tiers per section: warm-up → core → a real-world challenge.
- Auto-graded: each section ships a
verify.shthat scores your work. - Solutions included: stuck? every section has a
solutions.md- but try first.
The Docker course also ships a standalone launcher (./course.sh / course.cmd) if
you'd rather type the commands yourself - see its README.
devops-exercises/
├── academy.sh / academy.cmd # ▶ start here: the terminal app for every course
├── academy/ # the Academy's source (Go + Charm), built in Docker
├── .devcontainer/ # Codespaces config (Docker-in-Docker, Academy pre-built)
├── my-journey/ # your notes & progress.json (commit to your fork)
├── 01-linux-fundamentals/ # a course (one folder per course)
│ ├── Dockerfile # the shared Ubuntu exercise image
│ └── NN-topic/ # each section: README, seed.sh, verify.sh, solutions.md
├── 02-vim/
├── ...
├── 06-docker/ # host-Docker course: runner.sh + course.sh launchers
└── 07-10 SQL courses # Ubuntu + PostgreSQL sandbox (Dockerfile per course)
Adding a course or section is just adding a folder in this shape - the Academy discovers it on the next launch.

