setup_environment.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. # Ensure we're in the project root directory
  3. PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
  4. cd "${PROJECT_ROOT}"
  5. # Define directories relative to project root
  6. CREDENTIALS_DIR="config/credentials"
  7. DOCKER_DIR="docker"
  8. KEYCLOAK_SCRIPTS_DIR="scripts/setup/keycloak"
  9. # Create necessary directories
  10. mkdir -p "${CREDENTIALS_DIR}"
  11. mkdir -p "${DOCKER_DIR}"
  12. mkdir -p "${KEYCLOAK_SCRIPTS_DIR}"
  13. # Function to generate secure passwords
  14. generate_password() {
  15. openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24
  16. }
  17. # Date for documentation
  18. SETUP_DATE=$(date '+%Y-%m-%d_%H-%M-%S')
  19. # Generate passwords
  20. KEYCLOAK_ADMIN_PASSWORD=$(generate_password)
  21. KC_DB_PASSWORD=$(generate_password)
  22. TESTADMIN_PASSWORD=$(generate_password)
  23. TESTUSER_PASSWORD=$(generate_password)
  24. NEXTCLOUD_DB_ROOT_PASSWORD=$(generate_password)
  25. NEXTCLOUD_DB_USER=$(generate_password)
  26. NEXTCLOUD_DB_PASSWORD=$(generate_password)
  27. NEXTCLOUD_ADMIN_USER=$(generate_password)
  28. NEXTCLOUD_ADMIN_PASSWORD=$(generate_password)
  29. # Create .env file in docker directory
  30. cat > "${DOCKER_DIR}/.env" << EOL
  31. # Generated on ${SETUP_DATE}
  32. # Keycloak Admin
  33. KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD}
  34. # Keycloak Database
  35. KC_DB_USERNAME=keycloak
  36. KC_DB_PASSWORD=${KC_DB_PASSWORD}
  37. # Nextcloud Database
  38. NEXTCLOUD_DB_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD}
  39. NEXTCLOUD_DB_USER=${NEXTCLOUD_DB_USER}
  40. NEXTCLOUD_DB_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
  41. NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
  42. NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
  43. EOL
  44. # Create .env file for keycloak setup script
  45. cat > "${KEYCLOAK_SCRIPTS_DIR}/.env" << EOL
  46. # Generated on ${SETUP_DATE}
  47. KEYCLOAK_URL=https://auth.mrx8086.com
  48. KEYCLOAK_ADMIN_USER=admin
  49. KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD}
  50. NEXTCLOUD_CLIENT_ID=nextcloud
  51. PAPERLESS_CLIENT_ID=paperless
  52. NODERED_CLIENT_ID=nodered
  53. TESTADMIN_PASSWORD=${TESTADMIN_PASSWORD}
  54. TESTUSER_PASSWORD=${TESTUSER_PASSWORD}
  55. EOL
  56. # Create encrypted credentials documentation
  57. cat > "${CREDENTIALS_DIR}/credentials_${SETUP_DATE}.txt" << EOL
  58. Setup Date: ${SETUP_DATE}
  59. Keycloak Admin Credentials:
  60. Username: admin
  61. Password: ${KEYCLOAK_ADMIN_PASSWORD}
  62. Keycloak Database Credentials:
  63. Username: keycloak
  64. Password: ${KC_DB_PASSWORD}
  65. Test Admin Credentials:
  66. Password: ${TESTADMIN_PASSWORD}
  67. Test User Credentials:
  68. Password: ${TESTUSER_PASSWORD}
  69. Nextcloud Database Credentials:
  70. Root Password: ${NEXTCLOUD_DB_ROOT_PASSWORD}
  71. User: ${NEXTCLOUD_DB_USER}
  72. Password: ${NEXTCLOUD_DB_PASSWORD}
  73. Nextcloud Admin Credentials:
  74. Username: ${NEXTCLOUD_ADMIN_USER}
  75. Password: ${NEXTCLOUD_ADMIN_PASSWORD}
  76. EOL
  77. # Encrypt credentials file
  78. gpg --symmetric --cipher-algo AES256 "${CREDENTIALS_DIR}/credentials_${SETUP_DATE}.txt"
  79. rm "${CREDENTIALS_DIR}/credentials_${SETUP_DATE}.txt"
  80. echo "Environment setup completed!"
  81. echo "Credentials have been saved and encrypted in: ${CREDENTIALS_DIR}/credentials_${SETUP_DATE}.txt.gpg"
  82. echo ".env file for docker-compose has been created in: ${DOCKER_DIR}/.env"
  83. echo ".env file for setup_realm.js has been created in: ${KEYCLOAK_SCRIPTS_DIR}/.env"
  84. echo ""
  85. echo "To view credentials, use:"
  86. echo "gpg -d ${CREDENTIALS_DIR}/credentials_${SETUP_DATE}.txt.gpg"