Choose where Docker runs
Use your own laptop if you can. This is the recommended course route. No school server is being supplied. You do not need an issued host address, Unix account or server fingerprint to start. Paying for a VPS earns no extra marks.
You may use your own local environment, GitHub Codespaces, or a VPS from Hostinger, Netcup, Hetzner, AWS, Azure or IONOS. Choose one working environment and keep using it. Permission to choose a provider does not mean every plan or operating system has passed all the course's runtime tests.
Return to Start here · Setup checklist and commands
My recommendation
- Local first: Windows with Docker Desktop and optionally Ubuntu 24.04 on WSL2; macOS with Docker Desktop; Linux with Docker Engine. No rental bill, no remote login, and your files stay on your computer. Downloading images and using GitHub still require internet access.
- If your laptop cannot run Docker: try Codespaces within your personal allowance, or Azure for Students if eligible. Check the limits before starting.
- If you specifically want server administration practice: rent a small Ubuntu 24.04 x86_64 VPS. You own the account, access and bill. Netcup is the provider used for Badr's Hades reference machine; a different plan is not automatically the same tested environment.
For an Ubuntu VM/VPS, plan for 2 vCPU, 4 GiB RAM and 40 GiB disk minimum; 80 GiB disk is more comfortable. This is the course's planning baseline, not a provider performance guarantee. Leave additional memory and disk for your laptop's own operating system. The current course image locks target linux/amd64: ARM machines, including Apple silicon and ARM VPS offers, may require emulation. TD0 is a useful first check; it does not certify the later security and persistence labs.
Provider comparison
Official information checked on 25 September 2026. Prices, eligibility and regional capacity can change. “Free credit”, “free allowance”, “refund guarantee” and “free forever” are different offers. Check the final price including tax, storage, network and IP charges before confirming an order.
| Option | What is good | What to watch | Free status and course fit |
|---|---|---|---|
| Local + Docker Personal | Simplest default; no VPS bill; files and tools remain available between lessons. | Needs sufficient laptop resources; Desktop runs Linux containers through a VM; native host PID and permissions differ from a Linux server. | Docker Personal is free for students and educators. It provides Docker tools, not a free VPS. Docker Personal |
| GitHub Codespaces | Browser editor and terminal; useful on a weak or locked-down laptop; close to the Git repository. | Metered compute and retained storage; Docker/Compose must actually work in the chosen dev container; rebuilds can discard state outside the persistent workspace. Keep forwarded ports private. | Personal GitHub Free includes 120 core-hours and 15 GB-month storage per month: about 60 running hours on 2 cores. Not an always-on VPS. Billing |
| Netcup VPS | Full Linux control; suitable Ubuntu server model; familiar from Hades. | Inspect the exact SKU: x86 and ARM offers differ. Some contracts commit you for months; stopping the VM does not cancel the contract. Do not assume VPS has the same CPU/SLA terms as a Root Server. | Paid. No verified permanent free VPS offer. VPS catalogue |
| Hetzner Cloud | Straightforward Linux cloud servers; hourly billing with a monthly cap suits a bounded lab. | Stopped servers remain billable until deleted; public IPs and other resources can add cost. Choose x86, not an ARM CAX plan, for the closest course match. | Paid. No verified permanent free tier. Cloud · Billing |
| Hostinger VPS | Full root access and Ubuntu options; accessible management interface. | Promotional rates may require long prepayment and increase at renewal. The cheapest plan may miss the CPU baseline. Choose VPS, not shared website hosting. | Paid; a money-back period is not a free VPS tier. VPS |
| IONOS VPS | Linux VM with root access and a management console; suitable server category. | Check minimum resources, commitment, renewal and add-ons rather than only the headline offer. | Paid; no verified ongoing free VPS tier. VPS |
| AWS EC2 | Flexible Ubuntu VMs; useful exposure to a major cloud's network and identity controls. | More account/network/billing concepts than needed to learn Docker. A paid account can incur costs beyond credits; small free shapes may be too small. | Current new-customer Free Plan: $100 initial credit, up to $100 more through activities, at most 6 months or until credit runs out. This is not the old universal “12 months free EC2” promise. Current offer |
| Azure for Students | Eligible university students can use credit without a credit card; full Linux VM option. | Student verification, regional capacity and VM quotas apply. Compute, disks and network resources consume the budget. | $100 credit for 12 months, subject to eligibility; annual renewal while eligible is offered. Not an unlimited free VM. Student offer |
| Oracle Cloud Always Free | A genuine recurring free-compute offer from an established provider. | Capacity can be unavailable; idle instances may be reclaimed. AMD micro machines have only 1 GB RAM each. The larger free Ampere option is ARM, unlike the course lock. | Current official A1 allowance corresponds to 2 OCPUs / 12 GB RAM, within monthly limits. Interesting for experimentation, unreliable as the only classroom plan. Official limits |
| Google Cloud Free Tier | Established provider with a recurring eligible e2-micro allowance. | Restricted US regions and small resources; billing account required; usage outside limits can cost money. Its free 30 GB standard-disk allowance is below the course's 40 GiB planning baseline. | Genuine limited free tier; the separate new-customer trial is $300 for 90 days. Not a full-course free-server guarantee. Official limits |
There is no verified, universally available, permanent free x86 VPS at our full course baseline in this shortlist. Local is the dependable no-rental option. Azure student credit and Codespaces allowances are more useful beginner fallbacks than chasing an unknown “free VPS” vendor.
Can we trust the FlyWP list?
The FlyWP article is a commercial blog, useful for discovering names. It is not the authority for provider limits or course compatibility. For example, its Oracle 4 OCPU / 24 GB claim differs from the current official 2 OCPU / 12 GB allowance linked above. Also, Fly.io's current new-account offer is only 2 VM-hours or 7 days, not permanent free hosting: official trial.
An application platform that accepts a Docker image is not necessarily a machine where you can run the Docker daemon, inspect containers, manage networks, keep named volumes and perform recovery exercises. Check those capabilities before choosing. We do not need WordPress hosting or FlyWP's management product for this course.
What GitHub Classroom does — and does not do
- GitHub repository: stores your source files, commits and collaboration history.
- GitHub Classroom: helps Badr distribute a starter repository, associate work with a student/pair, and collect or review assignments. It is an administrative convenience, not a Docker requirement.
- GitHub Actions: runs the later automation pipeline.
- GHCR: stores the container images you publish from TD2 onward. Repository access does not automatically establish package access.
- Codespaces: optionally supplies the development computer in your browser.
If Badr sends a Classroom invitation, accept it: it creates your team's private project repository. If no invitation exists, use a normal private GitHub repository containing the course student starter, and give Badr and your partner access. Confirm the repository and team identifiers with Badr so submissions can be matched correctly. Do not upload the full instructor course bundle. There is no reason to wait for a Classroom invitation to complete TD0.
Existing scripts use the name CLASSROOM_REPOSITORY; it means the repository's short name, even when the repository was created without Classroom. It is not a credential. Later scripts still contain managed-host assumptions; changing that name alone does not make them portable.
GitHub's explanation of Classroom.
Get help
Ask on Discord remotely, or ask Badr on campus. Include your operating system, the exact command and the error. Never post tokens, passwords or private keys. For an optional paid server, use its provider support for account, invoice and recovery-console issues.