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 -d
starten 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.