Nextcloud Migration nach Docker, Startschwierigkeiten bei den Containern...

nicht ich

Benutzer
Mitglied seit
20. Dez 2013
Beiträge
91
Punkte für Reaktionen
1
Punkte
14
Hi,

ich möchte meine seit 8 Jahren direkt im DSM laufende Nextcloud (davor Owncloud) eigentlich in eine Dockerumgebung umziehen. Nur hapert es schon bei den ersten Schritten. Getrieben bin ich davon von dem relativ kastrierten Linux unter DSM wegzukommen und unabhängiger vom OS und schleppenden Updates von Synology zu werden. Oft genug werden benötigte Aliase (z.B. php=php74 zurück auf php=php56) oder Konfigs zurückgesetzt und die userdefined konfigs nicht sauber übernommen (gerade PHP), warum ich dann wieder tief im DSM rumpfuschen muss. Mit Hinblick auf DSM7 fürchte ich, wird es nicht besser. Als weg von der einen Frickelei zur nächsten.

Ich bin hierbei nach der Anleitung hier vorgegangen https://indibit.de/synology-docker-nextcloud-installieren/ und hier https://www.youtube.com/watch?v=a74C9X63yo4.
Mir ist bewusst, dass beide Anleitungen in Teilen unterschiedliche Konzepte verfolgen, aber keine bietet zu 100% was ich möchte.


In den Spoiler habe ich angepasste Konfig rot gefärbt.
{
"cap_add" : null,
"cap_drop" : null,
"cmd" : "mysqld",
"cpu_priority" : 50,
"devices" : null,
"enable_publish_all_ports" : false,
"enable_restart_policy" : false,
"enabled" : true,
"entrypoint_default" : "docker-entrypoint.sh",
"env_variables" : [
{
"key" : "PATH",
"value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key" : "GOSU_VERSION",
"value" : "1.13"
},
{
"key" : "MARIADB_MAJOR",
"value" : "10.6"
},
{
"key" : "MARIADB_VERSION",
"value" : "1:10.6.3+maria~focal"
},
{
"key" : "MYSQL_ROOT_PASSWORD",
"value" : ""

}
],
"exporting" : false,
"id" : "26ca743ba93cc579dcac678d45b1aba750658c8429cd3c9db5e7284d39e0f492",
"image" : "mariadb:latest",
"is_ddsm" : false,
"is_package" : false,
"links" : [],
"memory_limit" : 0,
"name" : "mariadb",
"network" : [
{
"driver" : "bridge",
"name" : "bridge"

}
],
"network_mode" : "bridge",
"port_bindings" : [
{
"container_port" : 3306,
"host_port" : 13306,
"type" : "tcp"

}
],
"privileged" : false,
"shortcut" : {
"enable_shortcut" : false
},
"use_host_network" : false,
"volume_bindings" : [
{
"host_volume_file" : "/docker/mariadb",
"mount_point" : "/var/lib/mysql",
"type" : "rw"

}
]
}
{
"cap_add" : null,
"cap_drop" : null,
"cmd" : "apache2-foreground",
"cpu_priority" : 50,
"devices" : null,
"enable_publish_all_ports" : false,
"enable_restart_policy" : true,
"enabled" : true,
"entrypoint_default" : "/entrypoint.sh",
"env_variables" : [
{
"key" : "PATH",
"value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key" : "PHPIZE_DEPS",
"value" : "autoconf \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c"
},
{
"key" : "PHP_INI_DIR",
"value" : "/usr/local/etc/php"
},
{
"key" : "APACHE_CONFDIR",
"value" : "/etc/apache2"
},
{
"key" : "APACHE_ENVVARS",
"value" : "/etc/apache2/envvars"
},
{
"key" : "PHP_EXTRA_BUILD_DEPS",
"value" : "apache2-dev"
},
{
"key" : "PHP_EXTRA_CONFIGURE_ARGS",
"value" : "--with-apxs2 --disable-cgi"
},
{
"key" : "PHP_CFLAGS",
"value" : "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
},
{
"key" : "PHP_CPPFLAGS",
"value" : "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
},
{
"key" : "PHP_LDFLAGS",
"value" : "-Wl,-O1 -pie"
},
{
"key" : "GPG_KEYS",
"value" : "42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312"
},
{
"key" : "PHP_VERSION",
"value" : "7.4.21"
},
{
"key" : "PHP_URL",
"value" : "https://www.php.net/distributions/php-7.4.21.tar.xz"
},
{
"key" : "PHP_ASC_URL",
"value" : "https://www.php.net/distributions/php-7.4.21.tar.xz.asc"
},
{
"key" : "PHP_SHA256",
"value" : "cf43384a7806241bc2ff22022619baa4abb9710f12ec1656d0173de992e32a90"
},
{
"key" : "PHP_MEMORY_LIMIT",
"value" : "512M"
},
{
"key" : "PHP_UPLOAD_LIMIT",
"value" : "512M"
},
{
"key" : "NEXTCLOUD_VERSION",
"value" : "22.0.0"
}
],
"exporting" : false,
"id" : "46a6d2d5ab02b7f1a9399dfb9845511d9ea2a7b4053840c51d26f9390b75cda2",
"image" : "nextcloud:latest",
"is_ddsm" : false,
"is_package" : false,
"links" : [
{
"alias" : "mariadb",
"link_container" : "mariadb"

}
],
"memory_limit" : 0,
"name" : "nextcloud",
"network" : [
{
"driver" : "bridge",
"name" : "bridge"

}
],
"network_mode" : "bridge",
"port_bindings" : [
{
"container_port" : 443,
"host_port" : 8443,
"type" : "tcp"
},
{
"container_port" : 80,
"host_port" : 8080,
"type" : "tcp"

}
],
"privileged" : false,
"shortcut" : {
"enable_shortcut" : false
},
"use_host_network" : false,
"volume_bindings" : [
{
"host_volume_file" : "/docker/nextcloud",
"mount_point" : "/var/www/html",
"type" : "rw"

}
]
}
{
"cap_add" : null,
"cap_drop" : null,
"cmd" : "apache2-foreground",
"cpu_priority" : 50,
"devices" : null,
"enable_publish_all_ports" : false,
"enable_restart_policy" : true,
"enabled" : true,
"entrypoint_default" : "/docker-entrypoint.sh",
"env_variables" : [
{
"key" : "PATH",
"value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key" : "PHPIZE_DEPS",
"value" : "autoconf \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c"
},
{
"key" : "PHP_INI_DIR",
"value" : "/usr/local/etc/php"
},
{
"key" : "APACHE_CONFDIR",
"value" : "/etc/apache2"
},
{
"key" : "APACHE_ENVVARS",
"value" : "/etc/apache2/envvars"
},
{
"key" : "PHP_EXTRA_BUILD_DEPS",
"value" : "apache2-dev"
},
{
"key" : "PHP_EXTRA_CONFIGURE_ARGS",
"value" : "--with-apxs2 --disable-cgi"
},
{
"key" : "PHP_CFLAGS",
"value" : "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
},
{
"key" : "PHP_CPPFLAGS",
"value" : "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
},
{
"key" : "PHP_LDFLAGS",
"value" : "-Wl,-O1 -pie"
},
{
"key" : "GPG_KEYS",
"value" : "42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312"
},
{
"key" : "PHP_VERSION",
"value" : "7.4.21"
},
{
"key" : "PHP_URL",
"value" : "https://www.php.net/distributions/php-7.4.21.tar.xz"
},
{
"key" : "PHP_ASC_URL",
"value" : "https://www.php.net/distributions/php-7.4.21.tar.xz.asc"
},
{
"key" : "PHP_SHA256",
"value" : "cf43384a7806241bc2ff22022619baa4abb9710f12ec1656d0173de992e32a90"
},
{
"key" : "MAX_EXECUTION_TIME",
"value" : "600"
},
{
"key" : "MEMORY_LIMIT",
"value" : "512M"
},
{
"key" : "UPLOAD_LIMIT",
"value" : "2048K"
},
{
"key" : "VERSION",
"value" : "5.1.1"
},
{
"key" : "SHA256",
"value" : "1964d7190223c11e89fa1b7970c618e3a3bae2e859f5f60383f64c3848ef6921"
},
{
"key" : "URL",
"value" : "https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.xz"
}
],
"exporting" : false,
"id" : "ac9adaa979227e775e04f8303ef968cf0373045394a9ab3cba0ad2b6fe5dfdbd",
"image" : "phpmyadmin:latest",
"is_ddsm" : false,
"is_package" : false,
"links" : [
{
"alias" : "mariadb",
"link_container" : "mariadb"

}
],
"memory_limit" : 0,
"name" : "phpmyadmin",
"network" : [
{
"driver" : "bridge",
"name" : "bridge"

}
],
"network_mode" : "bridge",
"port_bindings" : [
{
"container_port" : 80,
"host_port" : 10081,
"type" : "tcp"

}
],
"privileged" : false,
"shortcut" : {
"enable_shortcut" : false
},
"use_host_network" : false,
"volume_bindings" : [
{
"host_volume_file" : "/docker/phpmyadmin/config.inc.php",
"mount_point" : "/etc/phpmyadmin/config.inc.php",
"type" : "rw"

}
]
}

Ich habe bei beiden Containern (Nextcloud und PHPmyadmin) das Problem, dass die sich nicht mit der MariaDB verbinden können.
Die jeweilige Weboberfläche kann ich durch http://<lokale.ip>:10081 bzw http://<lokale.ip>:8080 erreichen.

1626356700671.png1626356840770.png

Bei beiden kommt letztlich immer der Fehler, dass die Anmeldung / Verbindung zur DB fehlschlägt.
Die Credentials stimmen jedoch. Bei Nextcloud wurde der DB ja so wie ich das verstehe mit "grant all privileges on nextcloud.* to 'nextcloud'@'%' identified by '<pw>';" der Zugriff mit "%" von überall erlaubt.

Bei Nextcloud hatte ich ursprünglich im Container keinen Link gesetzt, da ja die DB eigentlich durch <lokale.ip>:13306 innerhalb des LANs ja erreichbar sein sollte. Der aktuelle Link zum Container mariadb war nur ein weiterer erfolgloser Versuch das zum laufen zu kriegen.

Bei PHPmyadmin wurde ich im Internet bei vergleichbaren Fehlern auf das Volumne /docker/phpmyadmin/config.inc.php aufmerhsam und habe das der Konfig hinzugefügt. Machte aber keine Unterschied.

Eigentlich sollte ja durch das Bridging und das PAT unmöglich sein, dass sich die Dienste der bestehenden Instanz mit denen von Docker in die Quere kommen.

Kann mir jemand helfen, was ich hier falsch mache?

Die Themen Reverseproxy und Einbindung des Zertifikats wollte ich erst bei der Migration angehen.....
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.478
Punkte für Reaktionen
362
Punkte
103
In der jetzigen Form hat sowohl der "nextcloud" Container, als auch der "phpmyadmin" Container einen Link zum "mariadb" Container. Sowohl NC, als auch phpmyadmin sollten dank dem Link über den Containername bzw. Alias "mariadb" und dem Container-Port 3306 mit dem Datenbank-Container kommunizieren können.

Wenn Du ein eigenes Bridge Netzwerk über die UI anlegt und diese drei Container diesem Netzwerk zuordnest, dann kannst Du innerhalb des Netzwerks Service Discovery verwenden: es erlaubt von einem Container über den Containernamen eines anderen Container auf diesen zugreifen. Im Grunde ist es ein in das Netzwerk eingebautes DNS-Feature. Der Zugriff geht hier analog zum Link mittels Containernamen und Container-Port. Mit dem Weg wären die Links überflüssig und die Zugriffsnamen trotzdem identisch - Links sind "deprected" und werden irgendwann aus Docker entfernt.
 
  • Like
Reaktionen: nicht ich

nicht ich

Benutzer
Mitglied seit
20. Dez 2013
Beiträge
91
Punkte für Reaktionen
1
Punkte
14
Danke, dass mit den deprecated Links ist gut zu wissen, weil allenthalben davon in den Tuts Gebrauch gemacht wird. Dann lasse ich das weg.
Ich ging ja auch davon aus, dass das ohne laufen müsste. Dann setze ich das mal ohne Links auf.

Edit:
Auch wenn alles im gleichen "bridged network" hängt, scheint sich phpmyadmin nicht mit der DB verbinden zukönnen, wenn ich als PMA_HOST nur den Container Namen angebe. Wenn ich stattdessen die NAS IP + den PAT Port angebe, wie hier beschrieben komme ich immerhin soweit, dass die DB nicht nicht verbunden ist, sondern der Login von der IP aus dem Bridged Container Network (172.17.0.0) abgelehnt wird.
Jetzt muss ich also den DB-Usern noch den Zugriff/die Anmeldung aus 172.17.0.0/16 irgenwie erlauben....

Habe jetzt im Docker-Container Umgebung "BIND-ADDRESS | 0.0.0.0" mal testweise reingehauen. Half auch nicht.
In meinen Augen steht auch die FM im Widerspruch zu den Settings der DB, da sowohl nextcloud als auch root Zugriff von "%" haben....
1626419932924.png1626419839367.png

MariaDB-Container:
1626420401621.png
PHPmyadmin-Container:
1626420473476.png
 
Zuletzt bearbeitet:

nicht ich

Benutzer
Mitglied seit
20. Dez 2013
Beiträge
91
Punkte für Reaktionen
1
Punkte
14

nicht ich

Benutzer
Mitglied seit
20. Dez 2013
Beiträge
91
Punkte für Reaktionen
1
Punkte
14


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat