Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

217 lines
7.9KB

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