You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

  1. #!/bin/bash
  2. ## Init is run on host
  3. ## For now it is run every time the script is launched, but
  4. ## it should be launched only once after build.
  5. ## Accessible variables are:
  6. ## - SERVICE_NAME Name of current service
  7. ## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
  8. ## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
  9. ## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
  10. . lib/common
  11. set -e
  12. admin_user=$(options-get admin.user 2>&1) || {
  13. admin_user="admin"
  14. }
  15. read-0 current_user current_password < <(get_admin_user_password) || {
  16. info "Probably no admin user and password set before."
  17. }
  18. admin_password=$(options-get admin.password 2>&1) ||
  19. admin_password=$(options-get admin-password 2>&1) || {
  20. if [ "$current_password" ]; then
  21. admin_password="$current_password"
  22. else
  23. info "Generating ${DARKYELLOW}$MASTER_BASE_SERVICE_NAME${NORMAL}'s"\
  24. "admin password"
  25. admin_password=$(gen_password)
  26. fi
  27. }
  28. if [ "$current_password" != "$admin_password" ] ||
  29. [ "$current_user" != "$admin_user" ]; then
  30. set_admin_user_password "$admin_user" "$admin_password" || {
  31. err "Failed to set admin user and password."
  32. exit 2
  33. }
  34. fi
  35. ## XXXvlab: the directory here for datadir violates DRY as it is also
  36. ## in ``metadata.yml``
  37. init-config-add "\
  38. $MASTER_BASE_SERVICE_NAME:
  39. environment:
  40. NEXTCLOUD_ADMIN_USER: $admin_user
  41. NEXTCLOUD_ADMIN_PASSWORD: $admin_password
  42. NEXTCLOUD_DATA_DIR: /var/lib/nextcloud/data
  43. "
  44. ## ensuring data directories are accessible by nextcloud
  45. uid=$(docker_get_uid "$MASTER_BASE_SERVICE_NAME" "www-data")
  46. dirs=("$SERVICE_DATASTORE/var/lib/nextcloud/data" "$SERVICE_DATASTORE/var/www/html")
  47. mkdir -p "${dirs[@]}"
  48. chown -R "$uid" "${dirs[@]}"