Some things do not stick from reading.
One paragraph is enough to explain what chmod 600 means. And yet when you actually sit down in front of a server, your hands do not move. Where the file is, what the permissions look like right now, what you check with after changing them — that only stays with you if you type it yourself.
So I built it. https://labhub.hopto.org
What it is
A hands-on platform where you learn on a real Linux server, from the browser.
You open a course and press start, and a container dedicated to you is created immediately on a Kubernetes cluster. You attach to that container from a terminal inside the browser and work through the task. At each step you press the grade button, and the server inspects the actual state inside the container and tells you whether you passed. When the lab ends or the time limit runs out, the container disappears.
There is nothing to install. No virtual machine to build, no cloud account to open. A browser is all you need.
What is in it
| Learning paths | 12 |
| Courses | 73 |
| Labs | 261 · 2,058 steps |
| Quizzes | 303 · 1,876 questions |
| Theory | 319 lessons |
The learning paths break down like this.
- IT Fundamentals — computer architecture, operating systems, networking, database concepts
- Linux & Terminal Mastery — files and permissions, shell scripting, vim, tmux, incident response
- Container Mastery — Docker basics through image builds, namespaces and cgroups, container security
- Kubestronaut — the five certifications KCNA, KCSA, CKA, CKAD, CKS
- Golden Kubestronaut — every CNCF certification (PCA, ICA, CCA, CAPA, KCA, OTCA, CGOA, CNPA, CBA, LFCS)
- SRE / DevOps — CI/CD, IaC, observability, load testing, Git in practice
- FDE — debugging unfamiliar systems, handling customer data, finding causes in logs, incident communication
- Data & AI — SQL in practice, data pipelines, LLM engineering
- Platform Engineering — Ansible, Terraform, Helm, CRDs and operators, Istio, GitOps
- System Administration — package management, network diagnostics, SSH and transfer, virtualization, Slurm, RHEL
- Korean SI Practice — the SI process, Tomcat/nginx operations, enterprise authentication, EAI integration, DB operations
- Cloud Native — MSA, queues and async, Redis, S3 and SeaweedFS, Keycloak, LLM serving
How to use it
1. Log in. Start with a Google account, or just type a name and look around. With a name only, your record lives in that browser alone.
2. Pick a learning path. If you are not sure where to begin, start with IT Fundamentals. If your goal is specific (the CKA certification, say), go straight into that path.
3. Follow the modules in order. Each module is made of three kinds of lesson.
- Theory — lays the concept down first. It explains why the thing was designed the way it was
- Lab — you do it yourself in a dedicated container. Split into 7 to 8 steps
- Quiz — checks that it landed. Wrong answers come with an explanation of why they are wrong
4. Press the check button at each step. Pass and you get a small celebration; miss and you can open a hint. Hints do not hand you the whole answer, they tell you which command to reach for and for what reason.
5. Press the end button when you are done. The container is released immediately. Closing the window is fine too, it gets reclaimed automatically.
If you are looking for something, press Cmd+K or Ctrl+K from anywhere. Courses and labs come up by name.
Why this approach works
It looks at actual state, not at answer code
Most online coding education compares the code a learner submits against a reference answer. Which means someone who reached the same result by a different route gets marked wrong.
The grading scripts in LabHub run inside the container and check the actual state of the system. The step that asks you to create a /root/work directory, for example, is inspected like this.
[ -d /root/work ] && echo "work directory exists" \
|| { echo "/root/work directory is missing"; exit 1; }
Whether you made it with mkdir or with install -d does not matter. If the result is right, you pass. And when you fail, it tells you what the state is right now. Not "wrong" but "permissions are currently 644".
Nothing breaks when you fail
The lab container is fully isolated. Type rm -rf, wipe out system files, spin an infinite loop — only your own container dies. Start again next time and a clean environment comes up fresh.
This matters more in learning than it sounds. If you handle things gingerly because you are afraid of breaking them, you learn slowly. You have to be able to smash things.
Theory and labs sit next to each other
Read the concepts alone and they are gone in a few days; do the labs alone and your hands get used to something you do not understand. So every module keeps the same order: lay the theory down, move your hands through the lab, confirm with the quiz.
The theory is not a translated manual. The lesson on file descriptors, for instance, gets into this — if df says there is room but you cannot write, either inodes are exhausted or a deleted-but-still-open file is holding the space, and rebooting destroys the chance to recover it.
Progress stays visible
The course outline stays on the left while you study. Overall progress, a progress ring per module, a completion check on each lesson. No round trip out to a table of contents and back just to see how far you have come.
There are XP and levels, a study streak, and badges. Finish a course 100% and a certificate is issued, verifiable by number.
If you are studying for a certification
Kubernetes certifications are handled by two separate paths.
Kubestronaut is the title CNCF gives you for passing all five of KCNA, KCSA, CKA, CKAD, CKS. Golden Kubestronaut adds every CNCF certification plus LFCS on top of that.
For each certification the exam curriculum is split into modules, and in the labs you type real kubectl. A genuine Kubernetes control plane comes up inside the lab container, so creating API objects, tuning scheduling, verifying RBAC, and backing up and restoring etcd all actually work.
One thing written honestly. This environment has no real container runtime, so kubectl exec into a workload pod and reading genuine logs are not possible. That territory is covered by theory and quizzes instead of labs. What the exam asks on paper mostly sits in the part that does work, so preparation is not hurt, but it is better to know going in.
Pricing
Most of it is free right now.
- Free — most courses, 60-minute lab sessions, 1 lab at a time
- Pro (9,900 KRW a month) — resource-heavy courses (load testing, LLM serving), the AI lab assistant, session extensions, certificates
What went behind Pro was decided by resources, not revenue. The load testing and LLM serving labs use far more CPU and memory than the rest. Each account gets one 7-day trial.
The reason it can be this cheap is simple. It runs on seven servers sitting in my home. There is no cloud bill, and the marginal cost is electricity. Set against overseas paid platforms at 30,000 to 40,000 KRW a month, that gap goes straight into the price.
Constraints worth knowing
Written without exaggeration.
- Only one lab can be open at a time. Lab containers are an expensive resource, so closing the window and forgetting about it is pure waste. To open a new lab you have to finish the existing one first.
- Sessions have a time limit. The remaining time shows on screen, and you can extend it when it gets short. Past the limit it is reclaimed automatically.
- Lab containers have no internet. Everything needed is baked into the image, and access is opened separately only for the labs that genuinely require it. This is for security.
- Some tools such as
tcpdumpdo not work. The kernel privileges packet capture needs are not granted. Network diagnostics are designed aroundss,dig, andgetent. - It is run by one person. There is no availability guarantee. If the internet at my house drops, the site is unreachable.
How it was built
How it was built technically — putting Kubernetes inside an unprivileged container, the five layers that isolate a lab pod, the traps stepped on along the way — is written up in a separate post.
Feedback welcome
There is a feedback button at the bottom right of the screen. After a lab finishes it sometimes asks for a star rating.
Something is wrong, a hint did not help, a course you wish existed — anything works. I am building this alone, so a report from someone who actually used it is the most accurate input there is.