From 53a5b617850239931159319d26df24ee3f5b9da8 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 16:54:19 +0100 Subject: [PATCH 01/10] Automated administrator account creation When desired environment variables are set, don't leave the install halfway, the doc says "Automatic installation" it should leave the instance in a usable state right away. https://github.com/friendica/docker?tab=readme-ov-file#automatic-installation --- 2025.02-dev/apache/entrypoint.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/2025.02-dev/apache/entrypoint.sh b/2025.02-dev/apache/entrypoint.sh index b080cef..0c7851e 100755 --- a/2025.02-dev/apache/entrypoint.sh +++ b/2025.02-dev/apache/entrypoint.sh @@ -149,6 +149,9 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true + install=true + else + echo "One or more environment variable is not set, skipping automated installation" fi if [ "$install" = true ]; then @@ -165,6 +168,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then rsync $rsync_options --ignore-existing /usr/src/friendica/config/ /var/www/html/config/ fi + # Add the administrator account + changeme=`head -c 30 /dev/urandom | base64` + FRIENDICA_ADMIN_NICKNAME=`echo $FRIENDICA_ADMIN_MAIL | sed 's/@.*//'` + echo " " + echo "Adding the administrator account named: $FRIENDICA_ADMIN_NICKNAME" + run_as "php /var/www/html/bin/console.php user add $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_MAIL EN $FRIENDICA_URL/images/person-300.jpg" + echo "Setting password" + run_as "php /var/www/html/bin/console.php user password $FRIENDICA_ADMIN_NICKNAME $changeme" + echo " " + echo "YOUR ADMINISTRATOR PASSWORD IS: $changeme" + echo "NOTE IT DOWN AND CHANGE IT ON FIRST LOGIN" + echo " " echo "Installation finished" else echo "[ERROR] Waited 300 seconds, no response" >&2 @@ -178,6 +193,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi + fi ) 9> /var/www/html/friendica-init-sync.lock fi From 9262a71b767b6d329bc01893c2bfe9104a8ba7c1 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 16:54:56 +0100 Subject: [PATCH 02/10] Update entrypoint.sh --- 2025.02-dev/fpm-alpine/entrypoint.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/2025.02-dev/fpm-alpine/entrypoint.sh b/2025.02-dev/fpm-alpine/entrypoint.sh index b080cef..0c7851e 100755 --- a/2025.02-dev/fpm-alpine/entrypoint.sh +++ b/2025.02-dev/fpm-alpine/entrypoint.sh @@ -149,6 +149,9 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true + install=true + else + echo "One or more environment variable is not set, skipping automated installation" fi if [ "$install" = true ]; then @@ -165,6 +168,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then rsync $rsync_options --ignore-existing /usr/src/friendica/config/ /var/www/html/config/ fi + # Add the administrator account + changeme=`head -c 30 /dev/urandom | base64` + FRIENDICA_ADMIN_NICKNAME=`echo $FRIENDICA_ADMIN_MAIL | sed 's/@.*//'` + echo " " + echo "Adding the administrator account named: $FRIENDICA_ADMIN_NICKNAME" + run_as "php /var/www/html/bin/console.php user add $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_MAIL EN $FRIENDICA_URL/images/person-300.jpg" + echo "Setting password" + run_as "php /var/www/html/bin/console.php user password $FRIENDICA_ADMIN_NICKNAME $changeme" + echo " " + echo "YOUR ADMINISTRATOR PASSWORD IS: $changeme" + echo "NOTE IT DOWN AND CHANGE IT ON FIRST LOGIN" + echo " " echo "Installation finished" else echo "[ERROR] Waited 300 seconds, no response" >&2 @@ -178,6 +193,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi + fi ) 9> /var/www/html/friendica-init-sync.lock fi From 664b60411bcf69b0f4dfe03085059750825d4b26 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 16:55:12 +0100 Subject: [PATCH 03/10] Update entrypoint.sh --- 2025.02-dev/fpm/entrypoint.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/2025.02-dev/fpm/entrypoint.sh b/2025.02-dev/fpm/entrypoint.sh index b080cef..0c7851e 100755 --- a/2025.02-dev/fpm/entrypoint.sh +++ b/2025.02-dev/fpm/entrypoint.sh @@ -149,6 +149,9 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true + install=true + else + echo "One or more environment variable is not set, skipping automated installation" fi if [ "$install" = true ]; then @@ -165,6 +168,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then rsync $rsync_options --ignore-existing /usr/src/friendica/config/ /var/www/html/config/ fi + # Add the administrator account + changeme=`head -c 30 /dev/urandom | base64` + FRIENDICA_ADMIN_NICKNAME=`echo $FRIENDICA_ADMIN_MAIL | sed 's/@.*//'` + echo " " + echo "Adding the administrator account named: $FRIENDICA_ADMIN_NICKNAME" + run_as "php /var/www/html/bin/console.php user add $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_NICKNAME $FRIENDICA_ADMIN_MAIL EN $FRIENDICA_URL/images/person-300.jpg" + echo "Setting password" + run_as "php /var/www/html/bin/console.php user password $FRIENDICA_ADMIN_NICKNAME $changeme" + echo " " + echo "YOUR ADMINISTRATOR PASSWORD IS: $changeme" + echo "NOTE IT DOWN AND CHANGE IT ON FIRST LOGIN" + echo " " echo "Installation finished" else echo "[ERROR] Waited 300 seconds, no response" >&2 @@ -178,6 +193,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi + fi ) 9> /var/www/html/friendica-init-sync.lock fi From c7d12c85d934712adf551562434f3901407efb43 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 16:59:50 +0100 Subject: [PATCH 04/10] Update the doc for automatic installation Update the doc about the complete automatic installation process (headless) --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b492f41..e97beab 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Note that you may have to change other limits depending on your client, webserve ## Administrator account -Because Friendica links the administrator account to a specific mail address, you **have** to set a valid address for `MAILNAME`. +Because Friendica links the administrator account to a specific mail address, you **have** to set a valid address for `FRIENDICA_ADMIN_MAIL`. ## Mail settings @@ -180,6 +180,9 @@ To enable the automatic installation, you have to the following environment vari - `MYSQL_DATABASE` Name of the database using mysql / mariadb. - `MYSQL_HOST` Hostname of the database server using mysql / mariadb. +**During the first run, you will be given the `FRIENDICA_ADMIN_MAIL` administrator's account first random password.** +**It is important to note it down and change it after first login.** + # Docker Secrets As an alternative to passing sensitive information via environment variables, _FILE may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in /run/secrets/ files. From 95a7178a64ed05c98a0871a81a901fdbbb83b7ca Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:08:44 +0100 Subject: [PATCH 05/10] Update 2025.02-dev/apache/entrypoint.sh I blame my copy/paste for that series of duplicated lines Co-authored-by: Hypolite Petovan --- 2025.02-dev/apache/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/apache/entrypoint.sh b/2025.02-dev/apache/entrypoint.sh index 0c7851e..ea5a4f9 100755 --- a/2025.02-dev/apache/entrypoint.sh +++ b/2025.02-dev/apache/entrypoint.sh @@ -149,7 +149,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true - install=true else echo "One or more environment variable is not set, skipping automated installation" fi From 472fe139bd888969185afb11e4f391d5541a3dbf Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:08:51 +0100 Subject: [PATCH 06/10] Update 2025.02-dev/apache/entrypoint.sh Co-authored-by: Hypolite Petovan --- 2025.02-dev/apache/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/apache/entrypoint.sh b/2025.02-dev/apache/entrypoint.sh index ea5a4f9..04e9f0b 100755 --- a/2025.02-dev/apache/entrypoint.sh +++ b/2025.02-dev/apache/entrypoint.sh @@ -192,7 +192,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi - fi ) 9> /var/www/html/friendica-init-sync.lock fi From 6be02d99fc75a88fd16ef27911a004926126a6f0 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:08:57 +0100 Subject: [PATCH 07/10] Update 2025.02-dev/fpm-alpine/entrypoint.sh Co-authored-by: Hypolite Petovan --- 2025.02-dev/fpm-alpine/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/fpm-alpine/entrypoint.sh b/2025.02-dev/fpm-alpine/entrypoint.sh index 0c7851e..1d0de1e 100755 --- a/2025.02-dev/fpm-alpine/entrypoint.sh +++ b/2025.02-dev/fpm-alpine/entrypoint.sh @@ -193,7 +193,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi - fi ) 9> /var/www/html/friendica-init-sync.lock fi From 7c048d2b2a868c0a4b1d2a9d10d59fa32cab4bec Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:09:01 +0100 Subject: [PATCH 08/10] Update 2025.02-dev/fpm-alpine/entrypoint.sh Co-authored-by: Hypolite Petovan --- 2025.02-dev/fpm-alpine/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/fpm-alpine/entrypoint.sh b/2025.02-dev/fpm-alpine/entrypoint.sh index 1d0de1e..04e9f0b 100755 --- a/2025.02-dev/fpm-alpine/entrypoint.sh +++ b/2025.02-dev/fpm-alpine/entrypoint.sh @@ -149,7 +149,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true - install=true else echo "One or more environment variable is not set, skipping automated installation" fi From 0a1a8666cd2311aa79db664a80d1f38f2b61dc06 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:09:07 +0100 Subject: [PATCH 09/10] Update 2025.02-dev/fpm/entrypoint.sh Co-authored-by: Hypolite Petovan --- 2025.02-dev/fpm/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/fpm/entrypoint.sh b/2025.02-dev/fpm/entrypoint.sh index 0c7851e..1d0de1e 100755 --- a/2025.02-dev/fpm/entrypoint.sh +++ b/2025.02-dev/fpm/entrypoint.sh @@ -193,7 +193,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then run_as 'php /var/www/html/bin/console.php dbstructure update -f' echo "Upgrading finished" fi - fi ) 9> /var/www/html/friendica-init-sync.lock fi From f48efb02700974d7ca36e3e86305883abab7f133 Mon Sep 17 00:00:00 2001 From: M33 Date: Wed, 29 Jan 2025 18:09:13 +0100 Subject: [PATCH 10/10] Update 2025.02-dev/fpm/entrypoint.sh Co-authored-by: Hypolite Petovan --- 2025.02-dev/fpm/entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/2025.02-dev/fpm/entrypoint.sh b/2025.02-dev/fpm/entrypoint.sh index 1d0de1e..04e9f0b 100755 --- a/2025.02-dev/fpm/entrypoint.sh +++ b/2025.02-dev/fpm/entrypoint.sh @@ -149,7 +149,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then # shellcheck disable=SC2016 install_options=$install_options' --admin "'$FRIENDICA_ADMIN_MAIL'" --tz "'$FRIENDICA_TZ'" --lang "'$FRIENDICA_LANG'" --url "'$FRIENDICA_URL'"' install=true - install=true else echo "One or more environment variable is not set, skipping automated installation" fi