Add local Jitsi Docker staging setup
This commit is contained in:
14
scripts/local-jitsi-logs.sh
Executable file
14
scripts/local-jitsi-logs.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
STACK_DIR="$ROOT_DIR/local/docker-jitsi-meet"
|
||||
|
||||
if [[ ! -d "$STACK_DIR" ]]; then
|
||||
echo "Missing $STACK_DIR. Run ./scripts/local-jitsi-setup.sh first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$STACK_DIR"
|
||||
docker compose logs -f "${@}"
|
||||
16
scripts/local-jitsi-restart-web.sh
Executable file
16
scripts/local-jitsi-restart-web.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
STACK_DIR="$ROOT_DIR/local/docker-jitsi-meet"
|
||||
|
||||
if [[ ! -d "$STACK_DIR" ]]; then
|
||||
echo "Missing $STACK_DIR. Run ./scripts/local-jitsi-setup.sh first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
"$SCRIPT_DIR/local-jitsi-sync.sh"
|
||||
|
||||
cd "$STACK_DIR"
|
||||
docker compose restart web
|
||||
109
scripts/local-jitsi-setup.sh
Executable file
109
scripts/local-jitsi-setup.sh
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
LOCAL_DIR="$ROOT_DIR/local"
|
||||
STACK_DIR="$LOCAL_DIR/docker-jitsi-meet"
|
||||
CONFIG_DIR="$LOCAL_DIR/.jitsi-meet-cfg"
|
||||
RELEASE_FILE="$LOCAL_DIR/.release"
|
||||
|
||||
HTTP_PORT="${HTTP_PORT:-8000}"
|
||||
HTTPS_PORT="${HTTPS_PORT:-8443}"
|
||||
PUBLIC_URL="${PUBLIC_URL:-https://localhost:${HTTPS_PORT}}"
|
||||
TZ="${TZ:-Asia/Kolkata}"
|
||||
|
||||
set_env() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
local file="$STACK_DIR/.env"
|
||||
|
||||
if grep -qE "^#?${key}=" "$file"; then
|
||||
perl -0pi -e "s|^#?${key}=.*|${key}=${value}|m" "$file"
|
||||
else
|
||||
printf '%s=%s\n' "$key" "$value" >> "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
mkdir -p "$LOCAL_DIR"
|
||||
|
||||
if [[ ! -d "$STACK_DIR" || "${FORCE:-0}" == "1" ]]; then
|
||||
rm -rf "$STACK_DIR"
|
||||
|
||||
tmp_dir="$(mktemp -d)"
|
||||
trap 'rm -rf "$tmp_dir"' EXIT
|
||||
|
||||
release_json="$(curl -fsSL https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest)"
|
||||
tag_name="$(printf '%s' "$release_json" | sed -n 's/.*"tag_name": "\([^"]*\)".*/\1/p' | head -1)"
|
||||
zip_url="$(printf '%s' "$release_json" | sed -n 's/.*"zipball_url": "\([^"]*\)".*/\1/p' | head -1)"
|
||||
|
||||
if [[ -z "$zip_url" || -z "$tag_name" ]]; then
|
||||
echo "Could not detect latest docker-jitsi-meet release from GitHub."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl -LfsS "$zip_url" -o "$tmp_dir/docker-jitsi-meet.zip"
|
||||
unzip -q "$tmp_dir/docker-jitsi-meet.zip" -d "$tmp_dir"
|
||||
|
||||
extracted_dir="$(find "$tmp_dir" -maxdepth 1 -type d -name 'jitsi-docker-jitsi-meet-*' | head -1)"
|
||||
if [[ -z "$extracted_dir" ]]; then
|
||||
echo "Could not find extracted docker-jitsi-meet directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv "$extracted_dir" "$STACK_DIR"
|
||||
printf '%s\n' "$tag_name" > "$RELEASE_FILE"
|
||||
fi
|
||||
|
||||
created_env=0
|
||||
if [[ ! -f "$STACK_DIR/.env" ]]; then
|
||||
cp "$STACK_DIR/env.example" "$STACK_DIR/.env"
|
||||
created_env=1
|
||||
fi
|
||||
|
||||
set_env CONFIG "$CONFIG_DIR"
|
||||
set_env TZ "$TZ"
|
||||
set_env HTTP_PORT "$HTTP_PORT"
|
||||
set_env HTTPS_PORT "$HTTPS_PORT"
|
||||
set_env PUBLIC_URL "$PUBLIC_URL"
|
||||
|
||||
set_env ENABLE_PREJOIN_PAGE 1
|
||||
set_env ENABLE_WELCOME_PAGE 1
|
||||
set_env ENABLE_NOISY_MIC_DETECTION 1
|
||||
set_env ENABLE_NO_AUDIO_DETECTION 1
|
||||
set_env ENABLE_AV_MODERATION 1
|
||||
set_env ENABLE_LOBBY 1
|
||||
|
||||
set_env START_AUDIO_ONLY 1
|
||||
set_env START_AUDIO_MUTED 0
|
||||
set_env START_WITH_AUDIO_MUTED 1
|
||||
set_env START_VIDEO_MUTED 0
|
||||
set_env START_WITH_VIDEO_MUTED 1
|
||||
|
||||
set_env DISABLE_POLLS 0
|
||||
set_env DISABLE_DEEP_LINKING 1
|
||||
set_env DYNAMIC_BRANDING_URL /images/politictalk/branding.json
|
||||
set_env TOOLBAR_BUTTONS microphone,chat,raisehand,fullscreen,noisesuppression,participants-pane,hangup
|
||||
set_env HIDE_PREMEETING_BUTTONS microphone,camera,select-background,invite,settings
|
||||
set_env HIDE_PREJOIN_EXTRA_BUTTONS no-audio,by-phone
|
||||
|
||||
mkdir -p "$CONFIG_DIR"/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
|
||||
|
||||
if [[ "$created_env" == "1" || "${REGENERATE_PASSWORDS:-0}" == "1" ]]; then
|
||||
(
|
||||
cd "$STACK_DIR"
|
||||
./gen-passwords.sh
|
||||
)
|
||||
fi
|
||||
|
||||
"$SCRIPT_DIR/local-jitsi-sync.sh"
|
||||
|
||||
cat <<EOF
|
||||
Local Docker Jitsi is prepared.
|
||||
|
||||
Next:
|
||||
./scripts/local-jitsi-start.sh
|
||||
|
||||
Then open:
|
||||
$PUBLIC_URL/pt-local-test
|
||||
EOF
|
||||
28
scripts/local-jitsi-start.sh
Executable file
28
scripts/local-jitsi-start.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
STACK_DIR="$ROOT_DIR/local/docker-jitsi-meet"
|
||||
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "Docker is not installed or not available in PATH. Install Docker Desktop, start it, then rerun this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! docker compose version >/dev/null 2>&1; then
|
||||
echo "Docker Compose v2 is not available. Install/update Docker Desktop, then rerun this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "$STACK_DIR" ]]; then
|
||||
"$SCRIPT_DIR/local-jitsi-setup.sh"
|
||||
fi
|
||||
|
||||
"$SCRIPT_DIR/local-jitsi-sync.sh"
|
||||
|
||||
cd "$STACK_DIR"
|
||||
docker compose up -d
|
||||
|
||||
echo "Local PoliticTalk Jitsi is starting."
|
||||
echo "Open: https://localhost:8443/pt-local-test"
|
||||
14
scripts/local-jitsi-stop.sh
Executable file
14
scripts/local-jitsi-stop.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
STACK_DIR="$ROOT_DIR/local/docker-jitsi-meet"
|
||||
|
||||
if [[ ! -d "$STACK_DIR" ]]; then
|
||||
echo "Local Docker Jitsi stack is not set up yet."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$STACK_DIR"
|
||||
docker compose down
|
||||
21
scripts/local-jitsi-sync.sh
Executable file
21
scripts/local-jitsi-sync.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
LOCAL_DIR="$ROOT_DIR/local"
|
||||
STACK_DIR="$LOCAL_DIR/docker-jitsi-meet"
|
||||
CONFIG_DIR="$LOCAL_DIR/.jitsi-meet-cfg"
|
||||
|
||||
if [[ ! -d "$STACK_DIR" ]]; then
|
||||
echo "Missing $STACK_DIR. Run ./scripts/local-jitsi-setup.sh first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$CONFIG_DIR"/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
|
||||
|
||||
cp "$LOCAL_DIR/custom-config.js" "$CONFIG_DIR/web/custom-config.js"
|
||||
cp "$LOCAL_DIR/custom-interface_config.js" "$CONFIG_DIR/web/custom-interface_config.js"
|
||||
cp "$LOCAL_DIR/docker-compose.override.yml" "$STACK_DIR/docker-compose.override.yml"
|
||||
|
||||
echo "Synced PoliticTalk local overrides into Docker Jitsi runtime."
|
||||
Reference in New Issue
Block a user