[gelöst] Nextcloud mit Docker Compose und Ubuntu 20.04 als VPS Host System

Nextcloud AIO möchte ich zu Zeit nicht ausprobieren.

Edit: 16.02.2022 Nextcloud All In One Beta ist beta

So richtig mit Docker, von Hand installiert interessiert mich.
Das erlernte kann man auch mit anderen Docker Containern nutzen.

Das war auch ein Versuch von mir, Ansible mag zwar gut sein, jedoch mir zu Zeit zu kompliziert.
Standardlösungen fĂŒr AnfĂ€nger möchte ich.

Die Frage ist halt, ob du fĂŒr immer AnfĂ€nger bleiben möchtest :wink:

Du wirst bei einem Softwareprodukt wie Nextcloud, nicht darumherumkommen dich zumindest oberflĂ€chlich damit zu beschĂ€ftigen, wie die beteiligten Komponenenten funktionieren und zusammenspielen. Docker kann die Sache vereinfachen, weil es keine AbhĂ€ngigkeiten zum darunterliegenden System hat, ausser die Dockerkomponententen selbst. DafĂŒr musst du dich aber mit Docker selbst und seinen Eigenheiten beschĂ€ftigen. Und auch der Nextcloud Dockercontainer selbst hat seine Eigenheiten. Auch dort wirst du dranbleiben, Doku lesen und gegebenenfalls mal etwas anpassen mĂŒssen ĂŒber die Zeit. Eine komplette “Set it and forget it” Lösung gibt es bei einem Produkt wie Nextcloud einfach nicht. Appliances wie Nextclod AIO oder Nextcloud Pi kommen dem am nĂ€chsten, sind dann aber halt auch weniger flexibel.

1 Like

Zum weiteren ĂŒben habe ich natĂŒrlich meine Standardinstallation.

Wie hÀngen Docker Container Nextcloud, MariaDB und die Daten /daten voneinander ab?
Kann ich den Nextcloud Docker Container einzelnd austauschen?

Eine Docker Nextcloud Instanz mit "ohne MariaDB und mit Integrierten Daten kann ich erstellen.

Das habe ich auch gelesen. Dabei wurde es bei Nextcloud 23 groß angekĂŒndigt. Das Feature muss wahrscheinlich erst beim Kunden reifen.

https://nextcloud.com/blog/nextcloud-hub-2-brings-major-overhaul-introducing-nextcloud-office-p2p-backup-and-more/

— Frank Karlitschek, CEO Nextcloud GmbH

In other news, Nextcloud moves to decentralize the cloud, introducing an all-in-one docker based cloud image and a peer-to-peer backup solution for small installations. Learn more here.

1 Like

Naja das sind alles Community Projekte. Und Nextcloud AIO funktioniert zumindest. Und wenn das gepflegt wird, sehe ich kein Grund, wieso es auch nicht ĂŒber die Zeit funktionieren soll.

Die Backup App ist imho unbrauchbar im jetzigen Zustand und ich frage mich ernstahaft ob das nicht vielleicht ein konzeptionelles Problem ist, und ob das jemals zuvervelĂ€ssig und performant funktionieren kann. FĂŒr zuverlĂ€ssige tĂ€gliche Backups taugt es jedenfalls nicht, wenn man viele Daten hat, die man auf ein offsite Storage wie Backblaze backupen will und die Nextcloud dabei nicht die HĂ€lfte des Tages im Maintainance Mode sein soll. Ja ich ĂŒbrtreibe ein wenig. :wink: Trotzdem macht so eine App imho vorallem auf einem VPS Sinn und dort hat man in der Regel nicht nochmal mindestens gleich viel Speicher “lokal” ĂŒbrig, wie man Daten drauf hat.

Du kannst die Container unabhĂ€ngig updaten im Rahmen der ĂŒblichen KompatibilitĂ€ten (aktuell besser nicht höher als MariaDB 10.5 gehen). zB Nextcloud sehr oft und MariaDB nicht/selten. Speziel fĂŒr die backend Container wie DB ist der Druck diese aktuell zu halten nicht soo gross weil sie keinen Kontakt zu Aussenwelt, nciht mal zu host haben
 Die Inhalte der Container hĂ€ngen aber weiterhin zusammen, d.h. Daten und Datenbank passen zu einem bestimmten Zeitpunkt zusammen und mĂŒssen zusammen gesichert/wiederhergestellt werden, aber das ist nicht anders als bei jeder anderen Art der Installation (wobei mit NC23 und Backup App ist jetzt ein grosser Schritt getan Backups zu vereinfachen).

Ich habe viele positive Feebacks bzgl AiO gelesen und eine ausfĂŒhrliche Diskussion mit dem Author gehabt - es hat meine Meinung zu AiO deutlich verbessert - fĂŒr einen AnfĂ€nger oder einen Benutzer der “just works” sucht ist es eine super Sache. Wenn man mit dem Projekt wachsen möchte, die Technologien dahinter verstehen und etwas lernen ist es meiner Meinung nach nicht das richtige, weil (im Moment) kaum Anpassungen/Erweiterungen möglich sind. hier ist docker-compose (podman/k8s) deutlich im Vorteil.

Ich betreibe NC als docker-compose (vergleichbar mit dem referenzierten Tutorial) seit 1,5 Jahren. Habe in dieser Zeit 3 Major Updates, einen HW Wechsel und einen Restore â€œĂŒberlebt”. Die Anleitung ist auf den ersten Blick Ok, ich wĂŒrde noch eine vernĂŒnftige Backup Prozedur (getestet) dranbauen und dann sollte es laufen. Wie man sieht glaubt jeder an “seine” Technologie, fĂŒr mich ist Docker (oder generell Container) aktuell die beste Art ein System zu Hause zu betreiben (ab einer bestimmten User Anzahl kann es anders aussehen).

3 Likes

Ist dein Stand noch aktuell, der Bug in MariaDB 10.6 ist behoben?

Hast Du fĂŒr deinen Aufbau eine Dokumentation?

Damit meinst Du den Link von goneuland.de ?

Der Bug ist mit 10.6.7 behoben. Trotzdem muss man nicht jedes Major Release von MariaDB mitmachen. Jedes MariaDB Release erhĂ€lt fĂŒr 5 Jahre Security und Bugfixes. Solange die Software, die du nutzt nicht zwingend ein Feature in einer neueren Version benötigt, kannst du das entspannt angehen.

ach ja, 10.6 hatte den Bug.

10.6.6 um genau zu sein :wink:

Major Releases sind 10.5, 10.6 usw
 Security und Bugfix Releases sind 10.6.1, 10.6.2 etc


10.3 erhÀlt z.B. immer noch Updates und die aktuelle Version ist 10.3.34

https://endoflife.date/mariadb

https://mariadb.org/about/#maintenance-policy

1 Like

Worauf beziehst Du deine Empfehlung?

Aus den Empfehlungen der Entwickler

http s : / /docs. nextcloud. com/ server/latest/admin_manual/installation/system_requirements.html

MySQL 8.0+ or MariaDB 10.2/10.3/10.4/10.5 (recommended)

c-rieger nutzt “13. Februar 2022: Anpassung der Datenbankquellen (Mariadb 10.6.7+)”, das nur zur Info.

es war AFAIK kein bug in MariaDB, sondern ein Setting dass NC braucht und ab 10.6 nicht (per default) verfĂŒgbar ist
 Ich habe die Diskussionen verfolgt war aber zu faul den aktuellen Stand zu prĂŒfen

leider nichts was ich rausgeben kann. Ich habe schon lange vor meine Gedanken niederzuschreiben und zu veröffentlichen, habe es angefangen aber noch nicht abgeschlossen weil mein Ansatz eher ein unfangreiches “Buch” ist mit grundsĂ€tzlichen Ideen was man beim Design und Betrieb bedenken sollte statt einfach den aktuellen Status quo zu beschreiben
 gute Tutorials gibt’s wie Sand am Meer die meisten enden aber wenn man sich an der Cloud anmelden konnte - aber gerade als AnfĂ€nger weiss man nciht sofort was gut ist


finde ich super
 ich wĂŒrde sagen deckt sich zu 80% oder mehr mit meinem Design
 Punkt 6.2 sollte mit dem Apache Proxy nicht notwendig sein. Ich selbst verwende definierte Versionen z.B. image: mariadb:10.5.6 oder image: nextcloud:22.2 - damit weisst du was du bekommst auch wenn du in 3 Monaten deine Container schrottest und neu bauen musst (die sind immer noch ein wenig anders sollte aber vernachlĂ€ssigbar sein) - zumindest grosse VersionssprĂŒnge kommen nicht einfach so zustande weil du selbst oder ein Tool wie Watchtower Portainer oder so dachte es wĂ€re gut ein Update zu machen.

ansonsten starte damit und finde raus ob es gut fĂŒr dich ist, indem du es einige Tage mit Test-Daten nutzt. Aber bevor du mit Produktion startest probiere unbedingt aus was passiert wenn du deine Container und config brutal mit rm -rflöschst und ob dein Backup alle Daten und Einstellungen (zB Versionen, Calender und Kontakte) wieder her zaubert
 nachdem du das ausprobiert hast bist du ready und hast ein gutes GefĂŒhl.

1 Like

Ah ok. MariaDB selbst hatte eben kĂŒrzlich auch ein kritischen Bug, der sie dazu veranlasst hat 10.6.6 zurĂŒckzuziehen. Mit dem am Sonntag erscheinenen 10.6.7 Release wurde dieser Bug dann behoben.

@wwe
Tja mit der Doku ist immer so eine Sache, wenn ich
das Projekt hier weiter verfolgen, schaust Du hier ab und zu?
Dann hast Du die Doku und ich auch? :slight_smile:

ich bin fast tÀglich da
 kannst mich auch per PM anschreiben. hier noch ein Tipp was helfen kann:

image

ich habe bei mir 2 komplett unabhĂ€ngige Nextclouds am laufen - eine verwende ich um neue Versionen zu testen oder etwas potentiell destruktives (oder auch Backup/Restore ĂŒben). collabora ist geshared - dann hat man das Monster nur einmal am Laufen


1 Like

Die Backup sieht ja vielversprechend aus.
Eigentlich genau das, was mir immer fehlte.

@wwe
Die Diagramm gefÀllt mir, super.
Wobei dein System nach High_End aussieht mit Coturn und Collabora.

Ein kleiner feiner pi-hole ist auch dabei. :slight_smile:

Wo hast Du dein /data, deine Daten?
Warum hast Du die nicht auf einer extra HDD, evtl. sogar auf einem extra Raid-HDD-System?

MfG
nc-kay

Heute ist Freitag

Auf meinen neue VPS mit Ubuntu 20.04 kann ich per ssh zugreifen.

|Betriebssystem: |Linux 5.11.0-1028-oracle aarch64|
4 Arm-basierte Ampere A1-Kerne und 24 GB Speicher
cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"

ssh Terminal:

sudo apt
sudo apt dist-upgrade

Meine Vorlage:

Nextcloud Server – mit Docker Compose und Traefik installieren | goNeuland

sudo -s

Grundordner Anlegen:

mkdir -p /opt/containers/nextcloud/{database,app,daten}

Docker Compose anlegen:

cd /opt/containers/nextcloud/
nano docker-compose.yml
version: '3.3'
services:
  nextcloud-db:
    image: mariadb
    container_name: nextcloud-db
    command: --transaction-isolation=READ-COMMITTED --log-bin=ROW --innodb_read_only_compressed=OFF
    restart: unless-stopped
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /opt/containers/nextcloud/database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=test #SQL root Passwort eingeben
      - MYSQL_PASSWORD=test #SQL Benutzer Passwort eingeben
      - MYSQL_DATABASE=nextcloud #Datenbank Name
      - MYSQL_USER=nextcloud #SQL Nutzername
      - MYSQL_INITDB_SKIP_TZINFO=1
    networks:
      - default
  nextcloud-redis:
    image: redis:alpine
    container_name: nextcloud-redis
    hostname: nextcloud-redis
    networks:
        - default
    restart: unless-stopped
    command: redis-server --requirepass test # Redis Passwort eingeben
  nextcloud-app:
    image: nextcloud
    container_name: nextcloud-app
    restart: unless-stopped
    depends_on:
      - nextcloud-db
      - nextcloud-redis
    environment:
        REDIS_HOST: nextcloud-redis
        REDIS_HOST_PASSWORD: test # Redis Passwort von oben wieder eingeben
    volumes:
      - /opt/containers/nextcloud/app:/var/www/html
      - /opt/containers/nextcloud/daten:/var/www/html/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud-app.entrypoints=http"
      - "traefik.http.routers.nextcloud-app.rule=Host(`nextcloud.testbereich.net`)"
      - "traefik.http.middlewares.nextcloud-app-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nextcloud-app.middlewares=nextcloud-app-https-redirect"
      - "traefik.http.routers.nextcloud-app-secure.entrypoints=https"
      - "traefik.http.routers.nextcloud-app-secure.rule=Host(`nextcloud.testbereich.net`)"
      - "traefik.http.routers.nextcloud-app-secure.tls=true"
      - "traefik.http.routers.nextcloud-app-secure.tls.certresolver=http"
      - "traefik.http.routers.nextcloud-app-secure.service=nextcloud-app"
      - "traefik.http.services.nextcloud-app.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.nextcloud-app-secure.middlewares=nextcloud-dav,secHeaders@file"
      - "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav"
      - "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/"
    networks:
      - proxy
      - default
networks:
  proxy:
    external: true
  1. MySQL Root Passwort Àndern
    
  2. MySQL User Kennwort Àndern
    
  3. MySQL User fĂŒr Nextcloud Ă€ndern
    
  4. 2x eure Domain bei Traefik anpassen („nextcloud.euredomain.de“)
    

Hinweis goneuland:
Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese mĂŒsst ihr dann dementsprechend bei euch anpassen.

zuerst Docker & Docker Compose. installieren

Docker Repository einbinden

apt-get update
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common
# Docker GPG Key einbinden
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# Docker Repository einbinden
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Fehlermeldung, wenn ich Docker installieren möchte:

 Package 'docker-ce' has no installation candidate

https://r00t4bl3.com/post/how-to-install-docker-on-ubuntu-20-04-focal-fossa

apt install docker-ce
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package docker-ce is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  docker-ce-cli:amd64

E: Package 'docker-ce' has no installation candidate

Kommen die Problem evtl. von meiner CPU, Arm-basierter Prozessor?

Fehler gefunden:

add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \

Alle “amd64” zuvor habe ich auf “arm64” angepasst.

Dann:

apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done
Building dependency tree       
Reading state information... Done
containerd.io is already the newest version (1.4.12-1).
containerd.io set to manually installed.
docker-ce-cli is already the newest version (5:20.10.12~3-0~ubuntu-focal).
docker-ce-cli set to manually installed.
docker-ce is already the newest version (5:20.10.12~3-0~ubuntu-focal).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Mein Docker ist erfolgreich installiert

docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
93288797bd35: Pull complete 
Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Docker Release:

docker -v
Docker version 20.10.12, build e91ed57

oder in lang

docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:44:28 2021
 OS/Arch:           linux/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:05 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Jetzt fange ich klein an

https://hub.docker.com/_/nextcloud

Using the apache image

The apache image contains a webserver and exposes port 80. To start the container type:

$ docker run -d -p 8080:80 nextcloud

Now you can access Nextcloud at http://localhost:8080/ from your host system.

docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nextcloud     latest    46ca0e38ef08   2 weeks ago    917MB
hello-world   latest    18e5af790473   4 months ago   9.14kB

Gehe ich jetzt auf http:/IP-Adresse-vom-VPS:8080/ passiert leider nicht, nicht erreichbar.

Wie prĂŒfe ich jetzt, wo der Fehler liegen kann?

Erst mal den Nextcloud Docker Container starten, alles wieder vergessen, darin bin ich gut.

docker run nextcloud
Initializing nextcloud 23.0.1.2 ...
Initializing finished
New nextcloud instance
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Fri Feb 18 18:44:52.399869 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.52 (Debian) PHP/8.0.15 configured -- resuming normal operations
[Fri Feb 18 18:44:52.399930 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'


Doch nicht so einfach, ich muss Docker ĂŒben.

Oder wie komme ich weiter?

Erst mal das anschauen (evtl. andere Browser testen):

https://technology.amis.nl/oracle-cloud/run-always-free-docker-container-on-oracle-cloud-infrastructure/

keep calm, das habe ich bei meinen Installationen immer
 nicht jeder Fehler der auf der Console erscheint ist ein Problem. du musst einfach richtige Variablen fĂŒr OVERWRITE* setzen und alles ist gut


1 Like