forked from switnet/quick-jibri-installer
				
			Compare commits
	
		
			No commits in common. "059213caa4d5cb084569d90b733df82a9f64e5e3" and "40b84218fce96eadb9e455e62fecfb9e7d7f82f5" have entirely different histories.
		
	
	
		
			059213caa4
			...
			40b84218fc
		
	
		|  | @ -122,14 +122,10 @@ elif [ -f "$WS_CONF" ]; then | |||
|     echo "> Setting up webserver configuration file..." | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ #Etherpad block" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ location \^\~\ \/etherpad\/ {" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_http_version 1.1;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_set_header Upgrade \$http_upgrade;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_set_header Connection \$connection_upgrade;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_pass http:\/\/localhost:9001\/;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_set_header X-Forwarded-For \$remote_addr;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_buffering off;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_redirect off;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_set_header       Host \$host;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ \ \ \ \ proxy_pass http:\/\/localhost:9001\/;" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \ \ \ \ }" "$WS_CONF" | ||||
|     sed -i "/$WS_CONF_MATCH1/i \\\n" "$WS_CONF" | ||||
| else | ||||
|  | @ -142,7 +138,7 @@ if [ "$(grep -c "etherpad_base" "$WS_CONF")" != 0 ]; then | |||
|     echo -e "> $MEET_CONF seems configured, skipping...\n" | ||||
| else | ||||
|     echo -e "> Setting etherpad domain at $MEET_CONF...\n" | ||||
|     sed -i "s|// etherpad_base: .*|etherpad_base: \'https://$DOMAIN/etherpad/p/\',|" "$MEET_CONF" | ||||
|     sed -i "/ openSharedDocumentOnJoin:/a\ \ \ \ etherpad_base: \'https://$DOMAIN/etherpad/p/\'," "$MEET_CONF" | ||||
| fi | ||||
| 
 | ||||
| echo "> Checking nginx configuration..." | ||||
|  |  | |||
|  | @ -1,126 +0,0 @@ | |||
| #!/bin/bash | ||||
| # Quick Jigasi Installer with VOSK backend - *buntu (LTS) based systems. | ||||
| # SwITNet Ltd © - 2024, https://switnet.net/ | ||||
| # GPLv3 or later. | ||||
| 
 | ||||
| #Check if user is root | ||||
| if ! [ "$(id -u)" = 0 ]; then | ||||
|    echo "You need to be root or have sudo privileges!" | ||||
|    exit 0 | ||||
| fi | ||||
| exit_if_not_installed() { | ||||
| if [ "$(dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -c "ok installed")" != "1" ]; then | ||||
|     echo " This instance doesn't have $1 installed, exiting..." | ||||
|     echo " If you think this is an error, please report to: | ||||
|     -> https://forge.switnet.net/switnet/quick-jibri-installer/issues " | ||||
|     exit | ||||
| fi | ||||
| } | ||||
| 
 | ||||
| clear | ||||
| echo '' | ||||
| echo '########################################################################' | ||||
| echo '                       Jigasi Transcript addon' | ||||
| echo '########################################################################' | ||||
| echo '                    by Software, IT & Networks Ltd' | ||||
| echo '' | ||||
| 
 | ||||
| exit_if_not_installed jitsi-meet | ||||
| 
 | ||||
| DOMAIN="$(find /etc/prosody/conf.d/ -name \*.lua|awk -F'.cfg' '!/localhost/{print $1}'|xargs basename)" | ||||
| JIG_TRANSC_PASWD="$(tr -dc "a-zA-Z0-9#*=" < /dev/urandom | fold -w 16 | head -n1)" | ||||
| JIG_SIP_PROP="/etc/jitsi/jigasi/sip-communicator.properties" | ||||
| export DOMAIN | ||||
| export JIG_TRANSC_PASWD | ||||
| 
 | ||||
| apt-get -q2 update | ||||
| 
 | ||||
| # Disable SIP account prompt by default | ||||
| echo "jigasi	jigasi/sip-account	string	''" | debconf-set-selections | ||||
| echo "jigasi	jigasi/sip-password	password	''" | debconf-set-selections | ||||
| 
 | ||||
| echo "Installing Jigasi, SIP configuration disabled by default." | ||||
| apt-get -y install gettext-base jigasi docker.io | ||||
| 
 | ||||
| echo "Please select a language for the VOSK transcription model:" | ||||
| echo "1) Chinese" | ||||
| echo "2) English" | ||||
| echo "3) French" | ||||
| echo "4) German" | ||||
| echo "5) Hindi" | ||||
| echo "6) Japanese" | ||||
| echo "7) Russian" | ||||
| echo "8) Spanish" | ||||
| 
 | ||||
| read -p "Enter the number corresponding to your language choice: " -r lang_choice | ||||
| 
 | ||||
| case $lang_choice in | ||||
|     1) | ||||
|         echo "You selected Chinese." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-cn" | ||||
|         ;; | ||||
|     2) | ||||
|         echo "You selected English." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-en" | ||||
|         ;; | ||||
|     3) | ||||
|         echo "You selected French." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-fr" | ||||
|         ;; | ||||
|     4) | ||||
|         echo "You selected German." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-de" | ||||
|         ;; | ||||
|     5) | ||||
|         echo "You selected Hindi." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-hi" | ||||
|         ;; | ||||
|     6) | ||||
|         echo "You selected Japanese." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-ja" | ||||
|         ;; | ||||
|     7) | ||||
|         echo "You selected Russian." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-ru" | ||||
|         ;; | ||||
|     8) | ||||
|         echo "You selected Spanish." | ||||
|         VOSK_DOCKER_MODEL="alphacep/kaldi-es" | ||||
|         ;; | ||||
|     *) | ||||
|         echo "Invalid selection. Please choose a number between 1 and 8." | ||||
|         ;; | ||||
| esac | ||||
| 
 | ||||
| # Running selected VOSK docker model. | ||||
| docker run -d -p 2700:2700 ${VOSK_DOCKER_MODEL}:latest | ||||
| 
 | ||||
| echo "Setting up Jigasi transcript with current platform..." | ||||
| 
 | ||||
| # Jitsi Meet | ||||
| echo "> Patching Jitsi Meet's config.js for Transcription support." | ||||
| echo "  Read more at patches/jigasi/jigasi-meet-config.patch file" | ||||
| envsubst < patches/jigasi/jigasi-meet-config.patch | patch --no-backup-if-mismatch -d / -p1 | ||||
| 
 | ||||
| # Jigasi | ||||
| echo "> Patching jigasi's sip-communicator.properties configuration." | ||||
| echo "  Read more at patches/jigasi/jigasi-sip-properties.patch file" | ||||
| cp "$JIG_SIP_PROP" ${JIG_SIP_PROP}-dpkg-file | ||||
| envsubst < patches/jigasi/jigasi-sip-properties.patch | patch --no-backup-if-mismatch -d / -p1 | ||||
| 
 | ||||
| # Create transcribe user on hidden domain. | ||||
| prosodyctl register transcriber recorder."$DOMAIN" "$JIG_TRANSC_PASWD" | ||||
| 
 | ||||
| # Restart services. | ||||
| systemctl restart prosody \ | ||||
|                   jicofo \ | ||||
|                   jigasi \ | ||||
|                   jibri* \ | ||||
|                   jitsi-videobridge2 | ||||
| 
 | ||||
| echo "" | ||||
| echo "Full transcript files are available at:" | ||||
| echo "--> /var/lib/jigasi/transcripts/" | ||||
| echo "" | ||||
| echo "Happy transcripting!" | ||||
| echo "" | ||||
|  | @ -1,40 +0,0 @@ | |||
| # Quick Jigasi Installer with VOSK backend - *buntu (LTS) based systems. | ||||
| # SwITNet Ltd © - 2024, https://switnet.net/ | ||||
| # GPLv3 or later. | ||||
| 
 | ||||
| Enable transcription on jitsi meet config.js file. | ||||
| 
 | ||||
| diff --git a/etc/jitsi/meet/${DOMAIN}-config.js b/etc/jitsi/meet/${DOMAIN}-config.js
 | ||||
| index f412891..f704157 100644
 | ||||
| --- a/etc/jitsi/meet/${DOMAIN}-config.js
 | ||||
| +++ b/etc/jitsi/meet/${DOMAIN}-config.js
 | ||||
| @@ -407,9 +407,9 @@ var config = {
 | ||||
|      // autoCaptionOnRecord: false, | ||||
|   | ||||
|      // Transcription options. | ||||
| -    // transcription: {
 | ||||
| +    transcription: {
 | ||||
|      //     // Whether the feature should be enabled or not. | ||||
| -    //     enabled: false,
 | ||||
| +        enabled: true,
 | ||||
|   | ||||
|      //     // Translation languages. | ||||
|      //     // Available languages can be found in | ||||
| @@ -424,7 +424,7 @@ var config = {
 | ||||
|      //     // detected based on the environment, e.g. if the app is opened in a chrome instance which | ||||
|      //     // is using french as its default language then transcriptions for that participant will be in french. | ||||
|      //     // Defaults to true. | ||||
| -    //     useAppLanguage: true,
 | ||||
| +        useAppLanguage: true,
 | ||||
|   | ||||
|      //     // Transcriber language. This settings will only work if "useAppLanguage" | ||||
|      //     // is explicitly set to false. | ||||
| @@ -434,7 +434,7 @@ var config = {
 | ||||
|   | ||||
|      //     // Enables automatic turning on transcribing when recording is started | ||||
|      //     autoTranscribeOnRecord: false, | ||||
| -    // },
 | ||||
| +    },
 | ||||
|   | ||||
|      // Misc | ||||
|   | ||||
|  | @ -1,80 +0,0 @@ | |||
| # Quick Jigasi Installer with VOSK backend - *buntu (LTS) based systems. | ||||
| # SwITNet Ltd © - 2024, https://switnet.net/ | ||||
| # GPLv3 or later. | ||||
| 
 | ||||
| Modify sip-communicator.properties to run Jigasi along with VOSK Models. | ||||
| 
 | ||||
| diff --git a/etc/jitsi/jigasi/sip-communicator.properties b/etc/jitsi/jigasi/sip-communicator.properties
 | ||||
| index 7a8d0f3..ae5369a 100644
 | ||||
| --- a/etc/jitsi/jigasi/sip-communicator.properties
 | ||||
| +++ b/etc/jitsi/jigasi/sip-communicator.properties
 | ||||
| @@ -165,12 +165,12 @@ org.jitsi.jigasi.xmpp.acc.USE_DEFAULT_STUN_SERVER=false
 | ||||
|   | ||||
|  # If you want jigasi to perform authenticated login instead of anonymous login | ||||
|  # to the XMPP server, you can set the following properties. | ||||
| -# org.jitsi.jigasi.xmpp.acc.USER_ID=SOME_USER@SOME_DOMAIN
 | ||||
| -# org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS
 | ||||
| -# org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
 | ||||
| +org.jitsi.jigasi.xmpp.acc.USER_ID=transcriber@recorder.${DOMAIN}
 | ||||
| +org.jitsi.jigasi.xmpp.acc.PASS=${JIG_TRANSC_PASWD}
 | ||||
| +org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
 | ||||
|   | ||||
|  # To fix SSL/TLS required by client but not supported by server | ||||
| -#org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true
 | ||||
| +org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true
 | ||||
|   | ||||
|  # Can be used in combination with jitsi-meet module mod_auth_jitsi-shared-secret | ||||
|  # To have jigasi use a random username on every call | ||||
| @@ -187,7 +187,7 @@ org.jitsi.jigasi.xmpp.acc.USE_DEFAULT_STUN_SERVER=false
 | ||||
|  # Activate this property if you are using self-signed certificates or other | ||||
|  # type of non-trusted certicates. In this mode your service trust in the | ||||
|  # remote certificates always. | ||||
| -# net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true
 | ||||
| +net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true
 | ||||
|   | ||||
|  # Enable this property to be able to shutdown gracefully jigasi using | ||||
|  # a rest command | ||||
| @@ -196,31 +196,31 @@ org.jitsi.jigasi.xmpp.acc.USE_DEFAULT_STUN_SERVER=false
 | ||||
|  # Options regarding Transcription. Read the README for a detailed description | ||||
|  # about each property | ||||
|   | ||||
| -#org.jitsi.jigasi.ENABLE_TRANSCRIPTION=false
 | ||||
| -#org.jitsi.jigasi.ENABLE_SIP=true
 | ||||
| +org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
 | ||||
| +org.jitsi.jigasi.ENABLE_SIP=false
 | ||||
|   | ||||
|  # whether to use the more expensive, but better performing | ||||
|  # "video" model when doing transcription | ||||
|  # org.jitsi.jigasi.transcription.USE_VIDEO_MODEL = false | ||||
|   | ||||
|  # delivering final transcript | ||||
| -# org.jitsi.jigasi.transcription.DIRECTORY=/var/lib/jigasi/transcripts
 | ||||
| -# org.jitsi.jigasi.transcription.BASE_URL=http://localhost/
 | ||||
| -# org.jitsi.jigasi.transcription.jetty.port=-1
 | ||||
| -# org.jitsi.jigasi.transcription.ADVERTISE_URL=false
 | ||||
| +org.jitsi.jigasi.transcription.DIRECTORY=/var/lib/jigasi/transcripts
 | ||||
| +org.jitsi.jigasi.transcription.BASE_URL=http://localhost/
 | ||||
| +org.jitsi.jigasi.transcription.jetty.port=-1
 | ||||
| +org.jitsi.jigasi.transcription.ADVERTISE_URL=false
 | ||||
|   | ||||
|  # save formats | ||||
| -# org.jitsi.jigasi.transcription.SAVE_JSON=false
 | ||||
| -# org.jitsi.jigasi.transcription.SAVE_TXT=true
 | ||||
| +org.jitsi.jigasi.transcription.SAVE_JSON=false
 | ||||
| +org.jitsi.jigasi.transcription.SAVE_TXT=true
 | ||||
|   | ||||
|  # send formats | ||||
| -# org.jitsi.jigasi.transcription.SEND_JSON=true
 | ||||
| -# org.jitsi.jigasi.transcription.SEND_TXT=false
 | ||||
| +org.jitsi.jigasi.transcription.SEND_JSON=true
 | ||||
| +org.jitsi.jigasi.transcription.SEND_TXT=false
 | ||||
|   | ||||
|  # Vosk server | ||||
| -# org.jitsi.jigasi.transcription.customService=org.jitsi.jigasi.transcription.VoskTranscriptionService
 | ||||
| +org.jitsi.jigasi.transcription.customService=org.jitsi.jigasi.transcription.VoskTranscriptionService
 | ||||
|  # org.jitsi.jigasi.transcription.vosk.websocket_url={"en": "ws://localhost:2700", "fr": "ws://localhost:2710"} | ||||
| -# org.jitsi.jigasi.transcription.vosk.websocket_url=ws://localhost:2700
 | ||||
| +org.jitsi.jigasi.transcription.vosk.websocket_url=ws://localhost:2700
 | ||||
|   | ||||
|  # Whisper live transcription server | ||||
|  # org.jitsi.jigasi.transcription.customService=org.jitsi.jigasi.transcription.WhisperTranscriptionService | ||||
|  | @ -546,6 +546,7 @@ JIBRI_XORG_CONF="/etc/jitsi/jibri/xorg-video-dummy.conf" | |||
| WS_MATCH1="# ensure all static content can always be found first" | ||||
| WS_MATCH2="external_api.js" | ||||
| MEET_MATCH1="disable simulcast support." | ||||
| #GC_SDK_REL_FILE="http://packages.cloud.google.com/apt/dists/cloud-sdk-$(lsb_release -sc)/Release" | ||||
| 
 | ||||
| # Make sure we can rely on the match strings. | ||||
| printf "> Testing match strings on config files.\n" | ||||
|  | @ -699,16 +700,24 @@ do | |||
| done | ||||
| sleep .1 | ||||
| ##Jigasi | ||||
| while [ "$ENABLE_TRANSCRIPT" != "yes" ] && [ "$ENABLE_TRANSCRIPT" != "no" ] | ||||
| do | ||||
|     read -p "> Do you want to setup Jigasi Transcription: (yes or no) | ||||
| #if [ "$(curl -s -o /dev/null -w "%{http_code}" "$GC_SDK_REL_FILE" )" == "404" ]; then | ||||
|     #printf "> Sorry Google SDK doesn't have support yet for %s, | ||||
|     #thus, Jigasi Transcript can't be enable.\n\n" "$(lsb_release -sd)" | ||||
| #elif [ "$(curl -s -o /dev/null -w "%{http_code}" "$GC_SDK_REL_FILE" )" == "200" ]; then | ||||
|     #while [ "$ENABLE_TRANSCRIPT" != "yes" ] && [ "$ENABLE_TRANSCRIPT" != "no" ] | ||||
|     #do | ||||
|         #read -p "> Do you want to setup Jigasi Transcription: (yes or no) | ||||
| #( Please check requirements at: https://forge.switnet.net/switnet/quick-jibri-installer )$NL" -r ENABLE_TRANSCRIPT | ||||
|     if [ "$ENABLE_TRANSCRIPT" = "no" ]; then | ||||
|         printf " - Jigasi Transcription won't be enabled.\n\n" | ||||
|     elif [ "$ENABLE_TRANSCRIPT" = "yes" ]; then | ||||
|         printf " - Jigasi Transcription will be enabled.\n\n" | ||||
|     fi | ||||
| done | ||||
|         #if [ "$ENABLE_TRANSCRIPT" = "no" ]; then | ||||
|             #printf " - Jigasi Transcription won't be enabled.\n\n" | ||||
|         #elif [ "$ENABLE_TRANSCRIPT" = "yes" ]; then | ||||
|             #printf " - Jigasi Transcription will be enabled.\n\n" | ||||
|         #fi | ||||
|     #done | ||||
| #else | ||||
|     #echo "No valid option for Jigasi. Please report this to | ||||
| #https://forge.switnet.net/switnet/quick-jibri-installer/issues" | ||||
| #fi | ||||
| sleep .1 | ||||
| #Grafana | ||||
| while [ "$ENABLE_GRAFANA_DSH" != "yes" ] && [ "$ENABLE_GRAFANA_DSH" != "no" ] | ||||
|  | @ -852,21 +861,13 @@ BREWERY | |||
| 
 | ||||
| # Jibri tweaks for /etc/jitsi/meet/$DOMAIN-config.js | ||||
| sed -i "s|conference.$DOMAIN|internal.auth.$DOMAIN|" "$MEET_CONF" | ||||
| 
 | ||||
| #Enable recording by default. | ||||
| #New recording implementation. | ||||
| sed -i "s|// recordingService:|recordingService:|" "$MEET_CONF" | ||||
| sed -i "/recordingService/,/hideStorageWarning/s|//     enabled: false,|       enabled: true,|" "$MEET_CONF" | ||||
| sed -i "/hideStorageWarning: false/,/}/s|// },|},|" "$MEET_CONF" | ||||
| #Prepare hidden domain for jibri/jigasi silent users. | ||||
| sed -i "/hideStorageWarning: false/,/Local recording configuration/s|// },|},|" "$MEET_CONF" | ||||
| sed -i "/fileRecordingsServiceEnabled: false,/a \\ | ||||
|     hiddenDomain: \'recorder.$DOMAIN\'," "$MEET_CONF" | ||||
| 
 | ||||
| #Enable livestreaming by default. | ||||
| sed -i "s|// liveStreaming:|liveStreaming:|" "$MEET_CONF" | ||||
| sed -i "/liveStreaming:/,/helpLink:/s|//     enabled: false,|    enabled: true,|" "$MEET_CONF" | ||||
| sed -i "s|//    helpLink:|   helpLink:|" "$MEET_CONF" | ||||
| sed -i "/helpLink:/,/}/s|// },|},|" "$MEET_CONF" | ||||
| 
 | ||||
| # Recording directory | ||||
| if [ ! -d "$DIR_RECORD" ]; then | ||||
|     mkdir "$DIR_RECORD" | ||||
|  | @ -885,8 +886,8 @@ echo "or storage provider, etc.) in this script" >> /tmp/finalize.out | |||
| 
 | ||||
| chmod -R 770 \$RECORDINGS_DIR | ||||
| 
 | ||||
| LJF_PATH="\$(find \$RECORDINGS_DIR -exec stat --printf="%Y\t%n\n" {} \; | sort -nr|sed 1d|awk '{print\$2}'| grep -v "meta\|_" | head -n1)" | ||||
| NJF_NAME="\$(find \$LJF_PATH |grep "mp4"|sed "s|\$LJF_PATH/||"|cut -d "." -f1)" | ||||
| LJF_PATH="\$(find \$RECORDINGS_DIR -exec stat --printf="%Y\t%n\n" {} \; | sort -n -r|awk '{print\$2}'| grep -v "meta\|-" | head -n1)" | ||||
| NJF_NAME="\$(find \$LJF_PATH |grep -e "-"|sed "s|\$LJF_PATH/||"|cut -d "." -f1)" | ||||
| NJF_PATH="\$RECORDINGS_DIR/\$NJF_NAME" | ||||
| mv \$LJF_PATH \$NJF_PATH | ||||
| 
 | ||||
|  | @ -1164,16 +1165,7 @@ if [ "$ENABLE_NC_ACCESS" = "yes" ]; then | |||
|     fi | ||||
| fi | ||||
| sleep .1 | ||||
| #Jigasi w/VOSK backend. | ||||
| if [ "$ENABLE_TRANSCRIPT" = "yes" ]; then | ||||
|     printf "\nJigasi with VOSK backend will be enabled." | ||||
|     if [ "$MODE" = "debug" ]; then | ||||
|         bash "$PWD"/jigasi-vosk-backend.sh -m debug | ||||
|     else | ||||
|         bash "$PWD"/jigasi-vosk-backend.sh | ||||
|     fi | ||||
| fi | ||||
| sleep .1 | ||||
| 
 | ||||
| #Grafana Dashboard | ||||
| if [ "$ENABLE_GRAFANA_DSH" = "yes" ]; then | ||||
|     printf "\nGrafana Dashboard will be enabled." | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue