Zum Inhalt springen

Nextcloud/Installation/AIO: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
 
(58 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''{{BASEPAGENAME}}'''
'''Nextcloud/Installation/AIO''' - Nextcloud All In One Installation


== Beschreibung ==
== Beschreibung ==
; Docker
Voraussetzung für ''Nextcloud All In One'' ist eine funktionierende [[Docker/Installation#Standard_Debian_Installation|Docker-Installation]]


== Installation ==
== Installation ==


=== Vorbereitung ===


Redis erfordert die Aktivierung der Kernel-Funktion vm.overcommit_memory.
* Dazu muss die Datei ''/etc/sysctl.d/99-override.conf'' mit folgendem Inhalt erstellt werden:


2. Installieren Sie NC-AIO gemäß den Anweisungen unter https://nextcloud.com/blog/how-to-install-the-nextcloud-all-in-one-on-linux/.
<syntaxhighlight lang="ini" highlight="" copy line>
 
vm.overcommit_memory=1
 
</syntaxhighlight>
; Commands
1. Installieren Sie Docker gemäß den Anweisungen unter [[Docker/Installation#Standard_Debian_Installation|Anweisungen]].
 
2. Um Nextcloud in Docker zu laden und zu starten, wird der folgende Befehl verwendet


<syntaxhighlight lang="bash" copy line>
Änderungen übernehmen:
sudo docker run --sig-proxy=false --name nextcloud-aio-mastercontainer --restart always --publish 80:80 --publish 8080:8080 --publish 8443:8443 --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config
<syntaxhighlight lang="bash" highlight="1" copy line>
sudo sysctl --system
</syntaxhighlight>
</syntaxhighlight>
3. Next, you can open the AIO interface on https://localhost:8080 or https://the.servers.ip.address:8080.




; Why you should use an ip-address
=== Nextcloud Docker ===
:* It’s important to always use an ip-address if you access this port, and not a domain. Otherwise, you risk that HSTS might block access to it later!


* You need to accept the self-signed certificate. Then you should see this:
; Docker-Installation
Für die Arbeit mit Nextcloud AIO müssen die [[Docker/Installation#Installation_aus_dem_Debian-Repository|Docker-Pakete installiert]] sein


* Alternatively, if ports 80 and 8443 should be opened in your firewall/router and a domain is configured to point to your server, you can reach the AIO interface with a valid certificate using https://your-domain.com:8443.
; Nextcloud in Docker laden und starten
<syntaxhighlight lang="bash" highlight="1" copy line>
sudo docker run \
  --sig-proxy=false \
  --name nextcloud-aio-mastercontainer \
  --restart always \
  --publish 80:80 \
  --publish 8080:8080 \
  --publish 8443:8443 \
  --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  ghcr.io/nextcloud-releases/all-in-one:latest


* Click on “Open Nextcloud AIO login” and paste your password:
</syntaxhighlight>


* Then, you should see the AIO interface:
; Beschreibung
# Startet einen neuen Container aus einem Image
# Deaktiviert die Weiterleitung von Signalen (z. B. SIGINT/SIGTERM) vom Docker-Client an PID 1 im Container
# Vergibt einen eindeutigen Containernamen zur späteren Referenz
# Aktiviert die Neustart-Richtlinie „always“: Container wird nach Absturz oder Daemon-Neustart automatisch neu gestartet außer nach manuellem ''docker stop''
# Container: 80/TCP --> Host: 80/TCP 
# Container: 8080/TCP --> Host: 8080/TCP 
# Container: 8443/TCP --> Host: 8443/TCP
# Bindet ein benanntes Volume ein. Persistiert Konfiguration unter ''/mnt/docker-aio-config'' im Container. Volume wird automatisch erstellt, falls nicht vorhanden.
# Bindet den Docker-Daemon-Socket des Hosts im Container ein (read-only). Erlaubt dem AIO-Mastercontainer, über die Docker-API Host-Container zu erstellen/stoppen/konfigurieren. :ro verhindert das Modifizieren/Ersetzen der Socket-Datei, begrenzt jedoch nicht die API-Berechtigungen.
# Image-Referenz inkl. Tag. ''latest'' verwendet den jeweils neuesten Build


* Next, type in your public domain that you you’ve got before doing this guide. The interface should help you figure out the exact steps. (Set up DDNS for your domain to point to your public IP, port-forward at least ports 443/tcp, 3478/udp, and 3478/tcp to your Linux machine.)
=== AIO-Oberfläche ===
Als Nächstes kann die AIO-Oberfläche unter https://localhost:8080 oder https://<ip-address>:8080 geöffnet werden


* After you’ve set it up correctly, it should allow you to pass to the next step, where you can configure the wanted optional add-ons and the timezone, and click on “Start containers” to download and start them.
; Warum eine IP-Adresse verwendet werden sollte
: Beim Zugriff auf diesen Port sollte stets eine IP-Adresse und keine Domain verwendet werden. Andernfalls besteht das Risiko, dass HSTS den Zugriff später blockiert!


* At this point, you should see a spinner that will take a while depending on your internet speed. It should take around 10 minutes or more.
3.&nbsp;Das selbstsignierte Zertifikat muss akzeptiert werden. Anschließend sollte Folgendes angezeigt werden:
[[Datei:Aiosetup0.webp|600px|zentriert]]


* When all containers are downloaded and started, you will see this screen showing the containers still starting, which will do the first installation for you:
: Alternativ, wenn die Ports 80 und 8443 in der Firewall/im Router geöffnet sind und eine Domain auf den Server zeigt, kann die AIO-Oberfläche mit gültigem Zertifikat über https://your-domain.com:8443 erreicht werden.


* When everything is done, you should see this screen:
4.&nbsp;''Open Nextcloud AIO login'' anklicken und das Passwort einfügen:
[[Datei:Aiosetup1.webp|600px|zentriert]]


* Finally, you can now open your new Nextcloud instance and log in with the given admin credentials.
5.&nbsp;Anschließend sollte die AIO-Oberfläche angezeigt werden:
[[Datei:Aiosetup2.webp|600px|zentriert]]


* That’s it! Everything is set and ready for production.
6.&nbsp;Als Nächstes die zuvor ermittelte öffentliche Domain eingeben. Die Oberfläche hilft bei den konkreten Schritten. (DDNS für die Domain einrichten, sodass sie auf die öffentliche IP zeigt. Mindestens die Ports 443/tcp, 3478/udp und 3478/tcp zur Linux-Maschine weiterleiten.)


7.&nbsp;Nach korrekter Einrichtung sollte der nächste Schritt verfügbar sein: gewünschte optionale Add-ons und die Zeitzone konfigurieren und ''Start containers'' anklicken, um sie herunterzuladen und zu starten.
[[Datei:Aiosetup3.webp|600px|zentriert]]


8.&nbsp;An dieser Stelle wird ein Ladeindikator angezeigt. Die Dauer hängt von der Internetgeschwindigkeit ab und beträgt typischerweise etwa 10 Minuten oder mehr.
[[Datei:Aiosetup4.webp|600px|zentriert]]


== Backups ==
9.&nbsp;Sind alle Container heruntergeladen und gestartet, erscheint dieser Bildschirm mit noch startenden Containern. Die Erstinstallation wird automatisch durchgeführt:
[[Datei:Aiosetup5.webp|600px|zentriert]]


Backups werden mit der integrierten Backup-Funktion Nextcloud AIO auf Basis von BorgBackup erstellt.
10.&nbsp;Nach Abschluss sollte folgender Bildschirm erscheinen:
[[Datei:Aiosetup6.webp|600px|zentriert]]


11.&nbsp;Abschließend kann die neue Nextcloud-Instanz geöffnet und mit den bereitgestellten Admin-Zugangsdaten angemeldet werden.


* Um die Backups zu konfigurieren, müssen Sie einen Ordner für Backups erstellen, z. B. /mnt/backup
12.&nbsp;Fertig: Die Umgebung ist eingerichtet und produktionsbereit.


== Management ==
; Verwaltung
{|
|-
| AIO-Webpanel ||
|-
| Docker || Verwaltung von Containern über das Webpanel oder die Docker-CLI
|-
| Nextcloud OCC ||
|}


  sudo mkdir -p /mnt/backup
=== AIO-Weboberfläche ===
Der Master-Container stellt eine Web-Administrationsoberfläche auf Port 8080 bereit.
  https://<host_IP>:8080
Über die Oberfläche stehen Konfiguration, Start/Stop der Dienste, Updates und Backups zur Verfügung.


* Anschließend müssen Sie sich als Admin anmelden und den Pfad Settings > Overview > „Open Nextcloud AIO Interface” durchlaufen.
Für den Zugriff ist eine Anmeldung erforderlich.
* Auf dieser Seite finden Sie den Abschnitt „Backup and restore”.
Danach ist der Zugriff entweder direkt über Port 8080 oder über ''Settings'' > ''Overview'' > ''Open Nextcloud AIO Interface'' möglich.
* Hier können Sie das Verzeichnis für die Sicherung angeben und den Remote-Server für Backups festlegen.
* Geben Sie im Feld „Local backup directory“ „/mnt/backup“ ein und klicken Sie auf „Submit“. AIO erstellt selbstständig ein Borg-Repository unter dem Pfad /mnt/backup/borg.
*Das System erstellt automatisch ein 48-stelliges Passwort zur Verschlüsselung der Sicherung.


<pre>
=== Datenzugriff ===
Backup information
; Volumes anzeigen
This is your encryption password for backups: df38***
docker volume ls | grep nextcloud_aio


Please save this password in a safe place. You won't be able to restore from backup if you lose this password!
=== Container ===


All important data from your Nextcloud AIO instance such as the database, your files and the mastercontainer's configuration files, will be backed up.
==== list ====
Alle AIO-Container anzeigen
<syntaxhighlight lang="bash" highlight="1" copy line>
docker ps -a --filter "name=nextcloud-aio"
</syntaxhighlight>


The backup uses a tool called BorgBackup, a well-known server backup tool that efficiently backs up your files and encrypts them on the fly.
==== start ====
Nur den Master-Container starten (weitere Container werden über die Oberfläche gestartet)
<syntaxhighlight lang="bash" highlight="1" copy line>
docker start nextcloud-aio-mastercontainer
</syntaxhighlight>


By using this tool, backups are incremental, differential, compressed and encrypted – so only the first backup will take a while. Further backups should be fast as only changes are taken into account.
==== stop ====
Falls ein Stopp über die Oberfläche nicht möglich ist, können die Container per CLI gestoppt werden
<syntaxhighlight lang="bash" highlight="1" copy line>
docker ps -a --filter "name=nextcloud-aio"
</syntaxhighlight>


Backups will be created in the following directory on the host: /mnt/backup/borg
<syntaxhighlight lang="bash" highlight="1" copy line>
docker stop <id>
</syntaxhighlight>


Be aware that this solution does not backup files and folders that are mounted into Nextcloud using the external storage app, but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.
==== pause ====
Container können mit dem Befehl docker pause angehalten werden. Auf diese Weise werden die Prozesse innerhalb des Containers eingefroren.


For information about backup retention, see this.
<syntaxhighlight lang="bash" highlight="1" copy line>
docker pause <id>
</syntaxhighlight>


Daily backups can be enabled after the initial backup is done. Enabling this also allows you to enable an option to update all containers, Nextcloud, and its apps automatically.
==== logs ====
Zustand prüfen
<syntaxhighlight lang="bash" highlight="1" copy line>
docker logs -f nextcloud-aio-nextcloud
</syntaxhighlight>


For further documentation and options on this backup solution refer to this section and below.
=== OCC ===
</pre>
Zur Verwaltung von Nextcloud kann auch [[Nextcloud/occ|occ]] verwendet werden
<syntaxhighlight lang="bash" highlight="1" copy line>
docker exec -u www-data -it nextcloud-aio-nextcloud php occ <Befehl>
</syntaxhighlight>


* Jetzt ist in der AIO-Benutzeroberfläche die Schaltfläche „Create backup“ (Sicherung erstellen) verfügbar. Außerdem kann der Speicherort der Sicherungen über die Schaltfläche „Reset backup location“ (Speicherort der Sicherung zurücksetzen) geändert werden.
=== Apache-Konfiguration in Nextcloud AIO ändern ===
* Apache läuft in ''nextcloud-aio-apache'' und wird vom Master-Container verwaltet.
* Manuelle Änderungen innerhalb des Containers sind nicht persistent.  
* Anpassungen erfolgen über Umgebungsvariablen des Master-Containers bzw. vorlagerte Reverse-Proxys.


== fail2ban nextcloud install ==
==== Vorgehen ====
# In der Definition des Master-Containers erforderliche Umgebungsvariablen setzen
# Über die AIO-Oberfläche Stop containers ausführen
# Master-Container mit den neuen Variablen neu erstellen/neu starten ''docker compose up -d'' bzw. ''docker run''
# Container in der AIO-Oberfläche wieder starten


  sudo apt install fail2ban
==== Parameter ====
{| class="wikitable options big"
|-
! Parameter !! Beschreibung !! Beispiel
|-
| APACHE_PORT || Interner HTTP-Port des Apache-Containers (für Reverse-Proxy-Betrieb) || 11000
|-
| APACHE_IP_BINDING || IP, an die Apache bindet (z. B. nur Loopback oder alle Interfaces) || 127.0.0.1 / 0.0.0.0
|-
| PHP_UPLOAD_LIMIT || Max. Upload-Größe für PHP/Apache || 20G
|-
| NEXTCLOUD_MAX_TIME || PHP-/Webserver-Timeout (Sekunden) für lange Uploads || 3600
|-
| NEXTCLOUD_MEMORY_LIMIT || PHP-Speicherlimit pro Prozess || 1024M
|-
| APACHE_ADDITIONAL_NETWORK || Zusätzlichem Docker-Netz das Apache-Service hinzufügen (bei externem Proxy im anderen Netz) || frontend_net
|}


nano /etc/fail2ban/filter.d/nextcloud.conf
==== Hinweise ====
* Bei Bindings and Port Änderungen Neustart des Apache-Containers über den Master-Container sicherstellen
:* Container aus AIO stoppenMaster neu starten
:* Container neu erzeugen


<syntaxhighlight lang="yaml">
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:
      - 8080:8080
    environment:
      - SKIP_DOMAIN_VALIDATION=true
      - APACHE_PORT=11000
      - APACHE_IP_BINDING=0.0.0.0
      - NEXTCLOUD_DATADIR=/mnt/data/nextcloud
      - NEXTCLOUD_MOUNT=/mnt/data


 
volumes:
 
  nextcloud_aio_mastercontainer:
 
    name: nextcloud_aio_mastercontainer
 
</syntaxhighlight>
 
 
 
 
 
<noinclude>


== Anhang ==
== Anhang ==
Zeile 128: Zeile 233:
==== Weblinks ====
==== Weblinks ====


{{DEFAULTSORT:new}}
{{DISPLAYTITLE:new}}


[[Kategorie:new]]
[[Kategorie:Nextcloud/Installation]]
[[Kategorie:Docker]]


</noinclude>
</noinclude>

Aktuelle Version vom 17. Dezember 2025, 07:46 Uhr

Nextcloud/Installation/AIO - Nextcloud All In One Installation

Beschreibung

Docker

Voraussetzung für Nextcloud All In One ist eine funktionierende Docker-Installation

Installation

Vorbereitung

Redis erfordert die Aktivierung der Kernel-Funktion vm.overcommit_memory.

  • Dazu muss die Datei /etc/sysctl.d/99-override.conf mit folgendem Inhalt erstellt werden:
vm.overcommit_memory=1

Änderungen übernehmen:

sudo sysctl --system


Nextcloud Docker

Docker-Installation

Für die Arbeit mit Nextcloud AIO müssen die Docker-Pakete installiert sein

Nextcloud in Docker laden und starten
sudo docker run \
  --sig-proxy=false \
  --name nextcloud-aio-mastercontainer \
  --restart always \
  --publish 80:80 \
  --publish 8080:8080 \
  --publish 8443:8443 \
  --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  ghcr.io/nextcloud-releases/all-in-one:latest
Beschreibung
  1. Startet einen neuen Container aus einem Image
  2. Deaktiviert die Weiterleitung von Signalen (z. B. SIGINT/SIGTERM) vom Docker-Client an PID 1 im Container
  3. Vergibt einen eindeutigen Containernamen zur späteren Referenz
  4. Aktiviert die Neustart-Richtlinie „always“: Container wird nach Absturz oder Daemon-Neustart automatisch neu gestartet außer nach manuellem docker stop
  5. Container: 80/TCP --> Host: 80/TCP
  6. Container: 8080/TCP --> Host: 8080/TCP
  7. Container: 8443/TCP --> Host: 8443/TCP
  8. Bindet ein benanntes Volume ein. Persistiert Konfiguration unter /mnt/docker-aio-config im Container. Volume wird automatisch erstellt, falls nicht vorhanden.
  9. Bindet den Docker-Daemon-Socket des Hosts im Container ein (read-only). Erlaubt dem AIO-Mastercontainer, über die Docker-API Host-Container zu erstellen/stoppen/konfigurieren. :ro verhindert das Modifizieren/Ersetzen der Socket-Datei, begrenzt jedoch nicht die API-Berechtigungen.
  10. Image-Referenz inkl. Tag. latest verwendet den jeweils neuesten Build

AIO-Oberfläche

Als Nächstes kann die AIO-Oberfläche unter https://localhost:8080 oder https://<ip-address>:8080 geöffnet werden

Warum eine IP-Adresse verwendet werden sollte
Beim Zugriff auf diesen Port sollte stets eine IP-Adresse und keine Domain verwendet werden. Andernfalls besteht das Risiko, dass HSTS den Zugriff später blockiert!

3. Das selbstsignierte Zertifikat muss akzeptiert werden. Anschließend sollte Folgendes angezeigt werden:

Alternativ, wenn die Ports 80 und 8443 in der Firewall/im Router geöffnet sind und eine Domain auf den Server zeigt, kann die AIO-Oberfläche mit gültigem Zertifikat über https://your-domain.com:8443 erreicht werden.

4. Open Nextcloud AIO login anklicken und das Passwort einfügen:

5. Anschließend sollte die AIO-Oberfläche angezeigt werden:

6. Als Nächstes die zuvor ermittelte öffentliche Domain eingeben. Die Oberfläche hilft bei den konkreten Schritten. (DDNS für die Domain einrichten, sodass sie auf die öffentliche IP zeigt. Mindestens die Ports 443/tcp, 3478/udp und 3478/tcp zur Linux-Maschine weiterleiten.)

7. Nach korrekter Einrichtung sollte der nächste Schritt verfügbar sein: gewünschte optionale Add-ons und die Zeitzone konfigurieren und Start containers anklicken, um sie herunterzuladen und zu starten.

8. An dieser Stelle wird ein Ladeindikator angezeigt. Die Dauer hängt von der Internetgeschwindigkeit ab und beträgt typischerweise etwa 10 Minuten oder mehr.

9. Sind alle Container heruntergeladen und gestartet, erscheint dieser Bildschirm mit noch startenden Containern. Die Erstinstallation wird automatisch durchgeführt:

10. Nach Abschluss sollte folgender Bildschirm erscheinen:

11. Abschließend kann die neue Nextcloud-Instanz geöffnet und mit den bereitgestellten Admin-Zugangsdaten angemeldet werden.

12. Fertig: Die Umgebung ist eingerichtet und produktionsbereit.

Management

Verwaltung
AIO-Webpanel
Docker Verwaltung von Containern über das Webpanel oder die Docker-CLI
Nextcloud OCC

AIO-Weboberfläche

Der Master-Container stellt eine Web-Administrationsoberfläche auf Port 8080 bereit.

https://<host_IP>:8080

Über die Oberfläche stehen Konfiguration, Start/Stop der Dienste, Updates und Backups zur Verfügung.

Für den Zugriff ist eine Anmeldung erforderlich. Danach ist der Zugriff entweder direkt über Port 8080 oder über Settings > Overview > Open Nextcloud AIO Interface möglich.

Datenzugriff

Volumes anzeigen
docker volume ls | grep nextcloud_aio

Container

list

Alle AIO-Container anzeigen

docker ps -a --filter "name=nextcloud-aio"

start

Nur den Master-Container starten (weitere Container werden über die Oberfläche gestartet)

docker start nextcloud-aio-mastercontainer

stop

Falls ein Stopp über die Oberfläche nicht möglich ist, können die Container per CLI gestoppt werden

docker ps -a --filter "name=nextcloud-aio"
docker stop <id>

pause

Container können mit dem Befehl docker pause angehalten werden. Auf diese Weise werden die Prozesse innerhalb des Containers eingefroren.

docker pause <id>

logs

Zustand prüfen

docker logs -f nextcloud-aio-nextcloud

OCC

Zur Verwaltung von Nextcloud kann auch occ verwendet werden

docker exec -u www-data -it nextcloud-aio-nextcloud php occ <Befehl>

Apache-Konfiguration in Nextcloud AIO ändern

  • Apache läuft in nextcloud-aio-apache und wird vom Master-Container verwaltet.
  • Manuelle Änderungen innerhalb des Containers sind nicht persistent.
  • Anpassungen erfolgen über Umgebungsvariablen des Master-Containers bzw. vorlagerte Reverse-Proxys.

Vorgehen

  1. In der Definition des Master-Containers erforderliche Umgebungsvariablen setzen
  2. Über die AIO-Oberfläche Stop containers ausführen
  3. Master-Container mit den neuen Variablen neu erstellen/neu starten docker compose up -d bzw. docker run
  4. Container in der AIO-Oberfläche wieder starten

Parameter

Parameter Beschreibung Beispiel
APACHE_PORT Interner HTTP-Port des Apache-Containers (für Reverse-Proxy-Betrieb) 11000
APACHE_IP_BINDING IP, an die Apache bindet (z. B. nur Loopback oder alle Interfaces) 127.0.0.1 / 0.0.0.0
PHP_UPLOAD_LIMIT Max. Upload-Größe für PHP/Apache 20G
NEXTCLOUD_MAX_TIME PHP-/Webserver-Timeout (Sekunden) für lange Uploads 3600
NEXTCLOUD_MEMORY_LIMIT PHP-Speicherlimit pro Prozess 1024M
APACHE_ADDITIONAL_NETWORK Zusätzlichem Docker-Netz das Apache-Service hinzufügen (bei externem Proxy im anderen Netz) frontend_net

Hinweise

  • Bei Bindings and Port Änderungen Neustart des Apache-Containers über den Master-Container sicherstellen
  • Container aus AIO stoppenMaster neu starten
  • Container neu erzeugen
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:
      - 8080:8080
    environment:
      - SKIP_DOMAIN_VALIDATION=true
      - APACHE_PORT=11000
      - APACHE_IP_BINDING=0.0.0.0
      - NEXTCLOUD_DATADIR=/mnt/data/nextcloud
      - NEXTCLOUD_MOUNT=/mnt/data

volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer

Anhang

Siehe auch


Dokumentation

Links

Projekt

Weblinks