Nextcloud Setup Guide
Personal Project
Self-hosted cloud storage using Docker and an external SSD for Nextcloud data.
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:
lsblkDieser 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:
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:
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:
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:
sudo mkfs.ext4 /dev/sda1ext4 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:
sudo mkdir -p /mnt/ssdDieser Ordner dient als Einhängepunkt für die SSD.
2. Partition mounten
Nun binden wir die SSD in das Dateisystem ein:
sudo mount /dev/sda1 /mnt/ssd3. Überprüfung des Mounts
Prüfen, ob das Laufwerk korrekt eingebunden wurde:
df -h4. UUID der Partition ermitteln
Die UUID (Universally Unique Identifier) wird benötigt, um das Laufwerk dauerhaft ins System einzubinden:
blkid5. Automatisches Mounten konfigurieren
Damit die SSD auch nach einem Neustart automatisch gemountet wird, fügen wir die Partition in die Datei /etc/fstab ein:
sudo nano /etc/fstabFüge folgende Zeile hinzu:
PARTUUID=<id> /mnt/ssd ext4 defaults 0 1Ersetze <id> mit der tatsächlichen PARTUUID aus dem blkid-Befehl.
6. Mounten der SSD testen
sudo mount -a7. Überprüfung der Einbindung
df -ThNextcloud Installation mit Docker
1. Verzeichnisstruktur erstellen
Für die Nextcloud-Installation benötigen wir eine definierte Ordnerstruktur:
mkdir nextcloud
mkdir nextcloud/nextcloud
mkdir nextcloud/apps
mkdir nextcloud/config
mkdir nextcloud/mariadbDiese 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:
sudo apt install docker.io docker-compose -y3. Cloud-Storage-Ordner auf der SSD erstellen
Wir benötigen einen Speicherort für die Nextcloud-Daten:
sudo mkdir /mnt/cloud_storage/ncdata4. Berechtigungen setzen
Damit Nextcloud auf den Speicher zugreifen kann, müssen wir die richtigen Rechte setzen:
sudo chown -R www-data:www-data /mnt/cloud_storage/ncdataDocker Compose Datei erstellen
Erstelle und öffne die docker-compose.yml Datei:
nano docker-compose.ymlInhalt der docker-compose.yml
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=mariadbNextcloud starten
Docker Compose ausführen
sudo docker-compose up -dNach 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.