68 lines
2.4 KiB
Bash
Executable File
68 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/functions.sh"
|
|
resolve_paths
|
|
|
|
TEMPLATE_FILE="${INIT_DIR}/templates/compose.yaml.template"
|
|
OUTPUT_FILE="${ROOT_DIR}/compose.yaml"
|
|
|
|
require_file "$TEMPLATE_FILE" "Compose template"
|
|
require_env
|
|
|
|
log_info "Configuring optional services..."
|
|
|
|
read -r -p "Enable LiveKit RTC Stack? (Y/n) [Y]: " LIVEKIT_INPUT
|
|
LIVEKIT_INPUT="${LIVEKIT_INPUT:-Y}"
|
|
if [[ "$LIVEKIT_INPUT" =~ ^[Yy]$ ]]; then
|
|
INCLUDE_LIVEKIT=true
|
|
LIVEKIT_KEY=$(openssl rand -hex 16)
|
|
LIVEKIT_SECRET=$(openssl rand -hex 32)
|
|
cat >> "$ENV_FILE" <<EOF
|
|
LIVEKIT_FQDN="rtc.${DOMAIN}"
|
|
JWT_FQDN="jwt.${DOMAIN}"
|
|
LIVEKIT_API_KEY="${LIVEKIT_KEY}"
|
|
LIVEKIT_API_SECRET="${LIVEKIT_SECRET}"
|
|
LIVEKIT_UDP_RANGE="10000-20000"
|
|
EOF
|
|
else
|
|
INCLUDE_LIVEKIT=false
|
|
fi
|
|
|
|
echo "Select Web Client: 1) Element 2) Cinny 3) FluffyChat 4) None"
|
|
read -r -p "Default [1]: " WEB_APP_INPUT
|
|
WEB_APP_INPUT="${WEB_APP_INPUT:-1}"
|
|
case "$WEB_APP_INPUT" in
|
|
1) INCLUDE_ELEMENT=true; INCLUDE_CINNY=false; INCLUDE_FLUFFY=false ;;
|
|
2) INCLUDE_ELEMENT=false; INCLUDE_CINNY=true; INCLUDE_FLUFFY=false ;;
|
|
3) INCLUDE_ELEMENT=false; INCLUDE_CINNY=false; INCLUDE_FLUFFY=true ;;
|
|
*) INCLUDE_ELEMENT=false; INCLUDE_CINNY=false; INCLUDE_FLUFFY=false ;;
|
|
esac
|
|
|
|
echo "Select Reverse Proxy: 1) Traefik 2) nginx"
|
|
read -r -p "Default [1]: " PROXY_INPUT
|
|
PROXY_INPUT="${PROXY_INPUT:-1}"
|
|
case "$PROXY_INPUT" in
|
|
1) INCLUDE_NGINX=false; INCLUDE_TRAEFIK=true ;;
|
|
*) INCLUDE_NGINX=true; INCLUDE_TRAEFIK=false ;;
|
|
esac
|
|
|
|
cp "$TEMPLATE_FILE" "$OUTPUT_FILE"
|
|
|
|
toggle_block() {
|
|
[[ "$3" == "true" ]] && sed -i "/$1/d; /$2/d" "$OUTPUT_FILE" || sed -i "/$1/,/$2/d" "$OUTPUT_FILE"
|
|
}
|
|
|
|
toggle_block "# \[LIVEKIT_START\]" "# \[LIVEKIT_END\]" "$INCLUDE_LIVEKIT"
|
|
toggle_block "# \[ELEMENT_START\]" "# \[ELEMENT_END\]" "$INCLUDE_ELEMENT"
|
|
toggle_block "# \[CINNY_START\]" "# \[CINNY_END\]" "$INCLUDE_CINNY"
|
|
toggle_block "# \[FLUFFYCHAT_START\]" "# \[FLUFFYCHAT_END\]" "$INCLUDE_FLUFFY"
|
|
toggle_block "# \[NGINX_START\]" "# \[NGINX_END\]" "$INCLUDE_NGINX"
|
|
toggle_block "# \[TRAEFIK_START\]" "# \[TRAEFIK_END\]" "$INCLUDE_TRAEFIK"
|
|
|
|
[[ "$INCLUDE_TRAEFIK" == "true" ]] && sed -i "/# \[TRAEFIK_LABELS_START\]/d; /# \[TRAEFIK_LABELS_END\]/d" "$OUTPUT_FILE" || \
|
|
sed -i "/# \[TRAEFIK_LABELS_START\]/,/# \[TRAEFIK_LABELS_END\]/d" "$OUTPUT_FILE"
|
|
|
|
log_info "Compose file generated: $OUTPUT_FILE"
|