Back to projects
Home Server / Self-Hosting

Nextcloud Setup Guide

Personal Project

Self-hosted cloud storage using Docker and an external SSD for Nextcloud data.

Year2024
RoleAuthor
FocusHome Server / Self-Hosting
Impact: Enabled private cloud storage with full data ownership and control.

Highlights

  • Docker-based deployment for easy maintenance and updates.
  • External SSD configuration for expandable storage.
  • Security hardening and backup strategies.

Guide

In diesem Guide wird Schritt für Schritt erklärt, wie du Nextcloud auf deinem Raspberry Pi 3 installierst und eine externe SSD als Cloudspeicher einrichtest.

Voraussetzungen

  • Externe Festplatte (SSD), die als Cloudspeicher dient
  • Raspberry Pi 3 mit Debian-basiertem Betriebssystem

SSD vorbereiten und einbinden

1. Überprüfen, ob die SSD erkannt wird

Bevor wir mit der Einrichtung beginnen, müssen wir sicherstellen, dass das System die SSD erkennt. Führe dazu folgenden Befehl aus:

bash
lsblk

Dieser Befehl zeigt alle angeschlossenen Laufwerke und Partitionen an. Die externe SSD sollte als /dev/sda oder ein ähnliches Gerät erscheinen.

2. Vorhandene Daten löschen und Festplatte formatieren

Falls sich noch alte Partitionen auf der SSD befinden, entfernen wir diese, um eine saubere Basis zu schaffen:

bash
sudo parted /dev/sda "rm 1"

Hiermit wird die erste Partition (falls vorhanden) von /dev/sda entfernt. Stelle sicher, dass du das richtige Laufwerk auswählst, um Datenverluste zu vermeiden.

3. GPT-Partitionsschema erstellen

Nun setzen wir das Partitionstabellenformat auf GPT (GUID Partition Table), da dieses besser für große Speichermedien geeignet ist:

bash
sudo parted /dev/sda "mklabel gpt"

GPT ist notwendig, um Partitionen über 2 TB anzulegen und bietet eine bessere Fehlertoleranz als das ältere MBR-Format.

4. Neue Partition über den gesamten Speicherplatz erstellen

Jetzt erstellen wir eine neue Partition, die den gesamten Speicherplatz der SSD nutzt:

bash
sudo parted /dev/sda "mkpart primary ext4 0% 100%"

Hier definieren wir die Partition als primary und setzen das Dateisystem auf ext4, da es gut für Linux-basierte Systeme geeignet ist.

5. Dateisystem auf der Partition erstellen

Um die Partition nutzbar zu machen, müssen wir ein Dateisystem darauf anlegen:

bash
sudo mkfs.ext4 /dev/sda1

ext4 ist ein weit verbreitetes Dateisystem für Linux und bietet eine gute Leistung sowie Zuverlässigkeit.


SSD mounten

1. Mount-Punkt erstellen

Damit das System auf die SSD zugreifen kann, erstellen wir einen Mount-Punkt:

bash
sudo mkdir -p /mnt/ssd

Dieser Ordner dient als Einhängepunkt für die SSD.

2. Partition mounten

Nun binden wir die SSD in das Dateisystem ein:

bash
sudo mount /dev/sda1 /mnt/ssd

3. Überprüfung des Mounts

Prüfen, ob das Laufwerk korrekt eingebunden wurde:

bash
df -h

4. UUID der Partition ermitteln

Die UUID (Universally Unique Identifier) wird benötigt, um das Laufwerk dauerhaft ins System einzubinden:

bash
blkid

5. Automatisches Mounten konfigurieren

Damit die SSD auch nach einem Neustart automatisch gemountet wird, fügen wir die Partition in die Datei /etc/fstab ein:

bash
sudo nano /etc/fstab

Füge folgende Zeile hinzu:

bash
PARTUUID=<id> /mnt/ssd ext4 defaults 0 1

Ersetze <id> mit der tatsächlichen PARTUUID aus dem blkid-Befehl.

6. Mounten der SSD testen

bash
sudo mount -a

7. Überprüfung der Einbindung

bash
df -Th

Nextcloud Installation mit Docker

1. Verzeichnisstruktur erstellen

Für die Nextcloud-Installation benötigen wir eine definierte Ordnerstruktur:

bash
mkdir nextcloud
mkdir nextcloud/nextcloud
mkdir nextcloud/apps
mkdir nextcloud/config
mkdir nextcloud/mariadb

Diese Ordner dienen dazu, die Nextcloud-Daten, Konfigurationen und Datenbank separat zu speichern.

2. Docker und Docker Compose installieren

Docker erleichtert die Verwaltung von Anwendungen. Installiere es mit:

bash
sudo apt install docker.io docker-compose -y

3. Cloud-Storage-Ordner auf der SSD erstellen

Wir benötigen einen Speicherort für die Nextcloud-Daten:

bash
sudo mkdir /mnt/cloud_storage/ncdata

4. Berechtigungen setzen

Damit Nextcloud auf den Speicher zugreifen kann, müssen wir die richtigen Rechte setzen:

bash
sudo chown -R www-data:www-data /mnt/cloud_storage/ncdata

Docker Compose Datei erstellen

Erstelle und öffne die docker-compose.yml Datei:

bash
nano docker-compose.yml

Inhalt der docker-compose.yml

yaml
version: '2'

services:
  mariadb:
    image: mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
    ports:
      - 9022:3306
    volumes:
      - /root/nextcloud/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=MeinSicheresPasswort
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=root

  nextcloud:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - mariadb:mysql
    volumes:
      - /root/nextcloud/nextcloud:/var/www/html
      - /root/nextcloud/apps:/var/www/html/custom_apps
      - /root/nextcloud/config:/var/www/html/config
      - /mnt/cloud_storage/ncdata:/var/www/html/data
    environment:
      - MYSQL_PASSWORD=MeinSicheresPasswort
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=root
      - MYSQL_HOST=mariadb

Nextcloud starten

Docker Compose ausführen

bash
sudo docker-compose up -d

Nach dem Start kannst du Nextcloud über die IP-Adresse deines Raspberry Pi im Browser aufrufen:

http://<RASPBERRY_PI_IP>:8080

Folge den Anweisungen zur Einrichtung und erstelle deinen Admin-Account.

Glückwunsch! Dein Nextcloud-Server ist jetzt eingerichtet und bereit zur Nutzung.

Contact meBack to projects
Nextcloud Setup Guide | Michael Kick