From 873368edfe84edf2e149d6b2b4df374454cacf3e Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 14 May 2019 03:58:57 +0200 Subject: [PATCH] Adjust parametersetting in case of gitlab installation. --- install_dehydrated.sh | 198 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 195 insertions(+), 3 deletions(-) diff --git a/install_dehydrated.sh b/install_dehydrated.sh index eb49d6b..80dffdf 100755 --- a/install_dehydrated.sh +++ b/install_dehydrated.sh @@ -294,6 +294,20 @@ elif [[ "$WEBSERVER_INSTALLATION" = "GitLab" ]] ;then GITLAB_CONF_FILE=/etc/gitlab/gitlab.rb gitlab_ctl_script=/usr/bin/gitlab-ctl gitlab_installed=true + + echo "" + echo -e "\033[32m--\033[m" + echo "" + echo "Insert hostname (external_url)" + echo "" + _HOST_NAME="$(hostname --fqdn)" + HOST_NAME= + echononl "Hostname [${_HOST_NAME}]: " + read HOST_NAME + if [[ "X${HOST_NAME}" = "X" ]] ; then + HOST_NAME="${_HOST_NAME}" + fi + else APACHE_VHOST_DIR= APACHE_CONF_DIR= @@ -302,6 +316,8 @@ else warn "This Type of Webserver Installation is not yet available" fi +HOST_NAME=git.warenform.de + echo "" echo "" @@ -319,7 +335,7 @@ echo "" if [[ "$DH_CRON_TYPE" = "system" ]]; then echo "DH Cronjob Type...............: Installed as file in /etc/cron.d" elif [[ "$DH_CRON_TYPE" = "user" ]]; then - echo "DH Cronjob Type...............: Added to /var/spool/cron/root" + echo "DH Cronjob Type...............: Added to root cronjobs" else echo -e "DH Cronjob Type...............: \033[33mSkip activation\033[m" fi @@ -333,7 +349,10 @@ if [[ "$WEBSERVER_INSTALLATION" =~ Apache2 ]]; then elif [[ "$WEBSERVER_INSTALLATION" =~ Nginx ]]; then echo "nginx Directory.,............: $NGINX_BASE_DIR" echo "nginx Vhost Directory........: $NGINX_VHOST_DIR" +elif [[ "$WEBSERVER_INSTALLATION" =~ GitLab ]]; then + echo "Hostname (external_url)......: $HOST_NAME" fi +echo "" echononl "Start with that configuration? [yes/no]: " read OK @@ -467,7 +486,93 @@ fi if [[ -n "$GITLAB_CONF_FILE" ]]; then - echononl " 1. Adjust GitLab Configuration (${GITLAB_CONF_FILE})" + echononl " Adjust ${GITLAB_CONF_FILE} - letsencrypt['enable']" + + if ! grep -E "^\s*letsencrypt\['enable'\]" $GITLAB_CONF_FILE 2> /dev/null | grep -q -E "false" 2> /dev/null ; then + + if grep -q -E "^\s*letsencrypt\['enable'\]" $GITLAB_CONF_FILE 2> /dev/null ; then + + perl -i -n -p -e "s#^(\s*(letsencrypt\['enable'\]).*)#\#\# \1\n\2 = false#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + + elif ! grep -q -E "^\s*#\s*letsencrypt\['enable'\]" $GITLAB_CONF_FILE 2> /dev/null ; then + cat <> ${GITLAB_CONF_FILE} + +################################################################################ +## Added by dehydrated install script $(basename $0) +################################################################################ + +letsencrypt['enable'] = false + +EOF + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + else + perl -i -n -p -e "s#^(\s*\#\s*(letsencrypt\['enable'\]).*)#\1\n\2 = false#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + fi + else + echo_skipped + fi + + echononl " Adjust ${GITLAB_CONF_FILE} - external_url" + + if ! grep -E "^\s*external_url" $GITLAB_CONF_FILE 2> /dev/null | grep -q -E "${HOST_NAME}" 2> /dev/null ; then + + if grep -q -E "^\s*external_url" $GITLAB_CONF_FILE 2> /dev/null ; then + + perl -i -n -p -e "s#^(\s*(external_url).*)#\#\# \1\n\2 'https://${HOST_NAME}'#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + + elif ! grep -q -E "^\s*#\s*external_url" $GITLAB_CONF_FILE 2> /dev/null ; then + cat <> ${GITLAB_CONF_FILE} + +################################################################################ +## Added by dehydrated install script $(basename $0) +################################################################################ + +external_url 'https://${HOST_NAME}' + +EOF + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + else + perl -i -n -p -e "s#^(\s*\#\s*(external_url).*)#\1\n\2 'https://${HOST_NAME}'#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + fi + else + echo_skipped + fi + + echononl " Adjust ${GITLAB_CONF_FILE} - nginx['custom_gitlab_server_config']" if ! grep -E "^\s*nginx\['custom_gitlab_server_config'\]" $GITLAB_CONF_FILE 2> /dev/null | grep -q ".well-known/acme-challenge" 2> /dev/null ; then if ! grep -q -E "^\s*#\s*nginx\['custom_gitlab_server_config'\]" $GITLAB_CONF_FILE 2> /dev/null ; then @@ -499,7 +604,7 @@ EOF echo_skipped fi - echononl " 2. Adjust GitLab Configuration (${GITLAB_CONF_FILE})" + echononl " Adjust ${GITLAB_CONF_FILE} - nginx['listen_addresses']" if ! grep -E "^\s*nginx\['listen_addresses'\]" $GITLAB_CONF_FILE 2> /dev/null | grep -q -E "\['\*',\s*'\[::]'\]" 2> /dev/null ; then @@ -532,6 +637,93 @@ EOF echo_skipped fi + echononl " Adjust ${GITLAB_CONF_FILE} - nginx['redirect_http_to_https']" + + if ! grep -E "^\s*nginx\['redirect_http_to_https'\]" $GITLAB_CONF_FILE 2> /dev/null | grep -q -E "true" 2> /dev/null ; then + + if grep -q -E "^\s*nginx\['redirect_http_to_https'\]" $GITLAB_CONF_FILE 2> /dev/null ; then + + perl -i -n -p -e "s#^(\s*(nginx\['redirect_http_to_https'\]).*)#\#\# \1\n\2 = true#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + + elif ! grep -q -E "^\s*#\s*nginx\['redirect_http_to_https'\]" $GITLAB_CONF_FILE 2> /dev/null ; then + cat <> ${GITLAB_CONF_FILE} + +################################################################################ +## Added by dehydrated install script $(basename $0) +################################################################################ + +nginx['redirect_http_to_https'] = true + +EOF + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + else + perl -i -n -p -e "s#^(\s*\#\s*(nginx\['redirect_http_to_https'\]).*)#\1\n\2 = true#" $GITLAB_CONF_FILE + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + fi + else + echo_skipped + fi + + echononl " Create Directory '/etc/gitlab/ssl'.." + if [[ ! -d "/etc/gitlab/ssl" ]]; then + mkdir -p "/etc/gitlab/ssl" > /dev/null 2>&1 + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + else + echo_skipped + fi + + echononl " Create Symlink '/etc/gitlab/ssl/${HOST_NAME}.key'.." + + if [[ -h "/etc/gitlab/ssl/${HOST_NAME}.key" ]] \ + && [[ "$(readlink -qs "/etc/gitlab/ssl/${HOST_NAME}.key")" = "/var/lib/dehydrated/certs/${HOST_NAME}/privkey.pem" ]] ; then + echo_skipped + else + rm -rf "/etc/gitlab/ssl/${HOST_NAME}.key" > /dev/null 2>&1 + ln -s "/var/lib/dehydrated/certs/${HOST_NAME}/privkey.pem" "/etc/gitlab/ssl/${HOST_NAME}.key" > /dev/null 2>&1 + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + fi + + echononl " Create Symlink '/etc/gitlab/ssl/${HOST_NAME}.crt'.." + if [[ -h "/etc/gitlab/ssl/${HOST_NAME}.crt" ]] \ + && [[ "$(readlink -qs "/etc/gitlab/ssl/${HOST_NAME}.crt")" = "/var/lib/dehydrated/certs/${HOST_NAME}/fullchain.pem" ]]; then + echo_skipped + else + rm -rf "/etc/gitlab/ssl/${HOST_NAME}.crt" > /dev/null 2>&1 + ln -s "/var/lib/dehydrated/certs/${HOST_NAME}/fullchain.pem" "/etc/gitlab/ssl/${HOST_NAME}.crt" > /dev/null 2>&1 + if [[ $? -eq 0 ]] ; then + echo_ok + gitlab_reconfigure=true + else + echo_failed + fi + fi + fi