10-config 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/with-contenv bash
  2. # Check if the SYS_ADMIN cap is set
  3. if ! capsh --has-p=cap_sys_admin; then
  4. echo "Required capability SYS_ADMIN is missing"
  5. exit 1
  6. fi
  7. # Check if /dev/shm is large enough (2GB at least)
  8. if ! shm-check; then
  9. echo "/dev/shm must be at least 2GB in size"
  10. exit 1
  11. fi
  12. if [[ -z $JIBRI_RECORDER_PASSWORD || -z $JIBRI_XMPP_PASSWORD ]]; then
  13. echo 'FATAL ERROR: Jibri recorder password and auth password must be set'
  14. exit 1
  15. fi
  16. OLD_JIBRI_RECORDER_PASSWORD=passw0rd
  17. if [[ "$JIBRI_RECORDER_PASSWORD" == "$OLD_JIBRI_RECORDER_PASSWORD" ]]; then
  18. echo 'FATAL ERROR: Jibri recorder password must be changed, check the README'
  19. exit 1
  20. fi
  21. OLD_JIBRI_XMPP_PASSWORD=passw0rd
  22. if [[ "$JIBRI_XMPP_PASSWORD" == "$OLD_JIBRI_XMPP_PASSWORD" ]]; then
  23. echo 'FATAL ERROR: Jibri auth password must be changed, check the README'
  24. exit 1
  25. fi
  26. # DISPLAY is necessary for start
  27. [ -z "${DISPLAY}" ] \
  28. && ( echo -e "\e[31mERROR: Please set DISPLAY variable.\e[39m"; kill 1; exit 1 )
  29. # script for finalizing must have executing bit.
  30. [ ! -z "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \
  31. && [ -f "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \
  32. && [ ! -x "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \
  33. && chmod +x ${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}
  34. # set random jibri nickname for the instance if is not set
  35. [ -z "${JIBRI_INSTANCE_ID}" ] && export JIBRI_INSTANCE_ID="jibri-$(date +%N)"
  36. # check for AUTOSCALER_URL, AUTOSCALER_SIDECAR_KEY_FILE and AUTOSCALER_SIDECAR_KEY_ID as indicator that sidecar should be enabled
  37. if [ -n "$AUTOSCALER_URL" ]; then
  38. if [ -z "$AUTOSCALER_SIDECAR_KEY_FILE" ]; then
  39. export AUTOSCALER_SIDECAR_KEY_FILE="/etc/jitsi/autoscaler-sidecar/asap.pem"
  40. fi
  41. if [ -z "$AUTOSCALER_SIDECAR_KEY_ID" ]; then
  42. # assume key id is equal to the base real path of the key file minus .pem
  43. export AUTOSCALER_SIDECAR_KEY_ID="$(basename "$(realpath "$AUTOSCALER_SIDECAR_KEY_FILE")" | tr -d '.pem')"
  44. fi
  45. if [ -f "$AUTOSCALER_SIDECAR_KEY_FILE" ]; then
  46. echo "AUTOSCALER_URL found, enabling autoscaler sidecar"
  47. export JIBRI_VERSION="$(dpkg -s jibri | grep Version | awk '{print $2}' | sed 's/..$//')"
  48. [ -z "$AUTOSCALER_SIDECAR_PORT" ] && export AUTOSCALER_SIDECAR_PORT="6000"
  49. [ -z "$JIBRI_WEBHOOK_SUBSCRIBERS" ] && export JIBRI_WEBHOOK_SUBSCRIBERS="http://localhost:$AUTOSCALER_SIDECAR_PORT/hook"
  50. [ -z "$AUTOSCALER_SIDECAR_INSTANCE_ID" ] && export AUTOSCALER_SIDECAR_INSTANCE_ID="$JIBRI_INSTANCE_ID"
  51. [ -z "$AUTOSCALER_SIDECAR_REGION" ] && export AUTOSCALER_SIDECAR_REGION="docker"
  52. [ -z "$AUTOSCALER_SIDECAR_GROUP_NAME" ] && export AUTOSCALER_SIDECAR_GROUP_NAME="docker-jibri"
  53. [ -z "$LOCAL_ADDRESS" ] && export LOCAL_ADDRESS="$(ip route get 1 | grep -oP '(?<=src ).*' | awk '{ print $1 '})"
  54. mkdir -p /etc/jitsi/autoscaler-sidecar
  55. tpl /defaults/autoscaler-sidecar.config > /etc/jitsi/autoscaler-sidecar/config
  56. else
  57. echo "No key file at $AUTOSCALER_SIDECAR_KEY_FILE, leaving autoscaler sidecar disabled"
  58. fi
  59. else
  60. echo "No AUTOSCALER_URL defined, leaving autoscaler sidecar disabled"
  61. fi
  62. # maintain backward compatibility with older variable
  63. [ -z "${XMPP_HIDDEN_DOMAIN}" ] && export XMPP_HIDDEN_DOMAIN="$XMPP_RECORDER_DOMAIN"
  64. # always recreate configs
  65. tpl /defaults/jibri.conf > /etc/jitsi/jibri/jibri.conf
  66. tpl /defaults/xmpp.conf > /etc/jitsi/jibri/xmpp.conf
  67. tpl /defaults/logging.properties > /etc/jitsi/jibri/logging.properties
  68. tpl /defaults/xorg-video-dummy.conf > /etc/jitsi/jibri/xorg-video-dummy.conf
  69. # make recording dir
  70. [ -z "${JIBRI_RECORDING_DIR}" ] && export JIBRI_RECORDING_DIR=/config/recordings
  71. mkdir -p ${JIBRI_RECORDING_DIR}
  72. chown -R jibri ${JIBRI_RECORDING_DIR}
  73. # make logs dir
  74. JIBRI_LOGS_DIR=/config/logs
  75. mkdir -p ${JIBRI_LOGS_DIR}
  76. chown -R jibri ${JIBRI_LOGS_DIR}