Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

192 lines
7.0KB

  1. #!/bin/bash
  2. DEFAULT_VOLUMES=/media/volumes
  3. PWD_GEN='< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;'
  4. #PWD_GEN='openssl rand -base64 20'
  5. DEFAULT_LDAP_MAIL_UID='mail'
  6. DEFAULT_LDAP_NEXTCLOUD_UID='nextcloud'
  7. read -p "Main domain: " domain
  8. while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do
  9. read -p "Please Enter a valid domain: " domain
  10. done
  11. # TODO: more than 1 level domains
  12. org=`echo $domain | cut -f1 -d'.'`
  13. ext=`echo $domain | cut -f2 -d'.'`
  14. read -p "Volumes path ($DEFAULT_VOLUMES): " volumes
  15. if [[ ${#volumes} -eq 0 ]]; then
  16. volumes=$DEFAULT_VOLUMES
  17. fi
  18. read -p "DB admin password (a random one will be generated if empty): " db_pwd
  19. if [[ ${#db_pwd} -eq 0 ]]; then
  20. db_pwd=`eval "$PWD_GEN"`
  21. fi
  22. read -p "LDAP admin password (a random one will be generated if empty): " ldap_pwd
  23. if [[ ${#ldap_pwd} -eq 0 ]]; then
  24. ldap_pwd=`eval "$PWD_GEN"`
  25. fi
  26. read -p "LDAP Mail Bind DN uid ($DEFAULT_LDAP_MAIL_UID): " ldap_mail_uid
  27. if [[ ${#ldap_mail_uid} -eq 0 ]]; then
  28. ldap_mail_uid=$DEFAULT_LDAP_MAIL_UID
  29. fi
  30. read -p "LDAP Mail Bind DN Pwd (a random one will be generated if empty): " ldap_mail_pwd
  31. if [[ ${#ldap_mail_pwd} -eq 0 ]]; then
  32. ldap_mail_pwd=`eval "$PWD_GEN"`
  33. fi
  34. read -p "LDAP Nextcloud Bind DN uid ($DEFAULT_LDAP_NEXTCLOUD_UID): " ldap_nextcloud_uid
  35. if [[ ${#ldap_nextcloud_uid} -eq 0 ]]; then
  36. ldap_nextcloud_uid=$DEFAULT_LDAP_NEXTCLOUD_UID
  37. fi
  38. read -p "LDAP Nextcloud Bind DN Pwd (a random one will be generated if empty): " ldap_nextcloud_pwd
  39. if [[ ${#ldap_nextcloud_pwd} -eq 0 ]]; then
  40. ldap_nextcloud_pwd=`eval "$PWD_GEN"`
  41. fi
  42. read -p "Nextcloud Admin User Pwd (a random one will be generated if empty): " nextcloud_admin_pwd
  43. if [[ ${#nextcloud_admin_pwd} -eq 0 ]]; then
  44. nextcloud_admin_pwd=`eval "$PWD_GEN"`
  45. fi
  46. read -p "E-mail for Let's Encrypt account (admin@${domain}): " letsencrypt_email
  47. if [[ ${#letsencrypt_email} -eq 0 ]]; then
  48. letsencrypt_email=admin@${domain}
  49. fi
  50. echo "If you have a password salt and a secret from a previous installation, provide them here."
  51. echo "They are used by Passman and need to remain the same for the vaults to be accessible"
  52. read -p "Nextcloud Pwd Salt (a random one will be generated by NC if empty): " nextcloud_salt
  53. read -p "Nextcloud Secret (a random one will be generated by NC if empty): " nextcloud_secret
  54. read -p "Paperless Web Server User (paperless): " paperless_webserver_user
  55. if [[ ${#paperless_webserver_user} -eq 0 ]]; then
  56. paperless_webserver_user=paperless
  57. fi
  58. read -p "Paperless Web Server Pwd (a random one will be generated if empty): " paperless_webserver_pwd
  59. if [[ ${#paperless_webserver_pwd} -eq 0 ]]; then
  60. paperless_webserver_pwd=`eval "$PWD_GEN"`
  61. fi
  62. read -p "Paperless Encryption Passphrase (a random one will be generated if empty): " paperless_passphrase
  63. if [[ ${#paperless_passphrase} -eq 0 ]]; then
  64. paperless_=`eval "$PWD_GEN"`
  65. fi
  66. read -p "Paperless FTP User (consume): " paperless_ftp_user
  67. if [[ ${#paperless_ftp_user} -eq 0 ]]; then
  68. paperless_ftp_user=consume
  69. fi
  70. read -p "Paperless FTP Pwd (a random one will be generated if empty): " paperless_ftp_pwd
  71. if [[ ${#paperless_ftp_pwd} -eq 0 ]]; then
  72. paperless_ftp_pwd=`eval "$PWD_GEN"`
  73. fi
  74. echo $'\E[33m'
  75. echo "//////////////////////////////////////////////////"
  76. echo "///////////////// PLEASE CONFIRM /////////////////"
  77. echo "//////////////////////////////////////////////////"
  78. echo $'\E[1;30m'
  79. echo Your domain is: $domain
  80. echo Your Volumes path is: $volumes
  81. echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid
  82. echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid
  83. echo Your Let\'s Encrypt account e-mail: $letsencrypt_email
  84. echo Your Paperless Web Server User: $paperless_webserver_user
  85. echo Your Paperless FTP User: $paperless_ftp_user
  86. echo $'\E[1;37m'
  87. read -p "Are These Settings Correct? Yes (y), No (n): " confirm
  88. while [[ ! $confirm =~ ^[yYnN]{1}$ ]]; do
  89. read -p "Please Enter 'y' or 'n' To Confirm Settings: " confirm
  90. done
  91. if [[ $confirm != [yY] ]]; then
  92. exit 1
  93. fi
  94. # Generate docker secrets
  95. echo $db_pwd | docker secret create db_pwd -
  96. echo $ldap_pwd | docker secret create ldap_pwd -
  97. echo $ldap_mail_pwd | docker secret create ldap_mail_pwd -
  98. echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd -
  99. echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd -
  100. echo $nextcloud_salt | docker secret create nextcloud_salt -
  101. echo $nextcloud_secret | docker secret create nextcloud_secret -
  102. echo $paperless_webserver_pwd | docker secret create paperless_webserver_pwd -
  103. echo $paperless_passphrase | docker secret create paperless_passphrase -
  104. echo $paperless_ftp_pwd | docker secret create paperless_ftp_pwd -
  105. echo $'\E[33m'
  106. echo "//////////////////////////////////////////////////"
  107. echo "///////////// COPYING TEMPLATE FILES /////////////"
  108. echo "//////////////////////////////////////////////////"
  109. echo $'\E[1;30m'
  110. cp env.template .env
  111. cp openldap.env.template openldap.env
  112. cp mail.env.template mail.env
  113. cp nextcloud.env.template nextcloud.env
  114. cp haproxy.env.template haproxy.env
  115. cp paperless.env.template paperless.env
  116. for i in `ls *.env .env`; do
  117. sed -i "s/\${DOMAIN}/${domain}/g" $i
  118. sed -i "s/\${ORGANIZATION}/${org}/g" $i
  119. sed -i "s/\${EXTENSION}/${ext}/g" $i
  120. sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i
  121. sed -i "s/\${MAIL_LDAP_UID}/${ldap_mail_uid}/g" $i
  122. sed -i "s/\${NEXTCLOUD_LDAP_UID}/${ldap_nextcloud_uid}/g" $i
  123. sed -i "s/\${LETSENCRYPT_EMAIL}/${letsencrypt_email}/g" $i
  124. sed -i "s/\${PAPERLESS_WEBSERVER_USER}/${paperless_webserver_user}/g" $i
  125. sed -i "s/\${PAPERLESS_FTP_USER}/${paperless_ftp_user}/g" $i
  126. #sed -i "s/\${}/${}/g" $i
  127. done;
  128. # read variables
  129. . .env
  130. # repeated env variables
  131. echo "\nMAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env
  132. echo "\nNEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env
  133. echo "\nNEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env
  134. echo "\nNEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH}" >> nextcloud.env
  135. echo "\nPAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUPTION_PATH}" >> paperless.env
  136. echo "\nPAPERLESS_EXPORT_DIR=${PAPERLESS_EXPORT_PATH}" >> paperless.env
  137. echo $'\E[33m'
  138. echo "//////////////////////////////////////////////////"
  139. echo "//////////////// CREATING FOLDERS ////////////////"
  140. echo "//////////////////////////////////////////////////"
  141. echo $'\E[1;30m'
  142. # openldap
  143. sudo mkdir -p ${LDAP_DATA_VOLUME_PATH}
  144. sudo mkdir -p ${LDAP_CONFIG_VOLUME_PATH}
  145. sudo mkdir -p ${LDAP_CERTS_VOLUME_PATH}
  146. # db
  147. sudo mkdir -p ${DB_DATA_VOLUME_PATH}
  148. #sudo mkdir -p ${DB_CONFIG_VOLUME_PATH}
  149. # mail
  150. sudo mkdir -p ${MAIL_DATA_VOLUME_PATH}
  151. sudo mkdir -p ${MAIL_DATA_VOLUME_PATH}/getmail
  152. #sudo mkdir -p ${MAIL_STATE_VOLUME_PATH}
  153. # nextcloud
  154. sudo mkdir -p ${NEXTCLOUD_DATA_VOLUME_PATH}
  155. sudo mkdir -p ${NEXTCLOUD_BACKUP_VOLUME_PATH}
  156. # paperless
  157. sudo mkdir -p ${PAPERLESS_DATA_VOLUME_PATH}
  158. sudo mkdir -p ${PAPERLESS_MEDIA_VOLUME_PATH}
  159. sudo mkdir -p ${PAPERLESS_CONSUMPTION_VOLUME_PATH}
  160. sudo mkdir -p ${PAPERLESS_EXPORT_VOLUME_PATH}
  161. echo "Copying gemail confs"
  162. cp images/rpi-email/getmail/getmailrc-* ${MAIL_DATA_VOLUME_PATH}/getmail/