# Ubuntu Server Application Guides Step-by-step setup guides for a single Ubuntu 22.04/24.04 lab VM (example IP 192.168.86.139). Each guide has the same structure: server install and configuration, troubleshooting keyed to real error messages, a "Where to look" reference table, and client steps from a Mac. ## Suggested teaching order | # | Guide | Service | Depends on | |----|---------------------------|--------------------------------|---------------------| | 00 | (on the site, no PDF) | Install Ubuntu Desktop 26.04 LTS in VMware — video walkthrough | — | | — | (already done) | nginx web server | 00 | | 01 | 01-openssh.pdf | OpenSSH, SFTP, SCP | — | | 02 | 02-vsftpd-ftp.pdf | vsftpd FTP server | — | | 03 | 03-samba-smb.pdf | Samba SMB file sharing | — | | 04 | 04-nfs.pdf | NFS file sharing | — | | 05 | 05-bind9-dns.pdf | BIND9 DNS (lab.local zone) | — | | 06 | 06-dhcp-dnsmasq.pdf | DHCP on an isolated lab net | 05 (optional) | | 07 | 07-postfix-dovecot-mail.pdf | Postfix SMTP + Dovecot IMAP | 05 (MX record) | | 08 | 08-nextcloud-lemp.pdf | MariaDB, PHP-FPM, Nextcloud | nginx | | 09 | 09-squid-proxy.pdf | Squid forward proxy | — | | 10 | 10-openvpn.pdf | OpenVPN server + PKI | — | | 11 | 11-ollama-gemma4.pdf | Ollama local LLM (Gemma 4 E4B) | 8 GB RAM | | 12 | 12-claude-code.pdf | Claude Code CLI | paid account | | 13 | 13-docker.pdf | Docker + Compose (re-deploys 03, 08, 11) | all above | ## Port map for the finished VM | Port | Service | |-------------|--------------------| | 22/tcp | OpenSSH | | 21/tcp + 40000-50000 | vsftpd | | 445/tcp, 139/tcp, 137-138/udp | Samba | | 2049/tcp | NFS | | 53/tcp+udp | BIND9 | | 67/udp | dnsmasq DHCP (lab interface only) | | 25, 587, 143, 993/tcp | Postfix / Dovecot | | 80/tcp | nginx / Nextcloud | | 3128/tcp | Squid | | 1194/udp | OpenVPN | | 11434/tcp | Ollama | | 8080, 8081, 1445, 11435/tcp | Docker demo containers | ## Cross-guide exercises - **Three file-sharing protocols** (02, 03, 04): same file via FTP, SMB, NFS — compare auth, encryption, permissions. - **Names for everything** (05): once DNS is up, every service is reachable as *.lab.local. - **Cleartext vs encrypted** (01 + 02): Wireshark FTP vs SFTP. - **VPN bypasses the proxy** (09 + 10): proxy log goes quiet when the VPN is up. - **Hand-built vs container** (08 + 13): two Nextclouds side by side. - **Local vs hosted AI** (11 + 12): same question to Gemma 4 and Claude Code.