fix(oci): write the Nextcloud MariaDB bootstrap as the application user

This commit is contained in:
MacRimi
2026-11-05 20:14:39 +01:00
parent ecd94b45ec
commit 795f77f76f
3 changed files with 15 additions and 10 deletions
+1 -1
View File
@@ -279,7 +279,7 @@
"entrypoint": [
"/bin/sh",
"-ec",
"(umask 077; printf %s PD9waHAKLy8gUHJlcGFyZSBhIGZyZXNoIExpbnV4U2VydmVyIE5leHRjbG91ZCB3aXRob3V0IHJlcGxhY2luZyBwZXJzaXN0ZW50IHVzZXIgc2V0dGluZ3MuCiRkaXIgPSAnL2NvbmZpZy93d3cvbmV4dGNsb3VkL2NvbmZpZyc7CnVtYXNrKDAwNzcpOwppZiAoIWlzX2RpcigkZGlyKSAmJiAhbWtkaXIoJGRpciwgMDc3MCwgdHJ1ZSkpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBjcmVhdGUgdGhlIE5leHRjbG91ZCBjb25maWcgZGlyZWN0b3J5Jyk7IH0KLy8gVGhlIGRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBhcHBsaWNhdGlvbiB1c2VyLiBDcmVhdGUgZWFjaCBmaWxlIHdpdGhvdXQKLy8gZm9sbG93aW5nIGEgbGluayBwbGFjZWQgdGhlcmUsIGFuZCBnaXZlIGl0IHRvIHRoYXQgdXNlciB3aXRob3V0IGZvbGxvd2luZyBvbmUuCmZ1bmN0aW9uIGNyZWF0ZV9wcml2YXRlKCRwYXRoLCAkY29udGVudCwgJG93bmVyKSB7CiAgICAkaGFuZGxlID0gQGZvcGVuKCRwYXRoLCAneCcpOwogICAgaWYgKCRoYW5kbGUgPT09IGZhbHNlIHx8IGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudCkgIT09IHN0cmxlbigkY29udGVudCkgfHwgIWZjbG9zZSgkaGFuZGxlKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9CiAgICBpZiAoJG93bmVyICYmICghbGNob3duKCRwYXRoLCBmaWxlb3duZXIoJG93bmVyKSkgfHwgIWxjaGdycCgkcGF0aCwgZmlsZWdyb3VwKCRvd25lcikpKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHNldCBOZXh0Y2xvdWQgY29uZmlndXJhdGlvbiBvd25lcnNoaXAnKTsgfQp9CmlmICghaXNfZmlsZSgkZGlyIC4gJy9jb25maWcucGhwJykgJiYgIWlzX2ZpbGUoJGRpciAuICcvYXV0b2NvbmZpZy5waHAnKSkgewogICAgZm9yZWFjaCAoWydNWVNRTF9IT1NUJywgJ01ZU1FMX0RBVEFCQVNFJywgJ01ZU1FMX1VTRVInLCAnTVlTUUxfUEFTU1dPUkQnLCAnTkVYVENMT1VEX0FETUlOX1BBU1NXT1JEJ10gYXMgJG5hbWUpIHsKICAgICAgICBpZiAoZ2V0ZW52KCRuYW1lKSA9PT0gZmFsc2UgfHwgZ2V0ZW52KCRuYW1lKSA9PT0gJycpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ01pc3NpbmcgTmV4dGNsb3VkIHNldHRpbmc6ICcgLiAkbmFtZSk7IH0KICAgIH0KICAgIC8vIEtlZXAgdGhlIGRlZmF1bHRzIHRoYXQgTGludXhTZXJ2ZXIgY29waWVzIG9ubHkgaW50byBhbiBlbXB0eSBjb25maWcgZGlyZWN0b3J5LgogICAgJGRlZmF1bHRzID0gJy9hcHAvd3d3L3NyYy9jb25maWcnOwogICAgaWYgKGlzX2RpcigkZGVmYXVsdHMpKSB7CiAgICAgICAgZm9yZWFjaCAobmV3IERpcmVjdG9yeUl0ZXJhdG9yKCRkZWZhdWx0cykgYXMgJGZpbGUpIHsKICAgICAgICAgICAgaWYgKCRmaWxlLT5pc0RvdCgpIHx8ICEkZmlsZS0+aXNGaWxlKCkpIHsgY29udGludWU7IH0KICAgICAgICAgICAgJHRhcmdldCA9ICRkaXIgLiAnLycgLiAkZmlsZS0+Z2V0RmlsZW5hbWUoKTsKICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdGFyZ2V0KSAmJiAhaXNfbGluaygkdGFyZ2V0KSkgeyBjcmVhdGVfcHJpdmF0ZSgkdGFyZ2V0LCBmaWxlX2dldF9jb250ZW50cygkZmlsZS0+Z2V0UGF0aG5hbWUoKSksIG51bGwpOyB9CiAgICAgICAgfQogICAgfQogICAgLy8gV2l0aCB0aGUgYWRtaW5pc3RyYXRvciBpbmNsdWRlZCwgTmV4dGNsb3VkIGluc3RhbGxzIGl0c2VsZiBvbiB0aGUgZmlyc3QKICAgIC8vIHJlcXVlc3QsIHNvIG5vYm9keSBlbHNlIG9uIHRoZSBuZXR3b3JrIGNhbiBjbGFpbSB0aGUgc2V0dXAgcGFnZS4KICAgICRzZXR0aW5ncyA9IFsnZGJ0eXBlJyA9PiAnbXlzcWwnLCAnZGJob3N0JyA9PiBnZXRlbnYoJ01ZU1FMX0hPU1QnKSwgJ2RibmFtZScgPT4gZ2V0ZW52KCdNWVNRTF9EQVRBQkFTRScpLCAnZGJ1c2VyJyA9PiBnZXRlbnYoJ01ZU1FMX1VTRVInKSwgJ2RicGFzcycgPT4gZ2V0ZW52KCdNWVNRTF9QQVNTV09SRCcpLCAnZGlyZWN0b3J5JyA9PiAnL2RhdGEnLCAnYWRtaW5sb2dpbicgPT4gJ2FkbWluJywgJ2FkbWlucGFzcycgPT4gZ2V0ZW52KCdORVhUQ0xPVURfQURNSU5fUEFTU1dPUkQnKV07CiAgICAvLyBFeGlzdGluZyBpbnN0YWxsYXRpb25zIHNraXAgTGludXhTZXJ2ZXIncyBmaXJzdC1ydW4gb3duZXJzaGlwIHNldHVwLgogICAgY3JlYXRlX3ByaXZhdGUoJGRpciAuICcvYXV0b2NvbmZpZy5waHAnLCAiPD9waHBcblwkQVVUT0NPTkZJRyA9ICIgLiB2YXJfZXhwb3J0KCRzZXR0aW5ncywgdHJ1ZSkgLiAiO1xuIiwgJGRpcik7Cn0KJHBhdGggPSAkZGlyIC4gJy9wcm94bWVudXgtcmVkaXMuY29uZmlnLnBocCc7Ci8vIEluc3RhbGxlZCBpbnN0YW5jZXMga2VlcCB0aGVpciBleGlzdGluZyBjYWNoZSBjb25maWd1cmF0aW9uIHVuY2hhbmdlZC4KaWYgKCFpc19maWxlKCRwYXRoKSAmJiAhaXNfbGluaygkcGF0aCkgJiYgIWlzX2ZpbGUoJGRpciAuICcvY29uZmlnLnBocCcpKSB7CiAgICAkc2V0dGluZ3MgPSBbJ2ZpbGVsb2NraW5nLmVuYWJsZWQnID0+IHRydWUsICdtZW1jYWNoZS5sb2NhbCcgPT4gJ1xPQ1xNZW1jYWNoZVxBUEN1JywgJ21lbWNhY2hlLmxvY2tpbmcnID0+ICdcT0NcTWVtY2FjaGVcUmVkaXMnLCAncmVkaXMnID0+IFsnaG9zdCcgPT4gJ3JlZGlzJywgJ3BvcnQnID0+IDYzNzksICd0aW1lb3V0JyA9PiAwLjBdXTsKICAgIGNyZWF0ZV9wcml2YXRlKCRwYXRoLCAiPD9waHBcblwkQ09ORklHID0gIiAuIHZhcl9leHBvcnQoJHNldHRpbmdzLCB0cnVlKSAuICI7XG4iLCAkZGlyKTsKfQo= | base64 -d | php); exec /init"
"(umask 077; printf %s PD9waHAKLy8gUHJlcGFyZSBhIGZyZXNoIExpbnV4U2VydmVyIE5leHRjbG91ZCB3aXRob3V0IHJlcGxhY2luZyBwZXJzaXN0ZW50IHVzZXIgc2V0dGluZ3MuCiRkaXIgPSAnL2NvbmZpZy93d3cvbmV4dGNsb3VkL2NvbmZpZyc7CnVtYXNrKDAwNzcpOwppZiAoIWlzX2RpcigkZGlyKSAmJiAhbWtkaXIoJGRpciwgMDc3MCwgdHJ1ZSkpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBjcmVhdGUgdGhlIE5leHRjbG91ZCBjb25maWcgZGlyZWN0b3J5Jyk7IH0KLy8gT25jZSB0aGUgZGlyZWN0b3J5IGJlbG9uZ3MgdG8gdGhlIGFwcGxpY2F0aW9uIHVzZXIsIG9ubHkgdGhhdCB1c2VyIGNvdWxkCi8vIGhhdmUgcGxhY2VkIGEgbGluayBpbiBpdDogd3JpdGUgYXMgdGhhdCB1c2VyLCBzbyBhIGxpbmsgcmVhY2hlcyBub3RoaW5nIHRoZQovLyBhcHBsaWNhdGlvbiBjb3VsZCBub3QgYWxyZWFkeSBjaGFuZ2UuIFBIUCBmb2xsb3dzIGxpbmtzIHdoZW4gaXQgb3BlbnMgYQovLyBwYXRoLCBzbyBhIGxpbmsgaW4gcGxhY2Ugb2YgYSBmaWxlIGlzIGFsc28gcmVmdXNlZC4KJG93bmVyID0gZmlsZW93bmVyKCRkaXIpOwppZiAocG9zaXhfZ2V0ZXVpZCgpID09PSAwICYmICRvd25lciAhPT0gMCkgewogICAgaWYgKCFwb3NpeF9zZXRnaWQoZmlsZWdyb3VwKCRkaXIpKSB8fCAhcG9zaXhfc2V0dWlkKCRvd25lcikpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzd2l0Y2ggdG8gdGhlIE5leHRjbG91ZCB1c2VyJyk7IH0KfQpmdW5jdGlvbiBjcmVhdGVfcHJpdmF0ZSgkcGF0aCwgJGNvbnRlbnQpIHsKICAgIGlmIChpc19saW5rKCRwYXRoKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUmVmdXNpbmcgYSBsaW5rIGluIHBsYWNlIG9mICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9CiAgICAkaGFuZGxlID0gQGZvcGVuKCRwYXRoLCAneCcpOwogICAgaWYgKCRoYW5kbGUgPT09IGZhbHNlIHx8IGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudCkgIT09IHN0cmxlbigkY29udGVudCkgfHwgIWZjbG9zZSgkaGFuZGxlKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9Cn0KaWYgKCFpc19maWxlKCRkaXIgLiAnL2NvbmZpZy5waHAnKSAmJiAhaXNfZmlsZSgkZGlyIC4gJy9hdXRvY29uZmlnLnBocCcpKSB7CiAgICBmb3JlYWNoIChbJ01ZU1FMX0hPU1QnLCAnTVlTUUxfREFUQUJBU0UnLCAnTVlTUUxfVVNFUicsICdNWVNRTF9QQVNTV09SRCcsICdORVhUQ0xPVURfQURNSU5fUEFTU1dPUkQnXSBhcyAkbmFtZSkgewogICAgICAgIGlmIChnZXRlbnYoJG5hbWUpID09PSBmYWxzZSB8fCBnZXRlbnYoJG5hbWUpID09PSAnJykgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignTWlzc2luZyBOZXh0Y2xvdWQgc2V0dGluZzogJyAuICRuYW1lKTsgfQogICAgfQogICAgLy8gS2VlcCB0aGUgZGVmYXVsdHMgdGhhdCBMaW51eFNlcnZlciBjb3BpZXMgb25seSBpbnRvIGFuIGVtcHR5IGNvbmZpZyBkaXJlY3RvcnkuCiAgICAkZGVmYXVsdHMgPSAnL2FwcC93d3cvc3JjL2NvbmZpZyc7CiAgICBpZiAoaXNfZGlyKCRkZWZhdWx0cykpIHsKICAgICAgICBmb3JlYWNoIChuZXcgRGlyZWN0b3J5SXRlcmF0b3IoJGRlZmF1bHRzKSBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoJGZpbGUtPmlzRG90KCkgfHwgISRmaWxlLT5pc0ZpbGUoKSkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAkdGFyZ2V0ID0gJGRpciAuICcvJyAuICRmaWxlLT5nZXRGaWxlbmFtZSgpOwogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCR0YXJnZXQpICYmICFpc19saW5rKCR0YXJnZXQpKSB7IGNyZWF0ZV9wcml2YXRlKCR0YXJnZXQsIGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlLT5nZXRQYXRobmFtZSgpKSk7IH0KICAgICAgICB9CiAgICB9CiAgICAvLyBXaXRoIHRoZSBhZG1pbmlzdHJhdG9yIGluY2x1ZGVkLCBOZXh0Y2xvdWQgaW5zdGFsbHMgaXRzZWxmIG9uIHRoZSBmaXJzdAogICAgLy8gcmVxdWVzdCwgc28gbm9ib2R5IGVsc2Ugb24gdGhlIG5ldHdvcmsgY2FuIGNsYWltIHRoZSBzZXR1cCBwYWdlLgogICAgJHNldHRpbmdzID0gWydkYnR5cGUnID0+ICdteXNxbCcsICdkYmhvc3QnID0+IGdldGVudignTVlTUUxfSE9TVCcpLCAnZGJuYW1lJyA9PiBnZXRlbnYoJ01ZU1FMX0RBVEFCQVNFJyksICdkYnVzZXInID0+IGdldGVudignTVlTUUxfVVNFUicpLCAnZGJwYXNzJyA9PiBnZXRlbnYoJ01ZU1FMX1BBU1NXT1JEJyksICdkaXJlY3RvcnknID0+ICcvZGF0YScsICdhZG1pbmxvZ2luJyA9PiAnYWRtaW4nLCAnYWRtaW5wYXNzJyA9PiBnZXRlbnYoJ05FWFRDTE9VRF9BRE1JTl9QQVNTV09SRCcpXTsKICAgIGNyZWF0ZV9wcml2YXRlKCRkaXIgLiAnL2F1dG9jb25maWcucGhwJywgIjw/cGhwXG5cJEFVVE9DT05GSUcgPSAiIC4gdmFyX2V4cG9ydCgkc2V0dGluZ3MsIHRydWUpIC4gIjtcbiIpOwp9CiRwYXRoID0gJGRpciAuICcvcHJveG1lbnV4LXJlZGlzLmNvbmZpZy5waHAnOwovLyBJbnN0YWxsZWQgaW5zdGFuY2VzIGtlZXAgdGhlaXIgZXhpc3RpbmcgY2FjaGUgY29uZmlndXJhdGlvbiB1bmNoYW5nZWQuCmlmICghaXNfZmlsZSgkcGF0aCkgJiYgIWlzX2xpbmsoJHBhdGgpICYmICFpc19maWxlKCRkaXIgLiAnL2NvbmZpZy5waHAnKSkgewogICAgJHNldHRpbmdzID0gWydmaWxlbG9ja2luZy5lbmFibGVkJyA9PiB0cnVlLCAnbWVtY2FjaGUubG9jYWwnID0+ICdcT0NcTWVtY2FjaGVcQVBDdScsICdtZW1jYWNoZS5sb2NraW5nJyA9PiAnXE9DXE1lbWNhY2hlXFJlZGlzJywgJ3JlZGlzJyA9PiBbJ2hvc3QnID0+ICdyZWRpcycsICdwb3J0JyA9PiA2Mzc5LCAndGltZW91dCcgPT4gMC4wXV07CiAgICBjcmVhdGVfcHJpdmF0ZSgkcGF0aCwgIjw/cGhwXG5cJENPTkZJRyA9ICIgLiB2YXJfZXhwb3J0KCRzZXR0aW5ncywgdHJ1ZSkgLiAiO1xuIik7Cn0K | base64 -d | php); exec /init"
],
"environment": {
"PUID": "${PUID}",
+1 -1
View File
@@ -279,7 +279,7 @@
"entrypoint": [
"/bin/sh",
"-ec",
"(umask 077; printf %s PD9waHAKLy8gUHJlcGFyZSBhIGZyZXNoIExpbnV4U2VydmVyIE5leHRjbG91ZCB3aXRob3V0IHJlcGxhY2luZyBwZXJzaXN0ZW50IHVzZXIgc2V0dGluZ3MuCiRkaXIgPSAnL2NvbmZpZy93d3cvbmV4dGNsb3VkL2NvbmZpZyc7CnVtYXNrKDAwNzcpOwppZiAoIWlzX2RpcigkZGlyKSAmJiAhbWtkaXIoJGRpciwgMDc3MCwgdHJ1ZSkpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBjcmVhdGUgdGhlIE5leHRjbG91ZCBjb25maWcgZGlyZWN0b3J5Jyk7IH0KLy8gVGhlIGRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBhcHBsaWNhdGlvbiB1c2VyLiBDcmVhdGUgZWFjaCBmaWxlIHdpdGhvdXQKLy8gZm9sbG93aW5nIGEgbGluayBwbGFjZWQgdGhlcmUsIGFuZCBnaXZlIGl0IHRvIHRoYXQgdXNlciB3aXRob3V0IGZvbGxvd2luZyBvbmUuCmZ1bmN0aW9uIGNyZWF0ZV9wcml2YXRlKCRwYXRoLCAkY29udGVudCwgJG93bmVyKSB7CiAgICAkaGFuZGxlID0gQGZvcGVuKCRwYXRoLCAneCcpOwogICAgaWYgKCRoYW5kbGUgPT09IGZhbHNlIHx8IGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudCkgIT09IHN0cmxlbigkY29udGVudCkgfHwgIWZjbG9zZSgkaGFuZGxlKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9CiAgICBpZiAoJG93bmVyICYmICghbGNob3duKCRwYXRoLCBmaWxlb3duZXIoJG93bmVyKSkgfHwgIWxjaGdycCgkcGF0aCwgZmlsZWdyb3VwKCRvd25lcikpKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHNldCBOZXh0Y2xvdWQgY29uZmlndXJhdGlvbiBvd25lcnNoaXAnKTsgfQp9CmlmICghaXNfZmlsZSgkZGlyIC4gJy9jb25maWcucGhwJykgJiYgIWlzX2ZpbGUoJGRpciAuICcvYXV0b2NvbmZpZy5waHAnKSkgewogICAgZm9yZWFjaCAoWydNWVNRTF9IT1NUJywgJ01ZU1FMX0RBVEFCQVNFJywgJ01ZU1FMX1VTRVInLCAnTVlTUUxfUEFTU1dPUkQnLCAnTkVYVENMT1VEX0FETUlOX1BBU1NXT1JEJ10gYXMgJG5hbWUpIHsKICAgICAgICBpZiAoZ2V0ZW52KCRuYW1lKSA9PT0gZmFsc2UgfHwgZ2V0ZW52KCRuYW1lKSA9PT0gJycpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ01pc3NpbmcgTmV4dGNsb3VkIHNldHRpbmc6ICcgLiAkbmFtZSk7IH0KICAgIH0KICAgIC8vIEtlZXAgdGhlIGRlZmF1bHRzIHRoYXQgTGludXhTZXJ2ZXIgY29waWVzIG9ubHkgaW50byBhbiBlbXB0eSBjb25maWcgZGlyZWN0b3J5LgogICAgJGRlZmF1bHRzID0gJy9hcHAvd3d3L3NyYy9jb25maWcnOwogICAgaWYgKGlzX2RpcigkZGVmYXVsdHMpKSB7CiAgICAgICAgZm9yZWFjaCAobmV3IERpcmVjdG9yeUl0ZXJhdG9yKCRkZWZhdWx0cykgYXMgJGZpbGUpIHsKICAgICAgICAgICAgaWYgKCRmaWxlLT5pc0RvdCgpIHx8ICEkZmlsZS0+aXNGaWxlKCkpIHsgY29udGludWU7IH0KICAgICAgICAgICAgJHRhcmdldCA9ICRkaXIgLiAnLycgLiAkZmlsZS0+Z2V0RmlsZW5hbWUoKTsKICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdGFyZ2V0KSAmJiAhaXNfbGluaygkdGFyZ2V0KSkgeyBjcmVhdGVfcHJpdmF0ZSgkdGFyZ2V0LCBmaWxlX2dldF9jb250ZW50cygkZmlsZS0+Z2V0UGF0aG5hbWUoKSksIG51bGwpOyB9CiAgICAgICAgfQogICAgfQogICAgLy8gV2l0aCB0aGUgYWRtaW5pc3RyYXRvciBpbmNsdWRlZCwgTmV4dGNsb3VkIGluc3RhbGxzIGl0c2VsZiBvbiB0aGUgZmlyc3QKICAgIC8vIHJlcXVlc3QsIHNvIG5vYm9keSBlbHNlIG9uIHRoZSBuZXR3b3JrIGNhbiBjbGFpbSB0aGUgc2V0dXAgcGFnZS4KICAgICRzZXR0aW5ncyA9IFsnZGJ0eXBlJyA9PiAnbXlzcWwnLCAnZGJob3N0JyA9PiBnZXRlbnYoJ01ZU1FMX0hPU1QnKSwgJ2RibmFtZScgPT4gZ2V0ZW52KCdNWVNRTF9EQVRBQkFTRScpLCAnZGJ1c2VyJyA9PiBnZXRlbnYoJ01ZU1FMX1VTRVInKSwgJ2RicGFzcycgPT4gZ2V0ZW52KCdNWVNRTF9QQVNTV09SRCcpLCAnZGlyZWN0b3J5JyA9PiAnL2RhdGEnLCAnYWRtaW5sb2dpbicgPT4gJ2FkbWluJywgJ2FkbWlucGFzcycgPT4gZ2V0ZW52KCdORVhUQ0xPVURfQURNSU5fUEFTU1dPUkQnKV07CiAgICAvLyBFeGlzdGluZyBpbnN0YWxsYXRpb25zIHNraXAgTGludXhTZXJ2ZXIncyBmaXJzdC1ydW4gb3duZXJzaGlwIHNldHVwLgogICAgY3JlYXRlX3ByaXZhdGUoJGRpciAuICcvYXV0b2NvbmZpZy5waHAnLCAiPD9waHBcblwkQVVUT0NPTkZJRyA9ICIgLiB2YXJfZXhwb3J0KCRzZXR0aW5ncywgdHJ1ZSkgLiAiO1xuIiwgJGRpcik7Cn0KJHBhdGggPSAkZGlyIC4gJy9wcm94bWVudXgtcmVkaXMuY29uZmlnLnBocCc7Ci8vIEluc3RhbGxlZCBpbnN0YW5jZXMga2VlcCB0aGVpciBleGlzdGluZyBjYWNoZSBjb25maWd1cmF0aW9uIHVuY2hhbmdlZC4KaWYgKCFpc19maWxlKCRwYXRoKSAmJiAhaXNfbGluaygkcGF0aCkgJiYgIWlzX2ZpbGUoJGRpciAuICcvY29uZmlnLnBocCcpKSB7CiAgICAkc2V0dGluZ3MgPSBbJ2ZpbGVsb2NraW5nLmVuYWJsZWQnID0+IHRydWUsICdtZW1jYWNoZS5sb2NhbCcgPT4gJ1xPQ1xNZW1jYWNoZVxBUEN1JywgJ21lbWNhY2hlLmxvY2tpbmcnID0+ICdcT0NcTWVtY2FjaGVcUmVkaXMnLCAncmVkaXMnID0+IFsnaG9zdCcgPT4gJ3JlZGlzJywgJ3BvcnQnID0+IDYzNzksICd0aW1lb3V0JyA9PiAwLjBdXTsKICAgIGNyZWF0ZV9wcml2YXRlKCRwYXRoLCAiPD9waHBcblwkQ09ORklHID0gIiAuIHZhcl9leHBvcnQoJHNldHRpbmdzLCB0cnVlKSAuICI7XG4iLCAkZGlyKTsKfQo= | base64 -d | php); exec /init"
"(umask 077; printf %s PD9waHAKLy8gUHJlcGFyZSBhIGZyZXNoIExpbnV4U2VydmVyIE5leHRjbG91ZCB3aXRob3V0IHJlcGxhY2luZyBwZXJzaXN0ZW50IHVzZXIgc2V0dGluZ3MuCiRkaXIgPSAnL2NvbmZpZy93d3cvbmV4dGNsb3VkL2NvbmZpZyc7CnVtYXNrKDAwNzcpOwppZiAoIWlzX2RpcigkZGlyKSAmJiAhbWtkaXIoJGRpciwgMDc3MCwgdHJ1ZSkpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBjcmVhdGUgdGhlIE5leHRjbG91ZCBjb25maWcgZGlyZWN0b3J5Jyk7IH0KLy8gT25jZSB0aGUgZGlyZWN0b3J5IGJlbG9uZ3MgdG8gdGhlIGFwcGxpY2F0aW9uIHVzZXIsIG9ubHkgdGhhdCB1c2VyIGNvdWxkCi8vIGhhdmUgcGxhY2VkIGEgbGluayBpbiBpdDogd3JpdGUgYXMgdGhhdCB1c2VyLCBzbyBhIGxpbmsgcmVhY2hlcyBub3RoaW5nIHRoZQovLyBhcHBsaWNhdGlvbiBjb3VsZCBub3QgYWxyZWFkeSBjaGFuZ2UuIFBIUCBmb2xsb3dzIGxpbmtzIHdoZW4gaXQgb3BlbnMgYQovLyBwYXRoLCBzbyBhIGxpbmsgaW4gcGxhY2Ugb2YgYSBmaWxlIGlzIGFsc28gcmVmdXNlZC4KJG93bmVyID0gZmlsZW93bmVyKCRkaXIpOwppZiAocG9zaXhfZ2V0ZXVpZCgpID09PSAwICYmICRvd25lciAhPT0gMCkgewogICAgaWYgKCFwb3NpeF9zZXRnaWQoZmlsZWdyb3VwKCRkaXIpKSB8fCAhcG9zaXhfc2V0dWlkKCRvd25lcikpIHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzd2l0Y2ggdG8gdGhlIE5leHRjbG91ZCB1c2VyJyk7IH0KfQpmdW5jdGlvbiBjcmVhdGVfcHJpdmF0ZSgkcGF0aCwgJGNvbnRlbnQpIHsKICAgIGlmIChpc19saW5rKCRwYXRoKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUmVmdXNpbmcgYSBsaW5rIGluIHBsYWNlIG9mICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9CiAgICAkaGFuZGxlID0gQGZvcGVuKCRwYXRoLCAneCcpOwogICAgaWYgKCRoYW5kbGUgPT09IGZhbHNlIHx8IGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudCkgIT09IHN0cmxlbigkY29udGVudCkgfHwgIWZjbG9zZSgkaGFuZGxlKSkgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlICcgLiBiYXNlbmFtZSgkcGF0aCkpOyB9Cn0KaWYgKCFpc19maWxlKCRkaXIgLiAnL2NvbmZpZy5waHAnKSAmJiAhaXNfZmlsZSgkZGlyIC4gJy9hdXRvY29uZmlnLnBocCcpKSB7CiAgICBmb3JlYWNoIChbJ01ZU1FMX0hPU1QnLCAnTVlTUUxfREFUQUJBU0UnLCAnTVlTUUxfVVNFUicsICdNWVNRTF9QQVNTV09SRCcsICdORVhUQ0xPVURfQURNSU5fUEFTU1dPUkQnXSBhcyAkbmFtZSkgewogICAgICAgIGlmIChnZXRlbnYoJG5hbWUpID09PSBmYWxzZSB8fCBnZXRlbnYoJG5hbWUpID09PSAnJykgeyB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignTWlzc2luZyBOZXh0Y2xvdWQgc2V0dGluZzogJyAuICRuYW1lKTsgfQogICAgfQogICAgLy8gS2VlcCB0aGUgZGVmYXVsdHMgdGhhdCBMaW51eFNlcnZlciBjb3BpZXMgb25seSBpbnRvIGFuIGVtcHR5IGNvbmZpZyBkaXJlY3RvcnkuCiAgICAkZGVmYXVsdHMgPSAnL2FwcC93d3cvc3JjL2NvbmZpZyc7CiAgICBpZiAoaXNfZGlyKCRkZWZhdWx0cykpIHsKICAgICAgICBmb3JlYWNoIChuZXcgRGlyZWN0b3J5SXRlcmF0b3IoJGRlZmF1bHRzKSBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoJGZpbGUtPmlzRG90KCkgfHwgISRmaWxlLT5pc0ZpbGUoKSkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAkdGFyZ2V0ID0gJGRpciAuICcvJyAuICRmaWxlLT5nZXRGaWxlbmFtZSgpOwogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCR0YXJnZXQpICYmICFpc19saW5rKCR0YXJnZXQpKSB7IGNyZWF0ZV9wcml2YXRlKCR0YXJnZXQsIGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlLT5nZXRQYXRobmFtZSgpKSk7IH0KICAgICAgICB9CiAgICB9CiAgICAvLyBXaXRoIHRoZSBhZG1pbmlzdHJhdG9yIGluY2x1ZGVkLCBOZXh0Y2xvdWQgaW5zdGFsbHMgaXRzZWxmIG9uIHRoZSBmaXJzdAogICAgLy8gcmVxdWVzdCwgc28gbm9ib2R5IGVsc2Ugb24gdGhlIG5ldHdvcmsgY2FuIGNsYWltIHRoZSBzZXR1cCBwYWdlLgogICAgJHNldHRpbmdzID0gWydkYnR5cGUnID0+ICdteXNxbCcsICdkYmhvc3QnID0+IGdldGVudignTVlTUUxfSE9TVCcpLCAnZGJuYW1lJyA9PiBnZXRlbnYoJ01ZU1FMX0RBVEFCQVNFJyksICdkYnVzZXInID0+IGdldGVudignTVlTUUxfVVNFUicpLCAnZGJwYXNzJyA9PiBnZXRlbnYoJ01ZU1FMX1BBU1NXT1JEJyksICdkaXJlY3RvcnknID0+ICcvZGF0YScsICdhZG1pbmxvZ2luJyA9PiAnYWRtaW4nLCAnYWRtaW5wYXNzJyA9PiBnZXRlbnYoJ05FWFRDTE9VRF9BRE1JTl9QQVNTV09SRCcpXTsKICAgIGNyZWF0ZV9wcml2YXRlKCRkaXIgLiAnL2F1dG9jb25maWcucGhwJywgIjw/cGhwXG5cJEFVVE9DT05GSUcgPSAiIC4gdmFyX2V4cG9ydCgkc2V0dGluZ3MsIHRydWUpIC4gIjtcbiIpOwp9CiRwYXRoID0gJGRpciAuICcvcHJveG1lbnV4LXJlZGlzLmNvbmZpZy5waHAnOwovLyBJbnN0YWxsZWQgaW5zdGFuY2VzIGtlZXAgdGhlaXIgZXhpc3RpbmcgY2FjaGUgY29uZmlndXJhdGlvbiB1bmNoYW5nZWQuCmlmICghaXNfZmlsZSgkcGF0aCkgJiYgIWlzX2xpbmsoJHBhdGgpICYmICFpc19maWxlKCRkaXIgLiAnL2NvbmZpZy5waHAnKSkgewogICAgJHNldHRpbmdzID0gWydmaWxlbG9ja2luZy5lbmFibGVkJyA9PiB0cnVlLCAnbWVtY2FjaGUubG9jYWwnID0+ICdcT0NcTWVtY2FjaGVcQVBDdScsICdtZW1jYWNoZS5sb2NraW5nJyA9PiAnXE9DXE1lbWNhY2hlXFJlZGlzJywgJ3JlZGlzJyA9PiBbJ2hvc3QnID0+ICdyZWRpcycsICdwb3J0JyA9PiA2Mzc5LCAndGltZW91dCcgPT4gMC4wXV07CiAgICBjcmVhdGVfcHJpdmF0ZSgkcGF0aCwgIjw/cGhwXG5cJENPTkZJRyA9ICIgLiB2YXJfZXhwb3J0KCRzZXR0aW5ncywgdHJ1ZSkgLiAiO1xuIik7Cn0K | base64 -d | php); exec /init"
],
"environment": {
"PUID": "${PUID}",
+13 -8
View File
@@ -3,12 +3,18 @@
$dir = '/config/www/nextcloud/config';
umask(0077);
if (!is_dir($dir) && !mkdir($dir, 0770, true)) { throw new RuntimeException('Cannot create the Nextcloud config directory'); }
// The directory belongs to the application user. Create each file without
// following a link placed there, and give it to that user without following one.
function create_private($path, $content, $owner) {
// Once the directory belongs to the application user, only that user could
// have placed a link in it: write as that user, so a link reaches nothing the
// application could not already change. PHP follows links when it opens a
// path, so a link in place of a file is also refused.
$owner = fileowner($dir);
if (posix_geteuid() === 0 && $owner !== 0) {
if (!posix_setgid(filegroup($dir)) || !posix_setuid($owner)) { throw new RuntimeException('Cannot switch to the Nextcloud user'); }
}
function create_private($path, $content) {
if (is_link($path)) { throw new RuntimeException('Refusing a link in place of ' . basename($path)); }
$handle = @fopen($path, 'x');
if ($handle === false || fwrite($handle, $content) !== strlen($content) || !fclose($handle)) { throw new RuntimeException('Cannot write ' . basename($path)); }
if ($owner && (!lchown($path, fileowner($owner)) || !lchgrp($path, filegroup($owner)))) { throw new RuntimeException('Cannot set Nextcloud configuration ownership'); }
}
if (!is_file($dir . '/config.php') && !is_file($dir . '/autoconfig.php')) {
foreach (['MYSQL_HOST', 'MYSQL_DATABASE', 'MYSQL_USER', 'MYSQL_PASSWORD', 'NEXTCLOUD_ADMIN_PASSWORD'] as $name) {
@@ -20,18 +26,17 @@ if (!is_file($dir . '/config.php') && !is_file($dir . '/autoconfig.php')) {
foreach (new DirectoryIterator($defaults) as $file) {
if ($file->isDot() || !$file->isFile()) { continue; }
$target = $dir . '/' . $file->getFilename();
if (!file_exists($target) && !is_link($target)) { create_private($target, file_get_contents($file->getPathname()), null); }
if (!file_exists($target) && !is_link($target)) { create_private($target, file_get_contents($file->getPathname())); }
}
}
// With the administrator included, Nextcloud installs itself on the first
// request, so nobody else on the network can claim the setup page.
$settings = ['dbtype' => 'mysql', 'dbhost' => getenv('MYSQL_HOST'), 'dbname' => getenv('MYSQL_DATABASE'), 'dbuser' => getenv('MYSQL_USER'), 'dbpass' => getenv('MYSQL_PASSWORD'), 'directory' => '/data', 'adminlogin' => 'admin', 'adminpass' => getenv('NEXTCLOUD_ADMIN_PASSWORD')];
// Existing installations skip LinuxServer's first-run ownership setup.
create_private($dir . '/autoconfig.php', "<?php\n\$AUTOCONFIG = " . var_export($settings, true) . ";\n", $dir);
create_private($dir . '/autoconfig.php', "<?php\n\$AUTOCONFIG = " . var_export($settings, true) . ";\n");
}
$path = $dir . '/proxmenux-redis.config.php';
// Installed instances keep their existing cache configuration unchanged.
if (!is_file($path) && !is_link($path) && !is_file($dir . '/config.php')) {
$settings = ['filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => ['host' => 'redis', 'port' => 6379, 'timeout' => 0.0]];
create_private($path, "<?php\n\$CONFIG = " . var_export($settings, true) . ";\n", $dir);
create_private($path, "<?php\n\$CONFIG = " . var_export($settings, true) . ";\n");
}