From cfcba20e0f198e0baffc8631edfec4888796f236 Mon Sep 17 00:00:00 2001 From: Myve Date: Tue, 20 Aug 2024 00:12:33 +0000 Subject: [PATCH] renamed: 01-nginx-setup.sh -> 01-setup.sh deleted: 02-generate-env.sh --- 01-nginx-setup.sh => 01-setup.sh | 77 ++++++++++++++++++++++++++------ 02-generate-env.sh | 41 ----------------- 2 files changed, 64 insertions(+), 54 deletions(-) rename 01-nginx-setup.sh => 01-setup.sh (58%) delete mode 100755 02-generate-env.sh diff --git a/01-nginx-setup.sh b/01-setup.sh similarity index 58% rename from 01-nginx-setup.sh rename to 01-setup.sh index b9cc86f..2d8b17d 100755 --- a/01-nginx-setup.sh +++ b/01-setup.sh @@ -1,19 +1,26 @@ #!/usr/bin/env bash # Fill in the following variables appname= #google -proxyurl= #http://webapps.kvm:4001 +proxyurl= #http://webapps.kvm +proxyport= #4000 domain= #www.google.com eff_email_address= #eff@eff.com -# Check privilege -if [ $(id -u) -ne 0 ] +# Exit on any error +set -e + +# Check for subdomain +if [ $(echo ${domain} | awk -F . '{print $3}') ] then - echo "This script must be run by root" >&2 + _subdomain=$(echo ${domain} | awk -F . '{print $1}') + _domain="$(echo ${domain} | awk -F . '{print $2}').$(echo ${domain_url} | awk -F . '{print $3}')" +else + echo "Invalid \${domain} variable, exiting" exit 1 fi # Variable check -if [ -z ${appname} ] || [ -z ${proxyurl} ] || [ -z ${domain} ] || [ -z ${eff_email_address} ] +if [ -z ${appname} ] || [ -z ${proxyurl} ] || [ -z ${proxyport} ] || [ -z ${domain} ] || [ -z ${eff_email_address} ] then echo "Missing variable, exiting..." exit 1 @@ -26,7 +33,7 @@ then elif grep -q 'include.*sites-available' /etc/nginx/nginx.conf then nginxdir=/etc/nginx/sites-available - ln -s -f /etc/nginx/sites-available/${appname}.conf /etc/nginx/sites-enabled/ + sudo ln -s -f /etc/nginx/sites-available/${appname}.conf /etc/nginx/sites-enabled/ else echo "Missing nginx directory, exiting..." exit 1 @@ -36,12 +43,13 @@ fi cat <<- 'proxy' | \ sed -e "s|{{domain}}|${domain}|" \ -e "s|{{proxyurl}}|${proxyurl}|" \ - -e "s|{{appname}}|${appname}|" | tee ${nginxdir}/${appname}.conf >/dev/null + -e "s|{{proxyport}}|${proxyport}|" \ + -e "s|{{appname}}|${appname}|" | sudo tee ${nginxdir}/${appname}.conf >/dev/null server { server_name {{domain}}; location / { - proxy_pass {{proxyurl}}; + proxy_pass {{proxyurl}}:{{proxyport}}:; error_log /var/log/nginx/{{appname}}_error.log; access_log /var/log/nginx/{{appname}}_access.log; @@ -95,22 +103,65 @@ server { proxy # Run certbot -if nginx -t +if sudo nginx -t then - certbot --nginx --non-interactive --agree-tos --no-eff-email -m ${eff_email_address} -d ${domain} \ + sudo certbot --nginx --non-interactive --agree-tos --no-eff-email -m ${eff_email_address} -d ${domain} \ --staple-ocsp --hsts --no-redirect --renew-hook 'docker exec --interactive --tty myvemail /bin/ash -c "dovecot reload; postfix reload"' else exit 1 fi # SSL -[ -d ./data/ssl/ ] || mkdir -p ./data/ssl -ln -s /etc/letsencrypt/live/${domain}/fullchain.pem ./data/ssl/tls.pem -ln -s /etc/letsencrypt/live/${domain}/privkey.pem ./data/ssl/tls.key +[ -d ./data/ssl/ ] || install --directory ./data/ssl/ +sudo ln -s /etc/letsencrypt/live/${domain}/fullchain.pem ./data/ssl/tls.pem +sudo ln -s /etc/letsencrypt/live/${domain}/privkey.pem ./data/ssl/tls.key [ -f ./data/ssl/dh.pem ] || openssl dhparam -out ./data/ssl/dh.pem 4096 # Postwhite [ -f ./data/postwhite ] || touch ./data/postwhite +# Environment file +cat >./.env <<- gen-env +# Required +# Mail domain +MYVEMAIL_SUBDOMAIN=${_subdomain} +MYVEMAIL_DOMAIN=${_domain} + +# Webmail port +MYVEMAIL_PORT=${proxyport} + +# Optional +# Version: latest or stable (defaults to latest) +MYVEMAIL_VERSION= + +# Additional mail domains separated by commas +MYVEMAIL_ADDMX= + +# Backup mail servers separated by commas +MYVEMAIL_BACKUPMX= + +# Volumes +MYVEMAIL_VOLUME_MARIADB= +MYVEMAIL_VOLUME_SSL= +MYVEMAIL_VOLUME_DATA= +MYVEMAIL_VOLUME_MAIL= +MYVEMAIL_VOLUME_DKIM= +MYVEMAIL_VOLUME_POSTWHITE= + +# MariaDB +# Roundcube +MYVEMAIL_ROUNDCUBE_DBNAME=roundcube +MYVEMAIL_ROUNDCUBE_DBUSER=roundcube +MYVEMAIL_ROUNDCUBE_DBPASS=$(openssl rand -hex 32) +# Postfixadmin +MYVEMAIL_POSTFIXADMIN_DBNAME=postfixadmin +MYVEMAIL_POSTFIXADMIN_DBUSER=postfixadmin +MYVEMAIL_POSTFIXADMIN_DBPASS=$(openssl rand -hex 32) +gen-env + # Cleanup rm -f ${0} + +# Myvemail initial setup +docker compose pull +docker compose run --rm -it myvemail setup diff --git a/02-generate-env.sh b/02-generate-env.sh deleted file mode 100755 index cea5b5c..0000000 --- a/02-generate-env.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash -cat >./.env <<- gen-env -# Required -# Mail domain -MYVEMAIL_SUBDOMAIN=${SUBDOMAIN} -MYVEMAIL_DOMAIN=${DOMAIN} - -# Webmail port -MYVEMAIL_PORT=${PORT} - -# Optional -# Version: latest or stable (defaults to latest) -MYVEMAIL_VERSION= - -# Additional mail domains separated by commas -MYVEMAIL_ADDMX= - -# Backup mail servers separated by commas -MYVEMAIL_BACKUPMX= - -# Volumes -MYVEMAIL_VOLUME_MARIADB= -MYVEMAIL_VOLUME_SSL= -MYVEMAIL_VOLUME_DATA= -MYVEMAIL_VOLUME_MAIL= -MYVEMAIL_VOLUME_DKIM= -MYVEMAIL_VOLUME_POSTWHITE= - -# MariaDB -# Roundcube -MYVEMAIL_ROUNDCUBE_DBNAME=roundcube -MYVEMAIL_ROUNDCUBE_DBUSER=roundcube -MYVEMAIL_ROUNDCUBE_DBPASS=$(openssl rand -hex 32) -# Postfixadmin -MYVEMAIL_POSTFIXADMIN_DBNAME=postfixadmin -MYVEMAIL_POSTFIXADMIN_DBUSER=postfixadmin -MYVEMAIL_POSTFIXADMIN_DBPASS=$(openssl rand -hex 32) -gen-env - -# Cleanup -rm -f ${0}