| @@ -1,12 +1,5 @@ | |||
| #!/bin/bash | |||
| STACK_NAME=$1 | |||
| if [ $# -eq 0 ]; then | |||
| echo "You must pass stack name as a parameter" | |||
| exit 1 | |||
| fi | |||
| echo "" | |||
| echo "Adding DNS entries to PI-HOLE" | |||
| @@ -26,33 +19,18 @@ done; | |||
| # ##### Add entries to PiHole ###### # | |||
| host=$(docker stack ps ${STACK_NAME} | grep -v Shutdown | grep Running | grep pihole | awk '{ print $4 }') | |||
| #echo Host=$host | |||
| if [ -z $host ]; then | |||
| echo "No host found!"; | |||
| exit 1; | |||
| fi | |||
| # add avahi suffix | |||
| localhostname=$(cat /etc/hostname) | |||
| if [ "${localhostname}" != "${host}" ]; then | |||
| host=${host}.local | |||
| fi | |||
| container=$(ssh $host 'docker ps | grep pihole | cut -f1 -d" "') | |||
| container=$(docker ps | grep pihole | cut -f1 -d" ") | |||
| #echo Container=$container | |||
| if [ -z $container ]; then | |||
| echo "Qué me estás container?!"; | |||
| exit 1; | |||
| fi | |||
| echo Copying user files to Host $host | |||
| scp -r /tmp/${CONF_FILE} $host:/tmp/ | |||
| echo Copying user files to Container $container in Host $host | |||
| ssh $host "docker cp /tmp/${CONF_FILE} $container:/etc/dnsmasq.d/99-local-addresses.conf" | |||
| echo Copying user files to Container $container | |||
| docker cp /tmp/${CONF_FILE} $container:/etc/dnsmasq.d/99-local-addresses.conf | |||
| # restart dns | |||
| ssh $host "docker exec ${container} pihole restartdns" | |||
| docker exec ${container} pihole restartdns | |||
| echo Removing copied user files | |||
| ssh $host "docker exec ${container} sh -c 'rm -Rf /tmp/${CONF_FILE}'" | |||
| ssh $host "rm -Rf /tmp/${CONF_FILE}" | |||
| docker exec ${container} sh -c 'rm -Rf /tmp/${CONF_FILE}' | |||
| rm -Rf /tmp/${CONF_FILE} | |||
| @@ -1,36 +0,0 @@ | |||
| #!/bin/bash | |||
| echo "" | |||
| echo "Adding DNS entries to PI-HOLE" | |||
| CONF_FILE=custom_dnsmasq.conf | |||
| IP_LOOKUP="$(ip route get 8.8.8.8 | awk '{ print $NF; exit }')" # May not work for VPN / tun0 | |||
| # read variables, for domain and host names | |||
| source .env | |||
| # global domain with all subdomains | |||
| echo address=/.${DOMAIN}/${IP_LOOKUP} > /tmp/${CONF_FILE} | |||
| # virtual domains | |||
| for domain in ${VIRTUAL_DOMAINS[@]}; do | |||
| echo address=/.${domain}/${IP_LOOKUP} >> /tmp/${CONF_FILE} | |||
| done; | |||
| # ##### Add entries to PiHole ###### # | |||
| container=$(docker ps | grep pihole | cut -f1 -d" ") | |||
| #echo Container=$container | |||
| if [ -z $container ]; then | |||
| echo "Qué me estás container?!"; | |||
| exit 1; | |||
| fi | |||
| echo Copying user files to Container $container | |||
| docker cp /tmp/${CONF_FILE} $container:/etc/dnsmasq.d/99-local-addresses.conf | |||
| # restart dns | |||
| docker exec ${container} pihole restartdns | |||
| echo Removing copied user files | |||
| docker exec ${container} sh -c 'rm -Rf /tmp/${CONF_FILE}' | |||
| rm -Rf /tmp/${CONF_FILE} | |||
| @@ -1,29 +1,10 @@ | |||
| #!/bin/bash | |||
| STACK_NAME=$1 | |||
| if [ $# -eq 0 ]; then | |||
| echo "You must pass stack name as a parameter" | |||
| exit 1 | |||
| fi | |||
| # ##### Add users to LDAP ###### # | |||
| echo "" | |||
| echo "Adding users to LDAP" | |||
| host=$(docker stack ps ${STACK_NAME} | grep -v Shutdown | grep Running | grep openldap | awk '{ print $4 }') | |||
| #echo Host=$host | |||
| if [ -z $host ]; then | |||
| echo "No host found!"; | |||
| exit 1; | |||
| fi | |||
| # add avahi suffix | |||
| localhostname=$(cat /etc/hostname) | |||
| if [ "${localhostname}" != "${host}" ]; then | |||
| host=${host}.local | |||
| fi | |||
| container=$(ssh $host 'docker ps | grep openldap | cut -f1 -d" "') | |||
| container=$(docker ps | grep openldap | cut -f1 -d" ") | |||
| #echo Container=$container | |||
| if [ -z $container ]; then | |||
| echo "Qué me estás container?!"; | |||
| @@ -37,21 +18,19 @@ find images/openldap/users -type f -exec \ | |||
| sed -i "s/\${MAIL_DATA_PATH}/${MAIL_DATA_PATH//\//\\/}/g" {} \; | |||
| echo Copying user files to Host $host | |||
| ssh $host "mkdir -p /tmp/users" | |||
| scp -r images/openldap/users/userimport*.ldif $host:/tmp/users/ | |||
| mkdir -p /tmp/users | |||
| cp -r images/openldap/users/userimport*.ldif /tmp/users/ | |||
| echo Copying user files to Container $container in Host $host | |||
| ssh $host "docker cp /tmp/users $container:/tmp/" | |||
| docker cp /tmp/users $container:/tmp/ | |||
| echo Adding users to openldap | |||
| ssh $host \ | |||
| "for i in \$(ls /tmp/users/userimport*.ldif); do \ | |||
| ls \$i; | |||
| docker exec ${container} sh -c \ | |||
| 'slapadd -l '\$i; \ | |||
| done;" | |||
| for i in $(ls /tmp/users/userimport*.ldif); do | |||
| ls $i; | |||
| docker exec ${container} sh -c 'slapadd -l '$i; | |||
| done; | |||
| #'ldapadd -w \$(cat \${LDAP_ADMIN_PWD_FILE}) -D cn=admin,dc=\${LDAP_ORGANIZATION},dc=\${LDAP_EXTENSION} -f '\$i; \ | |||
| echo Removing copied user files | |||
| ssh $host "docker exec ${container} sh -c 'rm -Rf /tmp/users'" | |||
| ssh $host "rm -Rf /tmp/users" | |||
| docker exec ${container} sh -c 'rm -Rf /tmp/users' | |||
| rm -Rf /tmp/users | |||
| @@ -1,36 +0,0 @@ | |||
| #!/bin/bash | |||
| # ##### Add users to LDAP ###### # | |||
| echo "" | |||
| echo "Adding users to LDAP" | |||
| container=$(docker ps | grep openldap | cut -f1 -d" ") | |||
| #echo Container=$container | |||
| if [ -z $container ]; then | |||
| echo "Qué me estás container?!"; | |||
| exit 1; | |||
| fi | |||
| # read variables, for mail data path | |||
| . .env | |||
| # Replace Mail data path for users | |||
| find images/openldap/users -type f -exec \ | |||
| sed -i "s/\${MAIL_DATA_PATH}/${MAIL_DATA_PATH//\//\\/}/g" {} \; | |||
| echo Copying user files to Host $host | |||
| mkdir -p /tmp/users | |||
| cp -r images/openldap/users/userimport*.ldif /tmp/users/ | |||
| echo Copying user files to Container $container in Host $host | |||
| docker cp /tmp/users $container:/tmp/ | |||
| echo Adding users to openldap | |||
| for i in $(ls /tmp/users/userimport*.ldif); do | |||
| ls $i; | |||
| docker exec ${container} sh -c 'slapadd -l '$i; | |||
| done; | |||
| #'ldapadd -w \$(cat \${LDAP_ADMIN_PWD_FILE}) -D cn=admin,dc=\${LDAP_ORGANIZATION},dc=\${LDAP_EXTENSION} -f '\$i; \ | |||
| echo Removing copied user files | |||
| docker exec ${container} sh -c 'rm -Rf /tmp/users' | |||
| rm -Rf /tmp/users | |||
| @@ -1,24 +1,15 @@ | |||
| #!/bin/bash | |||
| STACK_NAME=$1 | |||
| if [ $# -eq 0 ]; then | |||
| echo "You must pass stack name as a parameter" | |||
| exit 1 | |||
| fi | |||
| BUILD=$2 | |||
| BUILD=$1 | |||
| if [ -z $BUILD ]; then | |||
| BUILD=1; | |||
| fi | |||
| PUSH=$3 | |||
| PUSH=$2 | |||
| if [ -z $PUSH ]; then | |||
| PUSH=0; | |||
| fi | |||
| # Delete previous running stack | |||
| docker stack rm ${STACK_NAME} | |||
| # Build images | |||
| if [ $BUILD -eq 1 ]; then | |||
| docker-compose build | |||
| @@ -31,48 +22,31 @@ if [ $PUSH -eq 1 ]; then | |||
| done; | |||
| fi | |||
| # Deploy Stack | |||
| # seen here: https://github.com/docker/docker/issues/29133#issuecomment-278198683 | |||
| env $(cat .env | grep "^[A-Z]" | xargs) \ | |||
| docker stack deploy --compose-file docker-compose.yml ${STACK_NAME} | |||
| # Start services | |||
| docker-compose -p dhs up -d | |||
| echo Wait for services to start | |||
| sleep 60 | |||
| # ##### Add users to LDAP ###### # | |||
| ./add_users.sh ${STACK_NAME} | |||
| ./add_users.sh | |||
| # Add local domains | |||
| ./add_dns_entries.sh ${STACK_NAME} | |||
| ./add_dns_entries.sh | |||
| # Wait for Nextcloud | |||
| echo "Waiting for Nextcloud" | |||
| NC_UP=0 | |||
| while [ $NC_UP -eq 0 ]; do | |||
| # TODO: Use docker inspect Go templates | |||
| #NC_IP=$(docker network inspect debuen_default | grep -A 3 nextcloud | grep IPv4Address | cut -d':' -f 2 | cut -d'"' -f 2 | cut -d'/' -f 1) | |||
| # Find Nextcloud container | |||
| SERVICE=nextcloud | |||
| host=$(docker stack ps ${STACK_NAME} | grep Running | grep ${SERVICE} | awk '{ print $4 }') | |||
| #echo Host=$host | |||
| if [ -z $host ]; then | |||
| echo "No host found!"; | |||
| continue; | |||
| fi | |||
| # add avahi suffix | |||
| localhostname=$(cat /etc/hostname) | |||
| if [ "${localhostname}" != "${host}" ]; then | |||
| host=${host}.local | |||
| fi | |||
| container=$(ssh $host 'docker ps | grep '${SERVICE}' | cut -f1 -d" "') | |||
| container=$(docker ps | grep '${SERVICE}' | cut -f1 -d" ") | |||
| #echo Container=$container | |||
| if [ -z $container ]; then | |||
| echo "Qué me estás container?!"; | |||
| continue; | |||
| fi | |||
| #NC_IP=$(ssh $host "docker exec ${container} sh -c 'ifconfig eth1' | grep 'inet ' | cut -d':' -f 2 | cut -d' ' -f 1") | |||
| curl http://${host}/index.nginx-debian.html 2>/dev/null | grep title | grep Welcome 1>/dev/null; | |||
| NC_UP=$((1 - $?)); | |||
| done; | |||
| ./nextcloud_apps_after_update.sh | |||
| @@ -8,13 +8,27 @@ DEFAULT_LDAP_NEXTCLOUD_UID='nextcloud' | |||
| DEFAULT_LDAP_GITEA_UID='git' | |||
| DEFAULT_LDAP_HAUK_UID='hauk' | |||
| read -p "Main domain: " domain | |||
| # main domain | |||
| read -p "Add main domain: " domain | |||
| while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do | |||
| read -p "Please Enter a valid domain: " domain | |||
| read -p "Add domain (empty to finish): " domain | |||
| done | |||
| # TODO: more than 1 level domains | |||
| org=`echo $domain | cut -f1 -d'.'` | |||
| ext=`echo $domain | cut -f2 -d'.'` | |||
| org=`echo ${domain} | cut -f1 -d'.'` | |||
| ext=`echo ${domain} | cut -f2 -d'.'` | |||
| # additional domain | |||
| virtual_domains=() | |||
| while :; do | |||
| read -p "Add additional domains (empty to finish): " virtual_domain | |||
| if [[ -z $virtual_domain ]]; then | |||
| break; | |||
| elif [[ ! $virtual_domain =~ ^.*\.[a-z]{2,}$ ]]; then | |||
| echo "Please Enter a valid domain"; | |||
| else | |||
| virtual_domains+=($virtual_domain); | |||
| fi | |||
| done | |||
| read -p "Volumes path ($DEFAULT_VOLUMES): " volumes | |||
| if [[ ${#volumes} -eq 0 ]]; then | |||
| @@ -81,6 +95,11 @@ if [[ ${#gitea_admin_pwd} -eq 0 ]]; then | |||
| gitea_admin_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Hauk Server Pwd (a random one will be generated if empty): " hauk_server_pwd | |||
| if [[ ${#hauk_server_pwd} -eq 0 ]]; then | |||
| hauk_server_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Pi-Hole Web User Pwd (a random one will be generated if empty): " pihole_web_pwd | |||
| if [[ ${#pihole_web_pwd} -eq 0 ]]; then | |||
| pihole_web_pwd=`eval "$PWD_GEN"` | |||
| @@ -127,7 +146,8 @@ echo "///////////////// PLEASE CONFIRM /////////////////" | |||
| echo "//////////////////////////////////////////////////" | |||
| echo $'\E[1;30m' | |||
| echo Your domain is: $domain | |||
| echo Your main domain is: ${domain} | |||
| echo Your virtual domains are: ${virtual_domains[*]} | |||
| echo Your Volumes path is: $volumes | |||
| echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid | |||
| echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid | |||
| @@ -147,23 +167,6 @@ if [[ $confirm != [yY] ]]; then | |||
| exit 1 | |||
| fi | |||
| # Generate docker secrets | |||
| echo $db_pwd | docker secret create db_pwd - | |||
| echo $ldap_pwd | docker secret create ldap_pwd - | |||
| echo $ldap_mail_pwd | docker secret create ldap_mail_pwd - | |||
| echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd - | |||
| echo $ldap_gitea_pwd | docker secret create ldap_gitea_pwd - | |||
| echo $ldap_hauk_pwd | docker secret create ldap_hauk_pwd - | |||
| echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd - | |||
| echo $nextcloud_salt | docker secret create nextcloud_salt - | |||
| echo $nextcloud_secret | docker secret create nextcloud_secret - | |||
| #echo $paperless_webserver_pwd | docker secret create paperless_webserver_pwd - | |||
| #echo $paperless_passphrase | docker secret create paperless_passphrase - | |||
| echo $paperless_ftp_pwd | docker secret create paperless_ftp_pwd - | |||
| echo $gitea_admin_pwd | docker secret create gitea_admin_pwd - | |||
| #echo $pihole_web_pwd | docker secret create pihole_web_pwd - | |||
| sed -i "s/\${PIHOLE_WEB_PWD}/${pihole_web_pwd}/g" pihole.env | |||
| echo $'\E[33m' | |||
| echo "//////////////////////////////////////////////////" | |||
| echo "///////////// COPYING TEMPLATE FILES /////////////" | |||
| @@ -171,6 +174,7 @@ echo "//////////////////////////////////////////////////" | |||
| echo $'\E[1;30m' | |||
| cp env.template .env | |||
| cp mariadb.env.template mariadb.env | |||
| cp openldap.env.template openldap.env | |||
| cp mail.env.template mail.env | |||
| cp nextcloud.env.template nextcloud.env | |||
| @@ -180,6 +184,33 @@ cp sftp.env.template sftp.env | |||
| cp gitea.env.template gitea.env | |||
| cp hauk.env.template hauk.env | |||
| cp pihole.env.template pihole.env | |||
| chmod 600 *.env | |||
| # Passwords | |||
| echo MYSQL_ROOT_PWD=$db_pwd >> mariadb.env | |||
| echo MYSQL_ROOT_PWD=$db_pwd >> nextcloud.env | |||
| echo LDAP_ADMIN_PWD=$ldap_pwd >> openldap.env | |||
| echo LDAP_MAIL_PWD=$ldap_mail_pwd >> openldap.env | |||
| echo LDAP_NEXTCLOUD_PWD=$ldap_nextcloud_pwd >> openldap.env | |||
| echo LDAP_GITEA_PWD=$ldap_gitea_pwd >> openldap.env | |||
| echo LDAP_HAUK_PWD=$ldap_hauk_pwd >> openldap.env | |||
| echo LDAP_BIND_PWD=$ldap_mail_pwd >> mail.env | |||
| echo LDAP_BIND_PWD=$ldap_nextcloud_pwd >> nextcloud.env | |||
| echo LDAP_BIND_PWD=$ldap_gitea_pwd >> gitea.env | |||
| echo LDAP_BIND_PWD=$ldap_hauk_pwd >> hauk.env | |||
| echo NEXTCLOUD_ADMIN_PWD=$nextcloud_admin_pwd >> nextcloud.env | |||
| echo NEXTCLOUD_SALT=$nextcloud_salt >> nextcloud.env | |||
| echo NEXTCLOUD_SECRET=$nextcloud_secret >> nextcloud.env | |||
| #echo PAPERLESS_WEBSERVER_PWD=$paperless_webserver_pwd >> paperless.env | |||
| #echo PAPERLESS_PASSPHRASE=$paperless_passphrase >> paperless.env | |||
| echo PAPERLESS_FTP_PWD=$paperless_ftp_pwd >> sftp.env | |||
| echo GITEA_ADMIN_PWD=$gitea_admin_pwd >> gitea.env | |||
| echo HAUK_SERVER_PWD=$hauk_server_pwd >> hauk.env | |||
| #echo $pihole_web_pwd | docker secret create pihole_web_pwd - | |||
| sed -i "s/\${PIHOLE_WEB_PWD}/${pihole_web_pwd}/g" pihole.env | |||
| # IP for Pi-Hole | |||
| IP_LOOKUP="$(ip route get 8.8.8.8 | awk '{ print $NF; exit }')" # May not work for VPN / tun0 | |||
| @@ -187,6 +218,7 @@ IPv6_LOOKUP="$(ip -6 route get 2001:4860:4860::8888 | awk '{for(i=1;i<=NF;i++) i | |||
| for i in `ls *.env .env`; do | |||
| sed -i "s/\${DOMAIN}/${domain}/g" $i | |||
| sed -i "s/\${VIRTUAL_DOMAINS}/${virtual_domains[*]}/g" $i | |||
| sed -i "s/\${ORGANIZATION}/${org}/g" $i | |||
| sed -i "s/\${EXTENSION}/${ext}/g" $i | |||
| sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i | |||
| @@ -205,17 +237,25 @@ done; | |||
| # read variables | |||
| . .env | |||
| # repeated env variables | |||
| # domains available for all, just in case | |||
| for i in `ls *.env`; do | |||
| echo "" >> $i | |||
| echo "# Domains" >> $i | |||
| echo "DOMAIN=${DOMAIN}" >> $i | |||
| echo "VIRTUAL_DOMAINS=${VIRTUAL_DOMAINS}" >> $i | |||
| echo "DOMAINS=${DOMAINS}" >> $i | |||
| done | |||
| echo "" >> mail.env | |||
| echo "MAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env | |||
| echo "" >> nextcloud.env | |||
| echo "NEXTCLOUD_SERVER_NAME=${NEXTCLOUD_SERVER_NAME}" >> nextcloud.env | |||
| echo "NEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env | |||
| echo "NEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env | |||
| echo "NEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH}" >> nextcloud.env | |||
| echo "" >> gitea.env | |||
| echo "GITEA_SERVER_NAME=${GITEA_SERVER_NAME}" >> gitea.env | |||
| echo "GITEA_HTTP_PORT=${GITEA_HTTP_PORT}" >> gitea.env | |||
| echo "" >> hauk.env | |||
| echo "HAUK_SERVER_NAME=${HAUK_SERVER_NAME}" >> hauk.env | |||
| echo "" >> paperless.env | |||
| echo "PAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUMPTION_PATH}" >> paperless.env | |||
| echo "PAPERLESS_EXPORT_DIR=${PAPERLESS_EXPORT_PATH}" >> paperless.env | |||
| @@ -1,303 +0,0 @@ | |||
| #!/bin/bash | |||
| DEFAULT_VOLUMES=/media/volumes | |||
| PWD_GEN='< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;' | |||
| #PWD_GEN='openssl rand -base64 20' | |||
| DEFAULT_LDAP_MAIL_UID='mail' | |||
| DEFAULT_LDAP_NEXTCLOUD_UID='nextcloud' | |||
| DEFAULT_LDAP_GITEA_UID='git' | |||
| DEFAULT_LDAP_HAUK_UID='hauk' | |||
| # main domain | |||
| read -p "Add main domain: " domain | |||
| while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do | |||
| read -p "Add domain (empty to finish): " domain | |||
| done | |||
| # TODO: more than 1 level domains | |||
| org=`echo ${domain} | cut -f1 -d'.'` | |||
| ext=`echo ${domain} | cut -f2 -d'.'` | |||
| # additional domain | |||
| virtual_domains=() | |||
| while :; do | |||
| read -p "Add additional domains (empty to finish): " virtual_domain | |||
| if [[ -z $virtual_domain ]]; then | |||
| break; | |||
| elif [[ ! $virtual_domain =~ ^.*\.[a-z]{2,}$ ]]; then | |||
| echo "Please Enter a valid domain"; | |||
| else | |||
| virtual_domains+=($virtual_domain); | |||
| fi | |||
| done | |||
| read -p "Volumes path ($DEFAULT_VOLUMES): " volumes | |||
| if [[ ${#volumes} -eq 0 ]]; then | |||
| volumes=$DEFAULT_VOLUMES | |||
| fi | |||
| read -p "DB admin password (a random one will be generated if empty): " db_pwd | |||
| if [[ ${#db_pwd} -eq 0 ]]; then | |||
| db_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "LDAP admin password (a random one will be generated if empty): " ldap_pwd | |||
| if [[ ${#ldap_pwd} -eq 0 ]]; then | |||
| ldap_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "LDAP Mail Bind DN uid ($DEFAULT_LDAP_MAIL_UID): " ldap_mail_uid | |||
| if [[ ${#ldap_mail_uid} -eq 0 ]]; then | |||
| ldap_mail_uid=$DEFAULT_LDAP_MAIL_UID | |||
| fi | |||
| read -p "LDAP Mail Bind DN Pwd (a random one will be generated if empty): " ldap_mail_pwd | |||
| if [[ ${#ldap_mail_pwd} -eq 0 ]]; then | |||
| ldap_mail_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "LDAP Nextcloud Bind DN uid ($DEFAULT_LDAP_NEXTCLOUD_UID): " ldap_nextcloud_uid | |||
| if [[ ${#ldap_nextcloud_uid} -eq 0 ]]; then | |||
| ldap_nextcloud_uid=$DEFAULT_LDAP_NEXTCLOUD_UID | |||
| fi | |||
| read -p "LDAP Nextcloud Bind DN Pwd (a random one will be generated if empty): " ldap_nextcloud_pwd | |||
| if [[ ${#ldap_nextcloud_pwd} -eq 0 ]]; then | |||
| ldap_nextcloud_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "LDAP Gitea Bind DN uid ($DEFAULT_LDAP_GITEA_UID): " ldap_gitea_uid | |||
| if [[ ${#ldap_gitea_uid} -eq 0 ]]; then | |||
| ldap_gitea_uid=$DEFAULT_LDAP_GITEA_UID | |||
| fi | |||
| read -p "LDAP Gitea Bind DN Pwd (a random one will be generated if empty): " ldap_gitea_pwd | |||
| if [[ ${#ldap_gitea_pwd} -eq 0 ]]; then | |||
| ldap_gitea_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "LDAP Hauk Bind DN uid ($DEFAULT_LDAP_HAUK_UID): " ldap_hauk_uid | |||
| if [[ ${#ldap_hauk_uid} -eq 0 ]]; then | |||
| ldap_hauk_uid=$DEFAULT_LDAP_HAUK_UID | |||
| fi | |||
| read -p "LDAP Hauk Bind DN Pwd (a random one will be generated if empty): " ldap_hauk_pwd | |||
| if [[ ${#ldap_hauk_pwd} -eq 0 ]]; then | |||
| ldap_hauk_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Nextcloud Admin User Pwd (a random one will be generated if empty): " nextcloud_admin_pwd | |||
| if [[ ${#nextcloud_admin_pwd} -eq 0 ]]; then | |||
| nextcloud_admin_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Gitea Admin User Pwd (a random one will be generated if empty): " gitea_admin_pwd | |||
| if [[ ${#gitea_admin_pwd} -eq 0 ]]; then | |||
| gitea_admin_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Hauk Server Pwd (a random one will be generated if empty): " hauk_server_pwd | |||
| if [[ ${#hauk_server_pwd} -eq 0 ]]; then | |||
| hauk_server_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Pi-Hole Web User Pwd (a random one will be generated if empty): " pihole_web_pwd | |||
| if [[ ${#pihole_web_pwd} -eq 0 ]]; then | |||
| pihole_web_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| read -p "Admin E-mail, used for Let's Encrypt account and more (admin@${domain}): " admin_email | |||
| if [[ ${#admin_email} -eq 0 ]]; then | |||
| admin_email=admin@${domain} | |||
| fi | |||
| echo "If you have a password salt and a secret from a previous installation, provide them here." | |||
| echo "They are used by Passman and need to remain the same for the vaults to be accessible" | |||
| read -p "Nextcloud Pwd Salt (a random one will be generated by NC if empty): " nextcloud_salt | |||
| read -p "Nextcloud Secret (a random one will be generated by NC if empty): " nextcloud_secret | |||
| # read -p "Paperless Web Server User (paperless): " paperless_webserver_user | |||
| # if [[ ${#paperless_webserver_user} -eq 0 ]]; then | |||
| # paperless_webserver_user=paperless | |||
| # fi | |||
| # read -p "Paperless Web Server Pwd (a random one will be generated if empty): " paperless_webserver_pwd | |||
| # if [[ ${#paperless_webserver_pwd} -eq 0 ]]; then | |||
| # paperless_webserver_pwd=`eval "$PWD_GEN"` | |||
| # fi | |||
| # read -p "Paperless Encryption Passphrase (a random one will be generated if empty): " paperless_passphrase | |||
| # if [[ ${#paperless_passphrase} -eq 0 ]]; then | |||
| # paperless_=`eval "$PWD_GEN"` | |||
| # fi | |||
| read -p "SFTP User - SFTP server is used by paperless (consume): " paperless_ftp_user | |||
| if [[ ${#paperless_ftp_user} -eq 0 ]]; then | |||
| paperless_ftp_user=consume | |||
| fi | |||
| read -p "SFTP Pwd (a random one will be generated if empty): " paperless_ftp_pwd | |||
| if [[ ${#paperless_ftp_pwd} -eq 0 ]]; then | |||
| paperless_ftp_pwd=`eval "$PWD_GEN"` | |||
| fi | |||
| echo $'\E[33m' | |||
| echo "//////////////////////////////////////////////////" | |||
| echo "///////////////// PLEASE CONFIRM /////////////////" | |||
| echo "//////////////////////////////////////////////////" | |||
| echo $'\E[1;30m' | |||
| echo Your main domain is: ${domain} | |||
| echo Your virtual domains are: ${virtual_domains[*]} | |||
| echo Your Volumes path is: $volumes | |||
| echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid | |||
| echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid | |||
| echo Your LDAP Gitea Bind DN Uid is: $ldap_gitea_uid | |||
| echo Your LDAP Hauk Bind DN Uid is: $ldap_hauk_uid | |||
| echo Your Admin email. Let\'s Encrypt...: $admin_email | |||
| echo Your Paperless Web Server User: $paperless_webserver_user | |||
| echo Your SFTP User: $paperless_ftp_user | |||
| echo $'\E[1;37m' | |||
| read -p "Are These Settings Correct? Yes (y), No (n): " confirm | |||
| while [[ ! $confirm =~ ^[yYnN]{1}$ ]]; do | |||
| read -p "Please Enter 'y' or 'n' To Confirm Settings: " confirm | |||
| done | |||
| if [[ $confirm != [yY] ]]; then | |||
| exit 1 | |||
| fi | |||
| echo $'\E[33m' | |||
| echo "//////////////////////////////////////////////////" | |||
| echo "///////////// COPYING TEMPLATE FILES /////////////" | |||
| echo "//////////////////////////////////////////////////" | |||
| echo $'\E[1;30m' | |||
| cp env.template .env | |||
| cp mariadb.env.template mariadb.env | |||
| cp openldap.env.template openldap.env | |||
| cp mail.env.template mail.env | |||
| cp nextcloud.env.template nextcloud.env | |||
| cp haproxy.env.template haproxy.env | |||
| cp paperless.env.template paperless.env | |||
| cp sftp.env.template sftp.env | |||
| cp gitea.env.template gitea.env | |||
| cp hauk.env.template hauk.env | |||
| cp pihole.env.template pihole.env | |||
| chmod 600 *.env | |||
| # Passwords | |||
| echo MYSQL_ROOT_PWD=$db_pwd >> mariadb.env | |||
| echo MYSQL_ROOT_PWD=$db_pwd >> nextcloud.env | |||
| echo LDAP_ADMIN_PWD=$ldap_pwd >> openldap.env | |||
| echo LDAP_MAIL_PWD=$ldap_mail_pwd >> openldap.env | |||
| echo LDAP_NEXTCLOUD_PWD=$ldap_nextcloud_pwd >> openldap.env | |||
| echo LDAP_GITEA_PWD=$ldap_gitea_pwd >> openldap.env | |||
| echo LDAP_HAUK_PWD=$ldap_hauk_pwd >> openldap.env | |||
| echo LDAP_BIND_PWD=$ldap_mail_pwd >> mail.env | |||
| echo LDAP_BIND_PWD=$ldap_nextcloud_pwd >> nextcloud.env | |||
| echo LDAP_BIND_PWD=$ldap_gitea_pwd >> gitea.env | |||
| echo LDAP_BIND_PWD=$ldap_hauk_pwd >> hauk.env | |||
| echo NEXTCLOUD_ADMIN_PWD=$nextcloud_admin_pwd >> nextcloud.env | |||
| echo NEXTCLOUD_SALT=$nextcloud_salt >> nextcloud.env | |||
| echo NEXTCLOUD_SECRET=$nextcloud_secret >> nextcloud.env | |||
| #echo PAPERLESS_WEBSERVER_PWD=$paperless_webserver_pwd >> paperless.env | |||
| #echo PAPERLESS_PASSPHRASE=$paperless_passphrase >> paperless.env | |||
| echo PAPERLESS_FTP_PWD=$paperless_ftp_pwd >> sftp.env | |||
| echo GITEA_ADMIN_PWD=$gitea_admin_pwd >> gitea.env | |||
| echo HAUK_SERVER_PWD=$hauk_server_pwd >> hauk.env | |||
| #echo $pihole_web_pwd | docker secret create pihole_web_pwd - | |||
| sed -i "s/\${PIHOLE_WEB_PWD}/${pihole_web_pwd}/g" pihole.env | |||
| # IP for Pi-Hole | |||
| IP_LOOKUP="$(ip route get 8.8.8.8 | awk '{ print $NF; exit }')" # May not work for VPN / tun0 | |||
| IPv6_LOOKUP="$(ip -6 route get 2001:4860:4860::8888 | awk '{for(i=1;i<=NF;i++) if ($i=="src") print $(i+1)}')" # May not work for VPN / tun0 | |||
| for i in `ls *.env .env`; do | |||
| sed -i "s/\${DOMAIN}/${domain}/g" $i | |||
| sed -i "s/\${VIRTUAL_DOMAINS}/${virtual_domains[*]}/g" $i | |||
| sed -i "s/\${ORGANIZATION}/${org}/g" $i | |||
| sed -i "s/\${EXTENSION}/${ext}/g" $i | |||
| sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i | |||
| sed -i "s/\${LDAP_MAIL_UID}/${ldap_mail_uid}/g" $i | |||
| sed -i "s/\${LDAP_NEXTCLOUD_UID}/${ldap_nextcloud_uid}/g" $i | |||
| sed -i "s/\${LDAP_GITEA_UID}/${ldap_gitea_uid}/g" $i | |||
| sed -i "s/\${LDAP_HAUK_UID}/${ldap_hauk_uid}/g" $i | |||
| sed -i "s/\${ADMIN_EMAIL}/${admin_email}/g" $i | |||
| sed -i "s/\${PAPERLESS_WEBSERVER_USER}/${paperless_webserver_user}/g" $i | |||
| sed -i "s/\${PAPERLESS_FTP_USER}/${paperless_ftp_user}/g" $i | |||
| sed -i "s/\${IP_LOOKUP}/${IP_LOOKUP}/g" $i | |||
| sed -i "s/\${IPv6_LOOKUP}/${IPv6_LOOKUP}/g" $i | |||
| #sed -i "s/\${}/${}/g" $i | |||
| done; | |||
| # read variables | |||
| . .env | |||
| # repeated env variables | |||
| # domains available for all, just in case | |||
| for i in `ls *.env`; do | |||
| echo "" >> $i | |||
| echo "# Domains" >> $i | |||
| echo "DOMAIN=${DOMAIN}" >> $i | |||
| echo "VIRTUAL_DOMAINS=${VIRTUAL_DOMAINS}" >> $i | |||
| echo "DOMAINS=${DOMAINS}" >> $i | |||
| done | |||
| echo "" >> mail.env | |||
| echo "MAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env | |||
| echo "" >> nextcloud.env | |||
| echo "NEXTCLOUD_SERVER_NAME=${NEXTCLOUD_SERVER_NAME}" >> nextcloud.env | |||
| echo "NEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env | |||
| echo "NEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env | |||
| echo "NEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH}" >> nextcloud.env | |||
| echo "" >> gitea.env | |||
| echo "GITEA_SERVER_NAME=${GITEA_SERVER_NAME}" >> gitea.env | |||
| echo "GITEA_HTTP_PORT=${GITEA_HTTP_PORT}" >> gitea.env | |||
| echo "" >> paperless.env | |||
| echo "PAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUMPTION_PATH}" >> paperless.env | |||
| echo "PAPERLESS_EXPORT_DIR=${PAPERLESS_EXPORT_PATH}" >> paperless.env | |||
| echo "" >> sftp.env | |||
| echo "PAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUMPTION_PATH}" >> sftp.env | |||
| echo "" >> haproxy.env | |||
| echo "NEXTCLOUD_SERVER_NAME=${NEXTCLOUD_SERVER_NAME}" >> haproxy.env | |||
| echo "GITEA_SERVER_NAME=${GITEA_SERVER_NAME}" >> haproxy.env | |||
| echo "HAUK_SERVER_NAME=${HAUK_SERVER_NAME}" >> haproxy.env | |||
| echo $'\E[33m' | |||
| echo "//////////////////////////////////////////////////" | |||
| echo "//////////////// CREATING FOLDERS ////////////////" | |||
| echo "//////////////////////////////////////////////////" | |||
| echo $'\E[1;30m' | |||
| # openldap | |||
| sudo mkdir -p ${LDAP_DATA_VOLUME_PATH} | |||
| sudo mkdir -p ${LDAP_CONFIG_VOLUME_PATH} | |||
| sudo mkdir -p ${LDAP_CERTS_VOLUME_PATH} | |||
| # db | |||
| sudo mkdir -p ${DB_DATA_VOLUME_PATH} | |||
| #sudo mkdir -p ${DB_CONFIG_VOLUME_PATH} | |||
| sudo mkdir -p ${MAIL_DATA_VOLUME_PATH} | |||
| sudo mkdir -p ${MAIL_DATA_VOLUME_PATH}/getmail | |||
| #sudo mkdir -p ${MAIL_STATE_VOLUME_PATH} | |||
| # nextcloud | |||
| sudo mkdir -p ${NEXTCLOUD_DATA_VOLUME_PATH} | |||
| sudo mkdir -p ${NEXTCLOUD_BACKUP_VOLUME_PATH} | |||
| # paperless | |||
| sudo mkdir -p ${PAPERLESS_DATA_VOLUME_PATH} | |||
| sudo mkdir -p ${PAPERLESS_MEDIA_VOLUME_PATH} | |||
| sudo mkdir -p ${PAPERLESS_CONSUMPTION_VOLUME_PATH} | |||
| sudo mkdir -p ${PAPERLESS_EXPORT_VOLUME_PATH} | |||
| # gitea | |||
| sudo mkdir -p ${GITEA_DATA_VOLUME_PATH} | |||
| # Pi-Hole | |||
| sudo mkdir -p ${PIHOLE_CONFIG_VOLUME_PATH} | |||
| sudo mkdir -p ${PIHOLE_DNSMASQ_VOLUME_PATH} | |||
| # let's Encrypt | |||
| sudo mkdir -p ${LETSENCRYPT_VOLUME_PATH} | |||
| echo "Copying getmail confs" | |||
| cp images/email/getmail/getmailrc-* ${MAIL_DATA_VOLUME_PATH}/getmail/ | |||