Skip to content

Move the labs onto a real VM, and give Macs a supported path - #3

Merged
flaviogoncalves merged 1 commit into
mainfrom
vm-labs-and-cloud-path
Aug 12, 2026
Merged

Move the labs onto a real VM, and give Macs a supported path#3
flaviogoncalves merged 1 commit into
mainfrom
vm-labs-and-cloud-path

Conversation

@flaviogoncalves

Copy link
Copy Markdown
Owner

What

The lab track moves off Docker onto a single Ubuntu 24.04 server the student keeps for the whole course. Adds lab-vm/ (provision.sh, the lab helper, the Asterisk configs, the appliance build scripts) and the nine rewritten labs.

The bug this fixes

Lab 0 sent Apple Silicon Mac users to lab0-build-machine-utm.mda file that was never written. It was the only dangling cross-reference in the lab set.

Lab 0 now has three paths, all ending at the same machine

A Import the ready-made OVA in VirtualBox
B Install Ubuntu yourself in VirtualBox, then provision.sh base
C Rent an Ubuntu 24.04 server from a cloud provider

Intel Macs take A or B unchanged — VirtualBox has a supported macOS/Intel build and the appliance is x86-64. Apple Silicon takes C: the macOS/Arm64 VirtualBox build is an unsupported developer preview, and there is no ARM appliance to import.

Path C covers droplet creation, the provider firewall (5060/udp and the RTP range restricted to the student's own address and the lab gateway; 8088-8089 for labs 6 and 7), creating the lab user, and destroying the server at the end so it stops billing.

Follow-on fixes so nothing else assumes VirtualBox

  • Lab 2 part I/II and lab 8 troubleshooting cover both the bridged adapter and the cloud firewall; the iptables-lockout row names the provider recovery console as well as the VirtualBox window
  • lab ip / lab status hints no longer name a VirtualBox-only setting
  • lab.env's security note claimed these teaching credentials sit on an unroutable host-only network. On Path C they do not — the note now says what actually protects them
  • lab/Dockerfile: fetch Asterisk from releases/, which keeps every point release, instead of the top-level directory that only holds the newest
  • .gitignore: exclude the 800 MB .ova (served from R2, checksum tracked), and stop the generic build/ rule hiding lab-vm/build/

Not verified

Path C has not been run end to end — no droplet was created. The DigitalOcean UI labels and the ~US$24/month figure are from knowledge, not a live check, and are worth one pass before print.

The lab track moves off Docker and onto a single Ubuntu 24.04 server the
student keeps for the whole course. Adds lab-vm/ (provision.sh, the `lab`
helper, the Asterisk configs and the appliance build scripts) and the nine
rewritten labs.

Lab 0 previously pointed Apple Silicon Mac users at lab0-build-machine-utm.md,
a file that was never written. Removed. Lab 0 now offers three paths that end
at the same machine:

  A  import the ready-made OVA in VirtualBox
  B  install Ubuntu yourself in VirtualBox, then run provision.sh base
  C  rent an Ubuntu 24.04 server from a cloud provider

Intel Macs take A or B unchanged. Apple Silicon takes C: VirtualBox's
macOS/Arm64 build is an unsupported developer preview and the appliance is
x86-64, so there is nothing to import. Path C covers droplet creation, the
provider firewall (5060/udp and the RTP range restricted to the student's own
address and the lab gateway, 8088-8089 for labs 6 and 7), creating the `lab`
user, and destroying the server at the end so it stops billing.

Follow-on fixes so nothing else assumes VirtualBox:
- lab 2 part I/II and lab 8 troubleshooting cover both the bridged adapter and
  the cloud firewall; the iptables lockout row names the provider's recovery
  console as well as the VirtualBox window
- `lab ip` and `lab status` hints no longer name a VirtualBox setting only
- lab.env's security note claimed these teaching credentials sit on an
  unroutable host-only network. On the cloud path they do not, and the note
  now says what actually protects them
- Dockerfile: fetch Asterisk from releases/, which keeps every point release,
  instead of the top-level directory that only holds the newest one
- .gitignore: exclude the 800 MB .ova (it is served from R2; the checksum is
  tracked), and stop the generic build/ rule from hiding lab-vm/build/
@flaviogoncalves
flaviogoncalves merged commit e4fc74b into main Aug 12, 2026
1 check passed
@flaviogoncalves
flaviogoncalves deleted the vm-labs-and-cloud-path branch August 12, 2026 00:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant