Nextcloud AIO auf Proxmox & Ubuntu Server

In diesem Tutorial zeige ich dir, wie du Nextcloud All-in-One (AIO) auf einem Ubuntu Server innerhalb einer Proxmox VM einrichtest – mit Caddy als Reverse Proxy, Portainer zur Verwaltung und IcyBox/RAID als externem Speicher. Dieses Setup ist moderner, wartungsärmer und stabiler als ein klassisches manuelles Docker-Setup.

🤔 Was ist Nextcloud AIO?

Nextcloud AIO (All-in-One) ist ein offizielles Docker-Image von Nextcloud, das alle benötigten Komponenten in einem einzigen Container-Stack bündelt:

  • ✅ Nextcloud (PHP, Apache)
  • ✅ MariaDB (Datenbank)
  • ✅ Redis (Caching)
  • ✅ ClamAV (Antivirus)
  • ✅ Collabora Online (Office)
  • ✅ Talk (Videokonferenz)
  • ✅ Imaginary (Bildvorschau)
  • ✅ Fulltextsearch (Volltextsuche)

Der große Vorteil: Alle Komponenten sind aufeinander abgestimmt und getestet. Updates erfolgen mit einem einzigen Klick über die AIO-Weboberfläche.

🖥️ Was ist Proxmox?

Proxmox VE (Virtual Environment) ist eine kostenlose Open-Source-Virtualisierungsplattform. Sie ermöglicht es dir, mehrere virtuelle Maschinen (VMs) und Container auf einem einzigen physischen Server zu betreiben. Statt deinen Nextcloud-Server direkt auf der Hardware zu installieren, läuft er in einer isolierten VM – das hat viele Vorteile:

  • 🔒 Isolation: Probleme in der VM betreffen nicht das Host-System
  • 💾 Snapshots: VM-Zustand vor Updates einfrieren und bei Problemen wiederherstellen
  • 🔄 Flexibilität: VM einfach migrieren, klonen oder skalieren
  • 📊 Ressourcenverwaltung: CPU und RAM gezielt zuweisen

📋 Voraussetzungen

  • Proxmox VE installiert und erreichbar
  • Mindestens 4 CPU-Kerne und 6 GB RAM für die VM
  • Eine Domain oder DynDNS-Adresse (z.B. über Selfhost.de)
  • Port 80 und 443 im Router freigegeben
  • Optional: IcyBox mit zwei Festplatten für RAID1-Speicher

⚙️ Schritt 1: Ubuntu Server VM in Proxmox erstellen

Lade zuerst das Ubuntu Server ISO herunter und lade es in Proxmox hoch:

  1. Im Proxmox-Webinterface auf local → ISO Images → Download from URL klicken
  2. URL: https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
  3. Neue VM erstellen: Erstellen → VM

Empfohlene VM-Einstellungen:

Name:        nextcloud
OS:          Ubuntu 24.04 LTS
CPU:         4 Kerne
RAM:         6144 MB (6 GB)
Festplatte:  60 GB (SSD empfohlen)
Netzwerk:    VirtIO (DHCP oder feste IP)

Starte die VM und installiere Ubuntu Server. Wähle während der Installation OpenSSH Server aus – damit kannst du später per SSH auf die VM zugreifen.

⚙️ Schritt 2: Ubuntu Server vorbereiten

Verbinde dich per SSH mit der VM:

ssh deinbenutzer@IP-DER-VM

System aktualisieren:

sudo apt update && sudo apt upgrade -y

Docker installieren:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

⚙️ Schritt 3: Portainer installieren

Portainer ist eine grafische Oberfläche zur Verwaltung deiner Docker-Container – perfekt für Einsteiger die keine Lust auf die Kommandozeile haben.

docker volume create portainer_data

docker run -d \
  -p 8000:8000 \
  -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Portainer ist jetzt erreichbar unter: https://IP-DER-VM:9443

Lege beim ersten Start einen Admin-Benutzer an und wähle „Docker“ als Umgebung.

⚙️ Schritt 4: Caddy als Reverse Proxy installieren

Caddy übernimmt die SSL-Zertifikate automatisch und leitet den Traffic an Nextcloud weiter. Erstelle zuerst die benötigte Konfigurationsdatei:

sudo mkdir -p /etc/caddy
sudo nano /etc/caddy/Caddyfile

Füge folgende Konfiguration ein. Ersetze nextcloud.deine-domain.selfhost.co durch deine Domain und 192.168.178.XXX durch die lokale IP deiner Ubuntu-VM:

# Nextcloud
nextcloud.deine-domain.selfhost.co {

    # Komprimierung für bessere Performance
    encode zstd gzip

    # WICHTIG: Die lokale IP deiner Ubuntu-VM und Port 11000
    reverse_proxy 192.168.178.XXX:11000

    # Well-Known Redirects für CalDAV/CardDAV (iOS/Android Sync)
    redir /.well-known/carddav /remote.php/dav 301
    redir /.well-known/caldav  /remote.php/dav 301

    # Security Header
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    }
}

💡 Was macht diese Caddyfile?

  • encode zstd gzip → Komprimiert den Traffic für schnellere Ladezeiten
  • reverse_proxy 192.168.178.XXX:11000 → Leitet Anfragen an Nextcloud AIO weiter (Port 11000 = Apache intern)
  • redir /.well-known/... → Wichtig für CalDAV/CardDAV – iOS und Android Kalender/Kontakte Sync funktioniert damit korrekt
  • Strict-Transport-Security → Erzwingt HTTPS für maximale Sicherheit

Caddy via Docker starten – füge diesen Stack in Portainer ein:

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/caddy/Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    network_mode: host

volumes:
  caddy_data:
  caddy_config:

⚙️ Schritt 5: Nextcloud AIO installieren

Erstelle in Portainer einen neuen Stack namens „nextcloud-aio“ und füge folgenden Code ein. Passe die markierten Werte an deine Umgebung an:

version: "3.8"
services:
  nextcloud-aio-mastercontainer:
    image: nextcloud/all-in-one:latest
    init: true
    restart: always
    container_name: nextcloud-aio-mastercontainer
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - "80:80"
      - "8080:8080"
      - "443:443"
    environment:
      # 🔧 Deine Nextcloud-Domain (z.B. nextcloud.deine-domain.selfhost.co)
      - NEXTCLOUD_DOMAIN=nextcloud.DEINE-DOMAIN.selfhost.co

      # 🔧 Pfad wo Nextcloud-Daten gespeichert werden
      - NEXTCLOUD_DATADIR=/mnt/nextcloud_data

      # 🔧 Lokale IP deines Servers (z.B. 192.168.178.100)
      - NEXTCLOUD_TRUSTED_DOMAINS=192.168.178.XXX

      # ℹ️ Domain-Validierung überspringen (nützlich hinter Reverse Proxy)
      - SKIP_DOMAIN_VALIDATION=true

      # ℹ️ Port auf dem Apache intern läuft (nicht ändern wenn Caddy genutzt wird)
      - APACHE_PORT=11000

      # 🔧 Deine Zeitzone
      - TZ=Europe/Vienna

      # 🔧 Pfad zum externen Speicher (IcyBox/RAID) - optional, sonst Zeile löschen
      - NEXTCLOUD_MOUNT=/mnt/icybox

volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer

📝 Was musst du anpassen?

  • NEXTCLOUD_DOMAIN → Deine eigene Domain, z.B. nextcloud.meinname.selfhost.co
  • NEXTCLOUD_DATADIR → Pfad wo die Nextcloud-Daten liegen sollen, z.B. /mnt/nextcloud_data
  • NEXTCLOUD_TRUSTED_DOMAINS → Die lokale IP deines Servers, z.B. 192.168.178.100
  • TZ → Deine Zeitzone – für Österreich/Deutschland: Europe/Vienna oder Europe/Berlin
  • NEXTCLOUD_MOUNT → Nur nötig wenn du externen Speicher (IcyBox) nutzt, sonst Zeile löschen

Nach dem Deployment ist die AIO-Oberfläche erreichbar unter: https://IP-DER-VM:8080

⚙️ Schritt 6: Nextcloud AIO konfigurieren

  1. Öffne https://IP-DER-VM:8080 im Browser
  2. Notiere dir das angezeigte Passwort – du brauchst es zum Einloggen
  3. Gib deine Domain ein: nextcloud.deine-domain.selfhost.co
  4. Wähle die gewünschten optionalen Container (Collabora, Talk, ClamAV etc.)
  5. Klicke auf „Download and start containers“
  6. Warte bis alle Container grün sind – das dauert beim ersten Start 5–15 Minuten

Nach dem Start ist Nextcloud erreichbar unter deiner Domain: https://nextcloud.deine-domain.selfhost.co

⚙️ Schritt 7: IcyBox RAID1 als externen Speicher einbinden

Die IcyBox ist ein externes Festplattengehäuse das du per USB an deinen Proxmox-Host anschließt. Über Proxmox kannst du die Festplatten direkt an die VM durchreichen (USB-Passthrough).

In Proxmox die USB-Geräte der VM hinzufügen:

  1. VM auswählen → Hardware → Hinzufügen → USB-Gerät
  2. Beide IcyBox-Festplatten einzeln hinzufügen
  3. VM neu starten

In der Ubuntu VM das RAID1-Array erstellen:

# mdadm installieren
sudo apt install mdadm -y

# Festplatten anzeigen (merke dir die Bezeichnungen z.B. /dev/sdb und /dev/sdc)
sudo lsblk

# RAID1-Array erstellen
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# Dateisystem erstellen (erst wenn Status "clean")
cat /proc/mdstat
sudo mkfs.ext4 /dev/md0

# Array mounten
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1

# Automatisch beim Start mounten
echo '/dev/md0 /mnt/raid1 ext4 defaults,nofail 0 0' | sudo tee -a /etc/fstab

Den RAID-Speicher als externen Speicher in Nextcloud einbinden:

  1. In Nextcloud: Verwaltung → Externe Speicher
  2. Typ: Lokal
  3. Pfad: /mnt/raid1
  4. Speichern

🔄 Updates – der große Vorteil von AIO

Updates sind bei Nextcloud AIO denkbar einfach:

  1. AIO-Oberfläche öffnen: https://IP-DER-VM:8080
  2. Auf „Update all containers“ klicken
  3. Fertig – alle Komponenten werden automatisch aktualisiert

💡 Tipp: Erstelle vorher einen Proxmox-Snapshot der VM – so kannst du bei Problemen in Sekunden zurückrollen!

✅ Fazit

Nextcloud AIO auf Proxmox ist die modernste und wartungsärmste Art, eine eigene Cloud zu betreiben. Verglichen mit dem klassischen manuellen Docker-Setup spart man enorm viel Zeit bei Updates und Konfiguration – ohne dabei Kontrolle oder Flexibilität zu verlieren.

💡 Voraussetzungen für dieses Tutorial

Für dieses Tutorial empfehle ich zuerst die Grundlagen-Tutorials zu lesen, insbesondere die Einrichtung von Caddy und DynDNS.