Old Server Setup
This blog post describes how my server was configured before the server upgrade.
Server Specifications
- Intel Xeon E5-2630 v2 @ 2.60 GHz (6 cores / 12 threads)
- 32 GB DDR4 RAM
Storage
I used Proxmox 8.0.3 as the operating system, installed on a 500 GB HDD.
I am aware that using an HDD is far from ideal, but at the time of the setup it was the only available drive.
This disk contained both the Proxmox installation and all virtual machines.
For Nextcloud, I used a separate 1 TB SATA SSD.
This SSD contained the Nextcloud installation as well as all stored user data.
Backup
For backups, I used a 3 TB HDD configured as a ZFS pool.
This pool created a backup of my Nextcloud instance every Sunday night.
When a backup was successful, I received an email notification.
Internet Access
I own a domain and connected my Nextcloud server to the internet so that I could access it from anywhere.
I configured port forwarding on my router to forward port 80 and port 443 to the IP address of the Nextcloud virtual machine.
Security
I installed several security-related apps in Nextcloud, including:
- A brute-force protection app that detects brute-force attacks and automatically blocks access for a certain period of time if necessary
- A geo-blocking app that blocks login attempts from IP addresses outside of Germany, Switzerland, and France
Server Infrastructure Diagram
flowchart TB
subgraph Z0[Internet - Untrusted]
Clients[Clients - Browser and Mobile]
end
subgraph Z1[Edge - Perimeter]
Router[Router - Firewall - Ports 80 and 443]
DNS[DNS - Domain]
end
subgraph Z2[Home LAN - Trusted Network]
Proxmox[Proxmox Hypervisor - 500 GB HDD]
end
subgraph Z3[Workloads - VMs]
NextcloudVM[Nextcloud VM - 1 TB SSD]
OtherVMs[Other VMs]
end
subgraph Z4[Backup - Storage]
BackupPool[3 TB HDD - ZFS Backup Pool]
Mail[Email Notification - Success]
end
Clients -->|DNS lookup| DNS
Clients -->|HTTP and HTTPS - ports 80 and 443| Router
Router -->|NAT to VM IP - ports 80 and 443| Proxmox
Proxmox -->|Virtual network| NextcloudVM
Proxmox -->|Hosts and manages| NextcloudVM
Proxmox -->|Hosts and manages| OtherVMs
NextcloudVM -->|Weekly backup - Sunday night| BackupPool
BackupPool -->|Success notification| MailWeaknesses
- The Proxmox environment was very slow due to the use of an HDD.
- System data and user data on the Nextcloud server were not separated, so both had to be backed up together.
- There was only one backup, located on the same server. If the server had failed or suffered physical damage (e.g. fire), all data would have been lost.
- There were several security weaknesses, including:
- All virtual machines were part of my home network. If an attacker gained access to the WLAN, the entire server infrastructure would have been exposed.
- Weak passwords were used for the Nextcloud root user and other virtual machines.
- The Nextcloud installation was based on Snap, which limited access to PHP tools and customization.
- The server was very loud, making it unsuitable for a quiet environment.
Because of these weaknesses, upgrading the entire setup became inevitable.