docker-entrypoint.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #!/bin/bash
  2. set -eo pipefail
  3. # function
  4. file_env() {
  5. local var="$1"
  6. local fileVar="${var}_FILE"
  7. if [ -n "${!var:-}" ] && [ -n "${!fileVar:-}" ]; then
  8. echo "Both $var and $fileVar are set, but are exclusive"
  9. exit 1
  10. fi
  11. local val=""
  12. if [ -n "${!var:-}" ]; then
  13. val="${!var}"
  14. elif [ -n "${!fileVar:-}" ]; then
  15. val="$(< "${!fileVar}")"
  16. fi
  17. if [ -n "$val" ]; then
  18. export "$var"="$val"
  19. fi
  20. unset "$fileVar"
  21. }
  22. qs() {
  23. if [[ $1 = /run/secrets/* ]]
  24. then
  25. result=`cat $1`
  26. echo ${result@Q}
  27. else
  28. echo ${1@Q}
  29. fi
  30. }
  31. # expand secrets
  32. file_env UNA_DB_PWD
  33. file_env UNA_ADMIN_PWD
  34. file_env UNA_KEY
  35. file_env UNA_SECRET
  36. file_env UNA_HASH_SECRET
  37. file_env UNA_DEBUG_COOKIE
  38. # Unzip
  39. if [ -n "${UNA_ZIP_DOWNLOAD_URL:-}" ] && [ -n "${UNA_ZIP_FOLDER:-}" ] && \
  40. [ ! -e "index.php" ] && [ ! -e "inc/version.inc.php" ]; then
  41. su "$UNA_USER" -c "
  42. set -eo pipefail;
  43. if [ \"${UNA_FOLDER_CLEANUP}\" = \"1\" ]; then
  44. find . -mindepth 1 -maxdepth 1 -exec rm -rf {} +;
  45. fi;
  46. curl -fSL \"${UNA_ZIP_DOWNLOAD_URL}\" -o una.zip;
  47. unzip -q una.zip;
  48. rm una.zip;
  49. mv \"${UNA_ZIP_FOLDER}\"/* .;
  50. mv \"${UNA_ZIP_FOLDER}/.htaccess\" .;
  51. rm -rf \"${UNA_ZIP_FOLDER}\";
  52. chmod 777 inc cache cache_public logs tmp storage;
  53. chmod +x plugins/ffmpeg/ffmpeg.exe;
  54. find storage -type f -exec chmod 666 {} \+;
  55. find storage -type d -exec chmod 777 {} \+;
  56. "
  57. fi
  58. # Clean folders
  59. rm -rf cache/* cache_public/* tmp/*
  60. # Change permissions
  61. chmod +x plugins/ffmpeg/ffmpeg.exe
  62. find . -exec chown $UNA_USER:$UNA_USER {} \+ || true
  63. # Install
  64. if [ -d "install" ] && [ ! -f "inc/header.inc.php" ]; then
  65. if [ -f /tmp/addon.sql ]; then
  66. echo "Found additional SQL file..."
  67. cat /tmp/addon.sql >> ./install/sql/addon.sql
  68. fi
  69. \cp -f /srv/header.inc.php install/patterns/ # make sure that old UNA version can work with ENV vars
  70. su $UNA_USER -c "php ./install/cmd.php \
  71. --db_host=$(qs ${UNA_DB_HOST:-$VAR_DEF_DB_HOST}) \
  72. --db_port=$(qs ${UNA_DB_PORT:-$VAR_DEF_DB_PORT}) \
  73. --db_sock=$(qs ${UNA_DB_SOCK:-}) \
  74. --db_name=$(qs ${UNA_DB_NAME}) \
  75. --db_user=$(qs ${UNA_DB_USER:-$VAR_DEF_DB_USER}) \
  76. --db_password=$(qs ${UNA_DB_PWD:-$VAR_DEF_DB_PWD}) \
  77. --server_http_host=$(qs ${UNA_HTTP_HOST:-$VAR_DEF_HTTP_HOST}) \
  78. --server_php_self='/install/index.php' \
  79. --server_doc_root='/var/www/html/' \
  80. --site_title=$(qs ${UNA_SITE_TITLE:-$VAR_DEF_TITLE}) \
  81. --site_email=$(qs ${UNA_SITE_EMAIL:-$VAR_DEF_EMAIL}) \
  82. --admin_username=$(qs ${UNA_ADMIN_USERNAME:-$VAR_DEF_USERNAME}) \
  83. --admin_email=$(qs ${UNA_ADMIN_EMAIL:-$VAR_DEF_EMAIL}) \
  84. --admin_password=$(qs ${UNA_ADMIN_PWD:-$VAR_DEF_ADMIN_PWD}) \
  85. --oauth_key=$(qs ${UNA_KEY:-}) --oauth_secret=$(qs ${UNA_SECRET:-})" \
  86. && rm -rf ./install
  87. fi
  88. # Crontab
  89. if [[ ! -v UNA_NO_CRONTAB ]]; then
  90. echo "* * * * * /usr/local/bin/php -c /var/www /var/www/html/periodic/cron.php 2>&1 | sed -e \"s/\(.*\)/[\`date\`] \1/\" >>/var/www/cron.log" > /var/www/crontab
  91. chown $UNA_USER:$UNA_USER /var/www/crontab
  92. crontab -u $UNA_USER /var/www/crontab
  93. /etc/init.d/cron start
  94. fi
  95. # subdir config
  96. if [ -n "$UNA_HTTP_PATH" ]; then
  97. echo "Creating Alias for $UNA_HTTP_PATH"
  98. cat > "/etc/apache2/conf-available/99-subfolder.conf" <<EOF
  99. Alias /${UNA_HTTP_PATH} /var/www/html/
  100. <Directory /var/www/html/>
  101. Require all granted
  102. AllowOverride All
  103. Options FollowSymLinks
  104. </Directory>
  105. EOF
  106. a2enconf 99-subfolder
  107. fi
  108. #
  109. exec "$@"