About This Project

Replaced commercial cloud storage with a fully self-hosted Nextcloud instance running on my own hardware — files, calendar, contacts and photo sync, under my own control.

What Was Built

  • Nextcloud in a Linux container on the Proxmox cluster, backed by NFS storage on the NAS
  • Apache, MariaDB, PHP and Redis installed and tuned directly, without Docker, for full control of the stack
  • HTTPS with a certificate from my own internal CA, HSTS enabled
  • Performance tuning: local object cache, Redis file locking, correct background job scheduling, and PHP memory and opcache tuning — every administrative warning resolved, not ignored

Security Decisions

  • Two-factor authentication (TOTP) enforced for all users
  • Password policy with minimum length and breach-database checking
  • No public exposure. The instance is reachable only through my WireGuard VPN — no port forwarding and no public reverse proxy. Convenience was traded for a much smaller attack surface
  • Email notifications configured over authenticated SMTP with an application-specific password

Data Migration

Migrated roughly 358 GB across nearly 58,000 files from a university OneDrive account using rclone over WebDAV. Because the source used redirected desktop folders, I used a copy-and-verify procedure rather than a move, then confirmed the result with a full checksum comparison — 57,914 files matched, with only excluded system junk files reported.

Operations

The instance is included in the nightly backup job, so it inherits the same 3-2-1 protection as the rest of the lab.

Skills Demonstrated

  • Linux service deployment
  • Web and database stack administration
  • Application hardening
  • MFA and access policy
  • Large-scale data migration and verification

Project Info

  • Category: Infrastructure
  • Year: 2026
  • Status: Completed

Technologies Used

Nextcloud Debian MariaDB Redis Apache PHP