renamed: 01-nginx-setup.sh -> 01-setup.sh

deleted:    02-generate-env.sh
This commit is contained in:
Myve 2024-08-20 00:12:33 +00:00
commit cfcba20e0f
2 changed files with 64 additions and 54 deletions

View file

@ -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

View file

@ -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}