Logo

Nextcloud auf dem Raspi Pi

Eine Anleitung für mich selbst, wie meine Nextcloud aufgesetzt wurde.

Installation des Headless-Images nach der Pi-Installations-Anleitung.

Setzen der Fallback-Static-IP:

sudo apt install dhspcd5
sudo nano /etc/dhcpcd.conf

Automatischer Shutdown um 22:00 Uhr:

sudo crontab -e
00 22 * * * sudo shutdown

System updaten:

sudo apt-get update
sudo apt-get upgrade

Installation mit Docker und Docker-compose

Festplatte auto-mounten:

mkdir ~/nextcloud
sudo nano /etc/fstab
/dev/sda1 /home/pi/nextcloud ext4 defaults,noatime 0 2

Docker installieren und einrichten:

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

Docker-Compose installieren:

sudo apt get install docker-compose

Damit Nextcloud gezogen werden kann musste man sich letztes mal bei Docker anmelden:

docker login

Anschließend die docker-config so anpassen, dass es auf dem Pi funktioniert:

nano ~/.docker/config.json

Der Link im auth muss “https://index.docker.io/v1/” sein.

Dann die nötigen Ordner erstellen:

mkdir nextcloud/nextcloud
mkdir nextcloud/apps
mkdir nextcloud/config
mkdir nextcloud/data
mkdir nextcloud/mariadb

Und dann das docker-compose.yml wie in der Doku des offiziellen Nextcloud-Containers erstellen:

version: '2'

volumes:
  nextcloud:~/nextcloud
  db:~/nextcloud/mariadb

services:
  db:
    image: mariadb:10.6
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud/nextcloud:/var/www/html
      - nextcloud/apps:/var/www/html/custom_apps
      - nextcloud/config:/var/www/html/config
      - nextcloud/data:/var/www/html/data
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

Anschließend mit docker-compose up -dstarten und für das beste hoffen.

Mit IP:port kann dann das Admin-Passwort gesetzt werden.

Um ssl mit lets encrypt einzurichten braucht es dieses nginx proxy automation repo. Die Installationsanleitung findet sich hier

Damit der Nextcloud-Container eingebunden wird muss das environment um die folgenden Variablen ergänzt werden:

      - VIRTUAL_HOST=your.domain.com
      - LETSENCRYPT_HOST=your.domain.com
      - LETSENCRYPT_EMAIL=your.email@your.domain.com
      - NEXTCLOUD_TRUSTED_DOMAINS=your.domain.com
      
networks:
    default:
       external:
         name: proxy

Anschließend muss das https-Protokoll überschrieben werden laut diesem Repo.

Abschließend muss vielleicht noch in config/config.php die Domäne als “trusted domain” eingetragen werden. Bosh - fertig.

Installation mit install-skript von nextcloudpi

Nextcloud-Installation nach Anleitung:

curl -sSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh | sudo bash

Wichtig! Zuerst init über Web-Präsenz(https://nextcloudpi.local/).

Bei Frage nach SQL-Nutzer: wegen SSH-Zugang muss Passwort für root gesetzt werden, dazu einfach mysql per sudo aufrufen und wie folgt Passwort setzen:

use nextcloud;
ALTER USER 'ncp'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
exit

Wenn nicht geklappt ncp-init:

sudo ncp-config
config
init

Dann hinzufügen der trusted domains.

Anschließend ssl-Zertifikat beantragen. http-Zugang muss freigeschaltet werden.

Dann festlegen dass apache nach mysql startet:

https://github.com/nextcloud/server/issues/22119

sudo nano /lib/systemd/system/apache2@.service
sudo nano /lib/systemd/system/apache2.service

After=mysql.service network.target remote-fs.target nss-lookup.targe

Abschließend noch data- und db-dir auf die Festplatte verschieben.

Hoffentlich läuft es dann.

Max Brede
KI-Projektmanager - FuE FH Kiel GmbH | Wissenschaftlicher Mitarbeiter CAU zu Kiel