Context

This project was part of the ICT171 course (Murdoch University, 2025). The goal was to stand up a personal cloud server running Nextcloud on a VM (droplet), with a dedicated domain name and secure HTTPS access.

The repository is mostly Shell scripts, paired with documentation covering installation, networking and backups.

Technical approach

I provisioned an Ubuntu 22.04 VM with Docker and Docker Compose, then ran Nextcloud in containers. Configuration is driven by a single .env file holding the admin and database credentials.

On the networking side, I created a DNS A record pointing cloud.alex-abriel.com to the droplet's IP and confirmed it with dig and nslookup. A containerized Nginx reverse proxy listens on port 80, issues a 301 redirect to HTTPS, and exposes the ACME /.well-known/acme-challenge/ endpoint so Let's Encrypt can issue certificates. I also documented a backup script and wrote full documentation as a PDF.

What I took away

I ran a self-hosted deployment end to end: DNS, containerization, reverse proxy and TLS all fit together as one chain I can now assemble on my own.

Writing the documentation taught me to make the setup reproducible, something I now treat as inseparable from any serious deployment.