start.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/bin/bash
  2. set -eu
  3. echo "Creating directories"
  4. mkdir -p /app/data/public/uploads /run/nodebb/logs /run/nodebb/public
  5. if [[ -z "$(ls -A /run/nodebb/public)" ]]; then
  6. echo "Copying public files"
  7. cp -rf /app/code/public_template/* /run/nodebb/public
  8. # symlink uploads for backup
  9. cp -rf /app/code/public_template/uploads/* /app/data/public/uploads
  10. rm -rf /run/nodebb/public/uploads
  11. ln -sf /app/data/public/uploads /run/nodebb/public/uploads
  12. fi
  13. chown -R cloudron:cloudron /app/data /run/nodebb
  14. export NODE_ENV=production
  15. export NODE_PATH=/app/code/node_modules
  16. if [[ ! -f /app/data/.setup_done ]]; then
  17. echo "Running initial setup"
  18. setup="{
  19. \"url\": \"${APP_ORIGIN}\",
  20. \"admin:username\": \"admin\",
  21. \"admin:password\": \"password\",
  22. \"admin:password:confirm\": \"password\",
  23. \"admin:email\": \"admin@cloudron.io\",
  24. \"database\": \"mongo\",
  25. \"mongo:host\": \"${MONGODB_HOST}\",
  26. \"mongo:port\": \"${MONGODB_PORT}\",
  27. \"mongo:username\": \"${MONGODB_USERNAME}\",
  28. \"mongo:password\": \"${MONGODB_PASSWORD}\",
  29. \"mongo:database\": \"${MONGODB_DATABASE}\"
  30. }"
  31. # this will create a config.json
  32. node /app/code/app --setup "${setup}"
  33. touch /app/data/.setup_done
  34. fi
  35. # Re-create config.json
  36. sed -e "s,##APP_ORIGIN,${APP_ORIGIN}," \
  37. -e "s/##MONGODB_HOST/${MONGODB_HOST}/" \
  38. -e "s/##MONGODB_PORT/${MONGODB_PORT}/" \
  39. -e "s/##MONGODB_USERNAME/${MONGODB_USERNAME}/" \
  40. -e "s/##MONGODB_PASSWORD/${MONGODB_PASSWORD}/" \
  41. -e "s/##MONGODB_DATABASE/${MONGODB_DATABASE}/" \
  42. -e "s/##SECRET/$(uuid)/" \
  43. /app/code/config.json.template > /run/nodebb/config.json
  44. echo "Updating nodebb"
  45. node /app/code/app --upgrade
  46. echo "Starting nodebb"
  47. /usr/local/bin/gosu cloudron:cloudron node /app/code/loader.js --no-daemon --no-silent --config /run/nodebb/config.json