Old Server Setup

#server #hardware

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| Mail

Weaknesses

  • 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.