GitHub - ReinerNippes / nextcloud_on_docker - Portainer

Hallo Forum und ReinerNippes,

wenn ich folgende Anleitung verwende,

ist das Ergebnis dann auch in Portainer zu sehen?

Gibt es eine Anleitung um Nextcloud direkt mit Portainer zu installieren?

h ttps://www.youtube.com/watch?v=cSjT4OTYd14

Ist die Anleitung noch aktuell?

MfG
nc-kay

*wow - alles vergessen, mein erster Anlauf im August 2020

Für mich als noob: ** :nauseated_face: Das Playbook ist die Ansible-Automatisierungssprache. :nauseated_face:**

wenn du @Reiner_Nippes auch korrekt taggest, wird er dir vielleicht noch schneller antworten :wink: (einfach mal den legendären Klammeraffen vor dem Nick probieren)

1 Like

@Rainer_Nippes und Experten,

was halte Ihr von einem SWAG Container?

Sollte dieser Container die Installation nicht vereinfachen?

MfG
nc-kay

das ist - zumindest vom nick her - ein anderer. merke: rAiner != rEiner :wink:
aber hey, ich hab ihn schon für dich getagged. er wird bereits benachrichtigt…

@nc-kay wenn du diese ansicht meinst: ja.

eigentlich musst du nur hier dein docker-compose file einfügen.

oder du hast ein “howto setup nextcloud as container”. dort findest du die einzelnen “docker run” commandos, um container zu erzeugen und “zusammenzustöpseln”. und dann kannst du diese container über die oberfläche erzeugen.

grafik

beispiele für docker-compose findest du hier:

und docker-compose kann man auch als “howto setup nextcloud with docker” lesen. aus dem yaml werden ja auch nur die einzelnen docker run commandos gebaut.

1 Like

ja. tut er. tut es. also das image.

das linuxserver.io universum sieht im ganzen recht ordentlich aus.

link auf die etwas ausführlicher doku: SWAG setup - LinuxServer.io

ich würde nur empfehlen, wenn man die images von linuxserver.io einsetz, sollte man auch in diesem “universum” bleiben. oder ganz genau die unterschiede zu anderen images kennen. also nicht einfach das “offizielle” nextcloud image mit dem linuxserver.io image tauschen. heißt auch, mein playbook ist raus. ich müsste viele änderungen vornehmen.

1 Like

Als Lai empfinde ich das auch so, gut Dokumentiert ist es auch, so zusagen passend zu deinem GitHub Account. :slight_smile:

Wie sieht es mit dem Nextcloud Container aus?
Normalerweise stehe ich auf “direkt von Developer”, der Hauptcontainer von Nextcloud liegt bei hub.docker.com.

Wie kann ich den Unterschied hub.docker.com zu linuxserver.io herausfinden?

Das war auch mein Gedanke, mischen gibt meist Probleme.
Den SWAG Container emfinde ich als Interessant, fail2ban hat er auch.

Reiner_Nippes oder linuxserver.io, was ist für mich besser geeignet?

Mir fehlen die Beurteilungskriterien.
Wie erreiche ich eine größtmögliche Zuverlässigkeit?

Edit: Ansible
Wikipedia

Ansible ist ein Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern. Es kombiniert Softwareverteilung, Ad-hoc-Kommando-Ausführung und Konfigurationsmanagement.

@Reiner_Nippes
Welchen Vorteil habe ich als als noob von Ansible?

im grunde ähnlich. linuxserver.io hinkt ggf. immer ein/zwei tage/wochen mit dem update hinterher. und du musst hoffen, dass sie die config file aktuell halten. (musst du aber bei allen.)

die jeweiligen Dockerfiles auf github vergleichen. daraus ergeben sich die unterschiede in der erzeugung der images.

ich halte meine playbooks nicht unbedingt immer zeitnah auf dem letzten stand. ich müsste mit z.b. noch mal die nginx conf anschauen, ob ich da noch auf dem aktuellen stand der technik bin.

meine playbooks sind auch mehr für leute gedacht, die wissen was sie tun und sich das tippen sparen wollen.

ich würde erwarten, dass die linuxserver.io jungs ihre images/Dockerfile ständig warten.

es spart dir das tippen. es verhindert, dass du dich vertippst. und du kommst in kurzer zeit zu einem ziel. (betonung auf einem) laufende nextcloud. wenn du aus dem vollen linuxserver.io universum schöpfen willst und auch noch die ganzen anderen images nutzen willst, geht das prinzipiell auch mit erweiterungen mit meinem playbook. aber da würde ich auf’s original verweisen.
und wenn du in einem rutsch mal eben tausend nextclouds aufsetzen willst. würde ich dir meine playbooks empfehlen. oder du möchtest dir eine ci/cd pipeline bauen, weil du eigene apps entwickeln möchtest.

1 Like

Genau aus diesem Grund bin ich, hub.docker mit Nextcloud besser aufgehoben.
Hier gibt es Nextcloud direkt von GitHub, den Entwicklern.

@Reiner_Nippes
Was muss ich bei deiner Github Anleitung anpassen, damit ich das Volume auf einem Homeserver nutzen kann?

Warum hast Du deine Traefik Einbindung nicht in der Überschrift erwähnt?
Gibt es da einen Grund?

Wie kann ich erkennen ob ein Nginx bzw. ein Apache2 Webserver eingesetzt wird?

Gefunden: h ttps://github.com/ReinerNippes/nextcloud_on_docker/commit/418a621db08564874c1447e0305842b010011bbd

Line 18 - 24

docker_postgres_image:         10-alpine
docker_mysql_image:            latest
docker_nextcloud_image:        stable
docker_nginx_image:            stable-alpine
docker_nextcloud_image:        stable-fpm
docker_nginx_image:            stable
docker_adminer_image:          latest
docker_traefik_image:          latest
docker_watchtower_image:       latest

Werde ich abgefragt ob ich die Datenbank postgres oder myql nutzen möchte?

Wann sollte man was wählen z. B. nextcloud stable-alpine oder nextcloud stable-fpm?

Dein Github ist ganz schön komplex, es sah anfänglich so einfach aus.

So jetzt mal weiter nach Github

------------------------------------------------------

Debian System ready to install Nextcloud.

ansible 2.10.5
config file = None
configured module search path = [’/home/nc-kay/.ansible/plugins/modules’, ‘/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0]


*wow, die Anleitung rockt richtig

TASK [We are ready] *****************************************************************************************
Thursday 28 January 2021  19:33:46 +0100 (0:00:00.942)       0:11:41.436 ****** 
ok: [localhost] => 
  msg:
  - Your Nextcloud at https://nc-kay.dynv6.net is ready.
  - 'Login with user: admin and password: xxxxxxxxxxxxxxxxxx '
  - 'Other secrets you''ll find in the directory /opt/nextcloud/secrets '

TASK [We are ready] *****************************************************************************************
Thursday 28 January 2021  19:33:47 +0100 (0:00:00.036)       0:11:41.473 ****** 
skipping: [localhost]

TASK [We are ready] *****************************************************************************************
Thursday 28 January 2021  19:33:47 +0100 (0:00:00.030)       0:11:41.504 ****** 
skipping: [localhost]

PLAY RECAP **************************************************************************************************
localhost                  : ok=73   changed=46   unreachable=0    failed=0    skipped=30   rescued=0    ignored=0   

Thursday 28 January 2021  19:33:47 +0100 (0:00:00.031)       0:11:41.535 ****** 
=============================================================================== 
docker_container : Create the nextcloud container -------------------------------------------------- 217.73s
prep_docker : install docker ----------------------------------------------------------------------- 143.05s
docker_container : Create postgres container -------------------------------------------------------- 86.98s
nextcloud_config : first setup nextcloud ------------------------------------------------------------ 57.38s
docker_container : Create the traefik container ----------------------------------------------------- 46.33s
docker_container : Create redis container ----------------------------------------------------------- 22.24s
nextcloud_config : set nextcloud system config.php values ------------------------------------------- 20.22s
docker_container : Create the dockerproxy container ------------------------------------------------- 19.30s
docker_container : Create the nginx container ------------------------------------------------------- 15.55s
docker_container : Create watchtower container for auto update -------------------------------------- 13.20s
prep_os : install additional packages --------------------------------------------------------------- 12.61s
nextcloud_config : backup jobs, upgrade apps and database tuning ------------------------------------- 6.86s
docker_container : wait for nextcloud container to come up ------------------------------------------- 4.91s
prep_docker : install python3-docker ----------------------------------------------------------------- 3.86s
prep_ufw : Installing ufw package -------------------------------------------------------------------- 3.74s
prep_docker : add additional docker repo ------------------------------------------------------------- 2.04s
nextcloud_config : {{ item.state }} {{ item.name }} app ---------------------------------------------- 1.84s
prep_docker : add docker key ------------------------------------------------------------------------- 1.82s
prep_ufw : Configuring port/protocol/network rules --------------------------------------------------- 1.48s
nextcloud_config : run nextcloud cronjob once -------------------------------------------------------- 1.28s
kay@deb10:~/nextcloud_on_docker$ 
kay@deb10:~/nextcloud_on_docker$

Wie kann ich das System im internen Netzwerk erreichen?

 sudo docker ps
CONTAINER ID   IMAGE                                  COMMAND                  CREATED          STATUS                    PORTS                                      NAMES
13fb2b93c296   nginx:alpine                           "/docker-entrypoint.…"   21 minutes ago   Up 21 minutes             80/tcp                                     nginx
80a172e007f2   nextcloud:fpm-alpine                   "/entrypoint.sh php-…"   21 minutes ago   Up 21 minutes             9000/tcp                                   nextcloud
f983414b13d0   redis:alpine                           "docker-entrypoint.s…"   25 minutes ago   Up 25 minutes (healthy)   6379/tcp                                   redis
8ccbd5829004   postgres:11-alpine                     "docker-entrypoint.s…"   25 minutes ago   Up 25 minutes (healthy)   5432/tcp                                   nextcloud-db
57f1a4e9f613   traefik:latest                         "/entrypoint.sh trae…"   27 minutes ago   Up 27 minutes             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik
73a5855710c8   tecnativa/docker-socket-proxy:latest   "/docker-entrypoint.…"   28 minutes ago   Up 28 minutes             2375/tcp                                   dockerproxy
5493bea757b6   containrrr/watchtower:latest           "/watchtower --clean…"   28 minutes ago   Up 28 minutes             8080/tcp                                   watchtower

Gebe ich die intern IP vom System mit Port 80 oder Port 443 bekomme ich folgenden Fehler: 404 page not found

So sieht es aus:

Wie löse ich das Problem?

@Reiner_Nippes
Liegt das Problem an deinem Github, an den Docker Containern oder habe ich etwas falsch gemacht?

traefik routet nur anfragen, die an diese url gehen: Host(`{{ nextcloud_server_fqdn }}`) also hört er im default nur auf die fqdn, die du im inventory definiert hast. alles andere, auch wenn es für dich genauso aussieht, ist “page not found”.

man kann den “entry point” für traefik beliebig definieren:

 "Host(`example.com`) || (Host(`example.org`) && Path(`/traefik`))"

ich nutze die variable {{ nextcloud_server_fqdn }} aber auch noch an anderer stelle. (beim setup von nextcloud für desen config.php)

das jetzt irgendwie “einfach” im inventory abzubilden, hab’ ich noch keine idee. (ich könnte zwei variablen definieren. würde aber das inventory verkomplizieren.

wenn jemand aktuell seinen nextcloud unter verschiedenen url’s erreichen will, muss er die oben verlinkte zeile editieren. (und das playbook nochmal laufen lassen.) traefik doku dazu: Routers - Traefik

und ich muss das mal in die doku vom playbook schreiben…

1 Like

Muss ich jetzt komplett von Anfang an neu beginnen?

Wie löse ich mein Problem am schnellsten?
Ein wenig überfordert bin ich gerade.

Wie muss ich Line 36

      traefik.http.routers.nginx.rule: "Host(`{{ nextcloud_server_fqdn }}`)"

für meinen Fall anpassen, hast Du dein Beispiel für mich?

zeile 36 editieren. playbook nochmal laufen lassen.

traefik.http.routers.nginx.rule: "Host(`{{ nextcloud_server_fqdn }}`) || Host(`192.167.168.99`)"

hab’ ich aber so nie getestet. weil ich bisher immer nur auf cloud servern unterwegs war.

nö. das playbook ist idempotent. kann man so oft laufen lassen, wie man will. more-or-less.

 traefik.http.routers.nginx.rule: "Host(`{{ nextcloud_server_fqdn }}`)"

geändert in

traefik.http.routers.nginx.rule: "Host(`{{ nextcloud_server_fqdn }}`) || Host(`192.168.178.55`)"

nc-kay@deb10:~/nextcloud_on_docker$ sudo ./nextdocker.yml

ergibt, Teilabschnitt:

TASK [docker_container : generate admin passwd if nextcloud_db_passwd is empty] *************************************
Friday 29 January 2021  13:06:43 +0100 (0:00:00.053)       0:00:19.569 ********
fatal: [localhost]: FAILED! =>  
 msg: 'An unhandled exception occurred while running the lookup plugin ''password''. Error was a <class ''ansible.er
rors.AnsibleError''>, original message: Password lookup cannot get the lock in 7 seconds, abort...This may caused by
un-removed lockfileyou can manually remove it from controller machine at b''/opt/nextcloud/secrets/85a69ee3c935233f5d
885391fb4dcfdb544febad.ansible_lockfile'' and try again'                                                              

PLAY RECAP **********************************************************************************************************
localhost                  : ok=46   changed=2    unreachable=0    failed=1    skipped=5    rescued=0    ignored=0

Lösungsversuch:

sudo ./remove_all_container.sh 
sudo ./nextdocker.yml

Fehler 2:



TASK [docker_container : generate admin passwd if nextcloud_db_passwd is empty] *************************************
Friday 29 January 2021  13:20:06 +0100 (0:00:00.197)       0:01:40.956 ******** 
fatal: [localhost]: FAILED! => 
  msg: 'An unhandled exception occurred while running the lookup plugin ''password''. Error was a <class ''ansible.errors.AnsibleError''>, original message: Password lookup cannot get the lock in 7 seconds, abort...This may caused by un-removed lockfileyou can manually remove it from controller machine at b''/opt/nextcloud/secrets/85a69ee3c935233f5dww5391fb4dcfdb544febad.ansible_lockfile'' and try again'

PLAY RECAP **********************************************************************************************************
localhost                  : ok=46   changed=5    unreachable=0    failed=1    skipped=5    rescued=0    ignored=0

Wie löse ich das Problem?

Neuer Versuch, löschen von “85a69ee3c935233f5dww5391fb4dcfdb544febad.ansible_lockfile”

Gleicher Fehler, wer kann mir bitte helfen?

sudo ls -l /opt/nextcloud/secrets ?

btw: die container brauchst du nicht wegräumen. wenn das playbook feststellt, dass sich am container was geändert hat, wird er neu erzeugt.

 sudo ls -l /opt/nextcloud/secrets
insgesamt 12
-rwxr-xr-x 1 nc-kay  nc-kay   0 Jan 29 13:05 85a69ee3c935233f5d885391fb4dcfdb544febad.ansible_lockfile
-rw------- 1 root root 33 Jan 28 19:26 database_user_secret
-rw------- 1 root root 33 Jan 28 19:32 nextcloud_admin_secret
-rw------- 1 root root 33 Jan 28 19:27 redis_secret

Bei dir liest sich das immer so “easy”, bei mir gibt es dann immer irgendwas, was nicht paßt. :frowning:

hast du ./nextcloud.yml mal ohne sudo ausgeführt?

mir ist gerade nicht klar, warum diese datei als nc-kay angelegt wird.

Als user nc-kay:

./prepare_system.sh

https://nopaste.linux-dev.org/?1327669

./nextdocker.yml

https://nopaste.linux-dev.org/?1327671

Fehler Line 228

msg: 'An unhandled exception occurred while running the lookup plugin ''password''. Error was a <class ''ansible.errors.AnsibleError''>, original message: Password lookup cannot get the lock in 7 seconds, abort...This may caused by un-removed lockfileyou can manually remove it from controller machine at b''/opt/nextcloud/secrets/85a69ee3c935233f5d885391fb4dcfdb544febad.ansible_lockfile'' and try again'

.

ls -la

.

nc-kay@deb10:~/nextcloud_on_docker$ ls -la
insgesamt 72
drwxr-xr-x 7 nc-kay nc-kay  4096 Jan 29 15:50 .
drwxr-xr-x 8 nc-kay nc-kay  4096 Jan 29 15:50 ..
-rw-r--r-- 1 nc-kay nc-kay   295 Jan 28 19:11 ansible.cfg
drwxr-xr-x 3 nc-kay nc-kay  4096 Jan 28 19:11 docker
drwxr-xr-x 8 nc-kay nc-kay  4096 Jan 28 19:11 .git
-rw-r--r-- 1 nc-kay nc-kay    12 Jan 28 19:11 .gitattributes
-rw-r--r-- 1 nc-kay nc-kay    23 Jan 28 19:11 .gitignore
drwxr-xr-x 2 nc-kay nc-kay  4096 Jan 28 19:11 group_vars
-rw-r--r-- 1 nc-kay nc-kay  3116 Jan 28 19:21 inventory
-rw-r--r-- 1 nc-kay nc-kay  1057 Jan 28 19:11 LICENSE
-rwxr-xr-x 1 nc-kay nc-kay  1569 Jan 28 19:11 nextdocker.yml
-rwxr-xr-x 1 nc-kay nc-kay  5490 Jan 28 19:11 prepare_system.sh
-rw-r--r-- 1 nc-kay nc-kay 10806 Jan 28 19:11 README.md
drwxr-xr-x 8 nc-kay nc-kay  4096 Jan 28 19:11 roles
drwxr-xr-x 2 nc-kay nc-kay  4096 Jan 28 19:11 scripts
nc-kay@deb10:~/nextcloud_on_docker$

Kann es evtl. sein, dass die aktuellen Releasestände der Container mit deiner Lösung nicht kompatibel sind?

Da fehlt doch bei mir, es sieht jetzt so aus? ---->

sudo docker ps
CONTAINER ID   IMAGE                                  COMMAND                  CREATED          STATUS          PORTS                                      NAMES
c463fe83e7f8   traefik:latest                         "/entrypoint.sh trae…"   21 minutes ago   Up 21 minutes   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik
01af924d7049   tecnativa/docker-socket-proxy:latest   "/docker-entrypoint.…"   21 minutes ago   Up 21 minutes   2375/tcp                                   dockerproxy
db2367c3a952   containrrr/watchtower:latest           "/watchtower --clean…"   22 minutes ago   Up 22 minutes   8080/tcp                                   watchtower
d888a5c8bd97   portainer/portainer-ce                 "/portainer"             4 hours ago      Up 28 minutes   8000/tcp, 0.0.0.0:9000->9000/tcp           portainer-ce

4 Container + portainer

So sah es zuvor aus:

https://nopaste.linux-dev.org/?1327673

7 Container + (portainer wurde da noch nicht installiert)

Images:

sudo docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
tecnativa/docker-socket-proxy   latest    e419047c5d43   3 days ago    21.1MB
traefik                         latest    df9d6e95469d   9 days ago    95MB
containrrr/watchtower           latest    9f33b7c5cb35   2 weeks ago   15.8MB
portainer/portainer-ce          latest    980323c8eb3f   3 weeks ago   196MB

Da habe ich wohl etwas weggebastelt, wie nun am besten weiter?