Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

304 rindas
11KB

  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_GITEA_UID='git'
  8. DEFAULT_LDAP_HAUK_UID='hauk'
  9. # main domain
  10. read -p "Add main domain: " domain
  11. while [[ ! $domain =~ ^.*\.[a-z]{2,}$ ]]; do
  12. read -p "Add domain (empty to finish): " domain
  13. done
  14. # TODO: more than 1 level domains
  15. org=`echo ${domain} | cut -f1 -d'.'`
  16. ext=`echo ${domain} | cut -f2 -d'.'`
  17. # additional domain
  18. virtual_domains=()
  19. while :; do
  20. read -p "Add additional domains (empty to finish): " virtual_domain
  21. if [[ -z $virtual_domain ]]; then
  22. break;
  23. elif [[ ! $virtual_domain =~ ^.*\.[a-z]{2,}$ ]]; then
  24. echo "Please Enter a valid domain";
  25. else
  26. virtual_domains+=($virtual_domain);
  27. fi
  28. done
  29. read -p "Volumes path ($DEFAULT_VOLUMES): " volumes
  30. if [[ ${#volumes} -eq 0 ]]; then
  31. volumes=$DEFAULT_VOLUMES
  32. fi
  33. read -p "DB admin password (a random one will be generated if empty): " db_pwd
  34. if [[ ${#db_pwd} -eq 0 ]]; then
  35. db_pwd=`eval "$PWD_GEN"`
  36. fi
  37. read -p "LDAP admin password (a random one will be generated if empty): " ldap_pwd
  38. if [[ ${#ldap_pwd} -eq 0 ]]; then
  39. ldap_pwd=`eval "$PWD_GEN"`
  40. fi
  41. read -p "LDAP Mail Bind DN uid ($DEFAULT_LDAP_MAIL_UID): " ldap_mail_uid
  42. if [[ ${#ldap_mail_uid} -eq 0 ]]; then
  43. ldap_mail_uid=$DEFAULT_LDAP_MAIL_UID
  44. fi
  45. read -p "LDAP Mail Bind DN Pwd (a random one will be generated if empty): " ldap_mail_pwd
  46. if [[ ${#ldap_mail_pwd} -eq 0 ]]; then
  47. ldap_mail_pwd=`eval "$PWD_GEN"`
  48. fi
  49. read -p "LDAP Nextcloud Bind DN uid ($DEFAULT_LDAP_NEXTCLOUD_UID): " ldap_nextcloud_uid
  50. if [[ ${#ldap_nextcloud_uid} -eq 0 ]]; then
  51. ldap_nextcloud_uid=$DEFAULT_LDAP_NEXTCLOUD_UID
  52. fi
  53. read -p "LDAP Nextcloud Bind DN Pwd (a random one will be generated if empty): " ldap_nextcloud_pwd
  54. if [[ ${#ldap_nextcloud_pwd} -eq 0 ]]; then
  55. ldap_nextcloud_pwd=`eval "$PWD_GEN"`
  56. fi
  57. read -p "LDAP Gitea Bind DN uid ($DEFAULT_LDAP_GITEA_UID): " ldap_gitea_uid
  58. if [[ ${#ldap_gitea_uid} -eq 0 ]]; then
  59. ldap_gitea_uid=$DEFAULT_LDAP_GITEA_UID
  60. fi
  61. read -p "LDAP Gitea Bind DN Pwd (a random one will be generated if empty): " ldap_gitea_pwd
  62. if [[ ${#ldap_gitea_pwd} -eq 0 ]]; then
  63. ldap_gitea_pwd=`eval "$PWD_GEN"`
  64. fi
  65. read -p "LDAP Hauk Bind DN uid ($DEFAULT_LDAP_HAUK_UID): " ldap_hauk_uid
  66. if [[ ${#ldap_hauk_uid} -eq 0 ]]; then
  67. ldap_hauk_uid=$DEFAULT_LDAP_HAUK_UID
  68. fi
  69. read -p "LDAP Hauk Bind DN Pwd (a random one will be generated if empty): " ldap_hauk_pwd
  70. if [[ ${#ldap_hauk_pwd} -eq 0 ]]; then
  71. ldap_hauk_pwd=`eval "$PWD_GEN"`
  72. fi
  73. read -p "Nextcloud Admin User Pwd (a random one will be generated if empty): " nextcloud_admin_pwd
  74. if [[ ${#nextcloud_admin_pwd} -eq 0 ]]; then
  75. nextcloud_admin_pwd=`eval "$PWD_GEN"`
  76. fi
  77. read -p "Gitea Admin User Pwd (a random one will be generated if empty): " gitea_admin_pwd
  78. if [[ ${#gitea_admin_pwd} -eq 0 ]]; then
  79. gitea_admin_pwd=`eval "$PWD_GEN"`
  80. fi
  81. read -p "Hauk Server Pwd (a random one will be generated if empty): " hauk_server_pwd
  82. if [[ ${#hauk_server_pwd} -eq 0 ]]; then
  83. hauk_server_pwd=`eval "$PWD_GEN"`
  84. fi
  85. read -p "Pi-Hole Web User Pwd (a random one will be generated if empty): " pihole_web_pwd
  86. if [[ ${#pihole_web_pwd} -eq 0 ]]; then
  87. pihole_web_pwd=`eval "$PWD_GEN"`
  88. fi
  89. read -p "Admin E-mail, used for Let's Encrypt account and more (admin@${domain}): " admin_email
  90. if [[ ${#admin_email} -eq 0 ]]; then
  91. admin_email=admin@${domain}
  92. fi
  93. echo "If you have a password salt and a secret from a previous installation, provide them here."
  94. echo "They are used by Passman and need to remain the same for the vaults to be accessible"
  95. read -p "Nextcloud Pwd Salt (a random one will be generated by NC if empty): " nextcloud_salt
  96. read -p "Nextcloud Secret (a random one will be generated by NC if empty): " nextcloud_secret
  97. # read -p "Paperless Web Server User (paperless): " paperless_webserver_user
  98. # if [[ ${#paperless_webserver_user} -eq 0 ]]; then
  99. # paperless_webserver_user=paperless
  100. # fi
  101. # read -p "Paperless Web Server Pwd (a random one will be generated if empty): " paperless_webserver_pwd
  102. # if [[ ${#paperless_webserver_pwd} -eq 0 ]]; then
  103. # paperless_webserver_pwd=`eval "$PWD_GEN"`
  104. # fi
  105. # read -p "Paperless Encryption Passphrase (a random one will be generated if empty): " paperless_passphrase
  106. # if [[ ${#paperless_passphrase} -eq 0 ]]; then
  107. # paperless_=`eval "$PWD_GEN"`
  108. # fi
  109. read -p "SFTP User - SFTP server is used by paperless (consume): " paperless_ftp_user
  110. if [[ ${#paperless_ftp_user} -eq 0 ]]; then
  111. paperless_ftp_user=consume
  112. fi
  113. read -p "SFTP Pwd (a random one will be generated if empty): " paperless_ftp_pwd
  114. if [[ ${#paperless_ftp_pwd} -eq 0 ]]; then
  115. paperless_ftp_pwd=`eval "$PWD_GEN"`
  116. fi
  117. echo $'\E[33m'
  118. echo "//////////////////////////////////////////////////"
  119. echo "///////////////// PLEASE CONFIRM /////////////////"
  120. echo "//////////////////////////////////////////////////"
  121. echo $'\E[1;30m'
  122. echo Your main domain is: ${domain}
  123. echo Your virtual domains are: ${virtual_domains[*]}
  124. echo Your Volumes path is: $volumes
  125. echo Your LDAP Mail Bind DN Uid is: $ldap_mail_uid
  126. echo Your LDAP Nextcloud Bind DN Uid is: $ldap_nextcloud_uid
  127. echo Your LDAP Gitea Bind DN Uid is: $ldap_gitea_uid
  128. echo Your LDAP Hauk Bind DN Uid is: $ldap_hauk_uid
  129. echo Your Admin email. Let\'s Encrypt...: $admin_email
  130. echo Your Paperless Web Server User: $paperless_webserver_user
  131. echo Your SFTP User: $paperless_ftp_user
  132. echo $'\E[1;37m'
  133. read -p "Are These Settings Correct? Yes (y), No (n): " confirm
  134. while [[ ! $confirm =~ ^[yYnN]{1}$ ]]; do
  135. read -p "Please Enter 'y' or 'n' To Confirm Settings: " confirm
  136. done
  137. if [[ $confirm != [yY] ]]; then
  138. exit 1
  139. fi
  140. echo $'\E[33m'
  141. echo "//////////////////////////////////////////////////"
  142. echo "///////////// COPYING TEMPLATE FILES /////////////"
  143. echo "//////////////////////////////////////////////////"
  144. echo $'\E[1;30m'
  145. cp env.template .env
  146. cp mariadb.env.template mariadb.env
  147. cp openldap.env.template openldap.env
  148. cp mail.env.template mail.env
  149. cp nextcloud.env.template nextcloud.env
  150. cp haproxy.env.template haproxy.env
  151. cp paperless.env.template paperless.env
  152. cp sftp.env.template sftp.env
  153. cp gitea.env.template gitea.env
  154. cp hauk.env.template hauk.env
  155. cp pihole.env.template pihole.env
  156. chmod 600 *.env
  157. # Passwords
  158. echo MYSQL_ROOT_PWD=$db_pwd >> mariadb.env
  159. echo MYSQL_ROOT_PWD=$db_pwd >> nextcloud.env
  160. echo LDAP_ADMIN_PWD=$ldap_pwd >> openldap.env
  161. echo LDAP_MAIL_PWD=$ldap_mail_pwd >> openldap.env
  162. echo LDAP_NEXTCLOUD_PWD=$ldap_nextcloud_pwd >> openldap.env
  163. echo LDAP_GITEA_PWD=$ldap_gitea_pwd >> openldap.env
  164. echo LDAP_HAUK_PWD=$ldap_hauk_pwd >> openldap.env
  165. echo LDAP_BIND_PWD=$ldap_mail_pwd >> mail.env
  166. echo LDAP_BIND_PWD=$ldap_nextcloud_pwd >> nextcloud.env
  167. echo LDAP_BIND_PWD=$ldap_gitea_pwd >> gitea.env
  168. echo LDAP_BIND_PWD=$ldap_hauk_pwd >> hauk.env
  169. echo NEXTCLOUD_ADMIN_PWD=$nextcloud_admin_pwd >> nextcloud.env
  170. echo NEXTCLOUD_SALT=$nextcloud_salt >> nextcloud.env
  171. echo NEXTCLOUD_SECRET=$nextcloud_secret >> nextcloud.env
  172. #echo PAPERLESS_WEBSERVER_PWD=$paperless_webserver_pwd >> paperless.env
  173. #echo PAPERLESS_PASSPHRASE=$paperless_passphrase >> paperless.env
  174. echo PAPERLESS_FTP_PWD=$paperless_ftp_pwd >> sftp.env
  175. echo GITEA_ADMIN_PWD=$gitea_admin_pwd >> gitea.env
  176. echo HAUK_SERVER_PWD=$hauk_server_pwd >> hauk.env
  177. #echo $pihole_web_pwd | docker secret create pihole_web_pwd -
  178. sed -i "s/\${PIHOLE_WEB_PWD}/${pihole_web_pwd}/g" pihole.env
  179. # IP for Pi-Hole
  180. IP_LOOKUP="$(ip route get 8.8.8.8 | awk '{ print $NF; exit }')" # May not work for VPN / tun0
  181. 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
  182. for i in `ls *.env .env`; do
  183. sed -i "s/\${DOMAIN}/${domain}/g" $i
  184. sed -i "s/\${VIRTUAL_DOMAINS}/${virtual_domains[*]}/g" $i
  185. sed -i "s/\${ORGANIZATION}/${org}/g" $i
  186. sed -i "s/\${EXTENSION}/${ext}/g" $i
  187. sed -i "s/\${VOLUMES_PATH}/${volumes//\//\\/}/g" $i
  188. sed -i "s/\${LDAP_MAIL_UID}/${ldap_mail_uid}/g" $i
  189. sed -i "s/\${LDAP_NEXTCLOUD_UID}/${ldap_nextcloud_uid}/g" $i
  190. sed -i "s/\${LDAP_GITEA_UID}/${ldap_gitea_uid}/g" $i
  191. sed -i "s/\${LDAP_HAUK_UID}/${ldap_hauk_uid}/g" $i
  192. sed -i "s/\${ADMIN_EMAIL}/${admin_email}/g" $i
  193. sed -i "s/\${PAPERLESS_WEBSERVER_USER}/${paperless_webserver_user}/g" $i
  194. sed -i "s/\${PAPERLESS_FTP_USER}/${paperless_ftp_user}/g" $i
  195. sed -i "s/\${IP_LOOKUP}/${IP_LOOKUP}/g" $i
  196. sed -i "s/\${IPv6_LOOKUP}/${IPv6_LOOKUP}/g" $i
  197. #sed -i "s/\${}/${}/g" $i
  198. done;
  199. # read variables
  200. . .env
  201. # repeated env variables
  202. # domains available for all, just in case
  203. for i in `ls *.env`; do
  204. echo "" >> $i
  205. echo "# Domains" >> $i
  206. echo "DOMAIN=${DOMAIN}" >> $i
  207. echo "VIRTUAL_DOMAINS=${VIRTUAL_DOMAINS}" >> $i
  208. echo "DOMAINS=${DOMAINS}" >> $i
  209. done
  210. echo "" >> mail.env
  211. echo "MAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env
  212. echo "" >> nextcloud.env
  213. echo "NEXTCLOUD_SERVER_NAME=${NEXTCLOUD_SERVER_NAME}" >> nextcloud.env
  214. echo "NEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env
  215. echo "NEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env
  216. echo "NEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH}" >> nextcloud.env
  217. echo "" >> gitea.env
  218. echo "GITEA_SERVER_NAME=${GITEA_SERVER_NAME}" >> gitea.env
  219. echo "GITEA_HTTP_PORT=${GITEA_HTTP_PORT}" >> gitea.env
  220. echo "" >> paperless.env
  221. echo "PAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUMPTION_PATH}" >> paperless.env
  222. echo "PAPERLESS_EXPORT_DIR=${PAPERLESS_EXPORT_PATH}" >> paperless.env
  223. echo "" >> sftp.env
  224. echo "PAPERLESS_CONSUMPTION_DIR=${PAPERLESS_CONSUMPTION_PATH}" >> sftp.env
  225. echo "" >> haproxy.env
  226. echo "NEXTCLOUD_SERVER_NAME=${NEXTCLOUD_SERVER_NAME}" >> haproxy.env
  227. echo "GITEA_SERVER_NAME=${GITEA_SERVER_NAME}" >> haproxy.env
  228. echo "HAUK_SERVER_NAME=${HAUK_SERVER_NAME}" >> haproxy.env
  229. echo $'\E[33m'
  230. echo "//////////////////////////////////////////////////"
  231. echo "//////////////// CREATING FOLDERS ////////////////"
  232. echo "//////////////////////////////////////////////////"
  233. echo $'\E[1;30m'
  234. # openldap
  235. sudo mkdir -p ${LDAP_DATA_VOLUME_PATH}
  236. sudo mkdir -p ${LDAP_CONFIG_VOLUME_PATH}
  237. sudo mkdir -p ${LDAP_CERTS_VOLUME_PATH}
  238. # db
  239. sudo mkdir -p ${DB_DATA_VOLUME_PATH}
  240. #sudo mkdir -p ${DB_CONFIG_VOLUME_PATH}
  241. # mail
  242. sudo mkdir -p ${MAIL_DATA_VOLUME_PATH}
  243. sudo mkdir -p ${MAIL_DATA_VOLUME_PATH}/getmail
  244. #sudo mkdir -p ${MAIL_STATE_VOLUME_PATH}
  245. # nextcloud
  246. sudo mkdir -p ${NEXTCLOUD_DATA_VOLUME_PATH}
  247. sudo mkdir -p ${NEXTCLOUD_BACKUP_VOLUME_PATH}
  248. # paperless
  249. sudo mkdir -p ${PAPERLESS_DATA_VOLUME_PATH}
  250. sudo mkdir -p ${PAPERLESS_MEDIA_VOLUME_PATH}
  251. sudo mkdir -p ${PAPERLESS_CONSUMPTION_VOLUME_PATH}
  252. sudo mkdir -p ${PAPERLESS_EXPORT_VOLUME_PATH}
  253. # gitea
  254. sudo mkdir -p ${GITEA_DATA_VOLUME_PATH}
  255. # Pi-Hole
  256. sudo mkdir -p ${PIHOLE_CONFIG_VOLUME_PATH}
  257. sudo mkdir -p ${PIHOLE_DNSMASQ_VOLUME_PATH}
  258. # let's Encrypt
  259. sudo mkdir -p ${LETSENCRYPT_VOLUME_PATH}
  260. echo "Copying getmail confs"
  261. cp images/email/getmail/getmailrc-* ${MAIL_DATA_VOLUME_PATH}/getmail/