Skip to content

Instantly share code, notes, and snippets.

@aislam23
Last active January 29, 2026 05:47
Show Gist options
  • Select an option

  • Save aislam23/ee4797008cdbffa2c459f26345d64600 to your computer and use it in GitHub Desktop.

Select an option

Save aislam23/ee4797008cdbffa2c459f26345d64600 to your computer and use it in GitHub Desktop.
Jitsi Install
#!/bin/bash
#===============================================================================
#
# Jitsi Meet — Автоматическая установка
#
# Автор: Лысый из браузера
# Telegram: https://t.me/+2qI3y89Hi2FiODN
#
# Этот скрипт автоматически установит Jitsi Meet на ваш сервер.
# Просто следуйте инструкциям на экране.
#
#===============================================================================
# Цвета для красивого вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[1;37m'
NC='\033[0m' # No Color
# Функция для вывода заголовка
print_header() {
clear
echo -e "${CYAN}"
echo "╔═══════════════════════════════════════════════════════════════╗"
echo "║ ║"
echo "║ 🎥 JITSI MEET — УСТАНОВКА ЗА 5 МИНУТ 🎥 ║"
echo "║ ║"
echo "║ Свой Zoom, который никто не заблокирует ║"
echo "║ ║"
echo "╚═══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
}
# Функция для вывода шага
print_step() {
echo ""
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${WHITE} $1${NC}"
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
}
# Функция для вывода информации
print_info() {
echo -e "${BLUE}ℹ️ $1${NC}"
}
# Функция для вывода успеха
print_success() {
echo -e "${GREEN}✅ $1${NC}"
}
# Функция для вывода предупреждения
print_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
# Функция для вывода ошибки
print_error() {
echo -e "${RED}❌ $1${NC}"
}
# Функция для ожидания нажатия Enter
wait_for_enter() {
echo ""
echo -e "${CYAN}Нажмите Enter, чтобы продолжить...${NC}"
read
}
# Функция для проверки успешности команды
check_success() {
if [ $? -eq 0 ]; then
print_success "$1"
else
print_error "$2"
echo ""
echo -e "${RED}Установка прервана. Проверьте ошибки выше.${NC}"
exit 1
fi
}
#===============================================================================
# НАЧАЛО СКРИПТА
#===============================================================================
print_header
# Проверка root
if [ "$EUID" -ne 0 ]; then
print_error "Этот скрипт нужно запускать с правами root (sudo)"
echo ""
echo "Запустите так:"
echo -e "${WHITE} sudo bash <(curl -sSL URL_СКРИПТА)${NC}"
echo ""
exit 1
fi
# Проверка ОС
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VERSION=$VERSION_ID
else
print_error "Не удалось определить операционную систему"
exit 1
fi
if [[ "$OS" != "ubuntu" && "$OS" != "debian" ]]; then
print_error "Этот скрипт работает только на Ubuntu или Debian"
print_info "Ваша система: $OS $VERSION"
exit 1
fi
print_success "Система: $OS $VERSION — поддерживается!"
echo ""
# Устанавливаем необходимые утилиты для проверок
apt update -qq > /dev/null 2>&1
apt install -y -qq dnsutils curl > /dev/null 2>&1
#===============================================================================
# ШАГ 1: Сбор информации
#===============================================================================
print_step "ШАГ 1 из 5: Ваши данные"
echo "Сейчас я задам несколько вопросов для настройки Jitsi."
echo ""
# Определяем IP сервера (IPv4 и IPv6)
print_info "Определяем IP-адреса сервера..."
SERVER_IP4=$(curl -s -4 --connect-timeout 5 ifconfig.me 2>/dev/null || curl -s -4 --connect-timeout 5 icanhazip.com 2>/dev/null)
SERVER_IP6=$(curl -s -6 --connect-timeout 5 ifconfig.me 2>/dev/null || curl -s -6 --connect-timeout 5 icanhazip.com 2>/dev/null)
if [ -n "$SERVER_IP4" ]; then
print_success "IPv4: $SERVER_IP4"
fi
if [ -n "$SERVER_IP6" ]; then
print_success "IPv6: $SERVER_IP6"
fi
if [ -z "$SERVER_IP4" ] && [ -z "$SERVER_IP6" ]; then
print_error "Не удалось определить внешний IP"
echo ""
read -p " Введите IP сервера вручную: " MANUAL_IP
if [[ "$MANUAL_IP" == *":"* ]]; then
SERVER_IP6="$MANUAL_IP"
else
SERVER_IP4="$MANUAL_IP"
fi
fi
# Предупреждение если только IPv6
if [ -z "$SERVER_IP4" ] && [ -n "$SERVER_IP6" ]; then
echo ""
print_warning "У сервера только IPv6-адрес!"
echo ""
echo -e "${YELLOW} Это может вызвать проблемы:${NC}"
echo -e " • Пользователи без IPv6 не смогут зайти на сервер"
echo -e " • Многие провайдеры в России ещё не поддерживают IPv6"
echo ""
echo -e "${BLUE} Рекомендация: докупите IPv4-адрес в панели хостинга${NC}"
echo ""
read -p " Продолжить только с IPv6? (y/n): " CONTINUE_IPV6
if [[ ! "$CONTINUE_IPV6" =~ ^[Yy]$ ]]; then
print_info "Добавьте IPv4 и запустите скрипт снова."
exit 0
fi
fi
echo ""
# Домен
while true; do
echo -e "${WHITE}1. Введите ваш домен для Jitsi${NC}"
echo -e "${BLUE} Например: meet.example.ru или calls.mysite.com${NC}"
echo ""
read -p " Домен: " JITSI_DOMAIN
if [ -z "$JITSI_DOMAIN" ]; then
print_error "Домен не может быть пустым"
echo ""
elif [[ ! "$JITSI_DOMAIN" =~ ^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$ ]]; then
print_error "Некорректный формат домена"
echo ""
else
# Проверяем DNS
echo ""
print_info "Проверяем DNS-записи для $JITSI_DOMAIN..."
DOMAIN_IP4=$(dig +short "$JITSI_DOMAIN" A 2>/dev/null | head -1)
DOMAIN_IP6=$(dig +short "$JITSI_DOMAIN" AAAA 2>/dev/null | head -1)
DNS_OK=false
DNS_ISSUES=""
# Проверяем IPv4 (если есть на сервере)
if [ -n "$SERVER_IP4" ]; then
if [ -z "$DOMAIN_IP4" ]; then
DNS_ISSUES="${DNS_ISSUES}\n • Нет A-записи (IPv4) — нужна для $SERVER_IP4"
elif [ "$DOMAIN_IP4" != "$SERVER_IP4" ]; then
DNS_ISSUES="${DNS_ISSUES}\n • A-запись указывает на $DOMAIN_IP4, а нужно $SERVER_IP4"
else
print_success "A-запись (IPv4): $JITSI_DOMAIN → $DOMAIN_IP4"
DNS_OK=true
fi
fi
# Проверяем IPv6 (если есть на сервере)
if [ -n "$SERVER_IP6" ]; then
if [ -z "$DOMAIN_IP6" ]; then
# Если только IPv6 — это критично, если есть IPv4 — опционально
if [ -z "$SERVER_IP4" ]; then
DNS_ISSUES="${DNS_ISSUES}\n • Нет AAAA-записи (IPv6) — обязательна, т.к. нет IPv4!"
fi
elif [ "$DOMAIN_IP6" != "$SERVER_IP6" ]; then
DNS_ISSUES="${DNS_ISSUES}\n • AAAA-запись указывает на $DOMAIN_IP6, а нужно $SERVER_IP6"
else
print_success "AAAA-запись (IPv6): $JITSI_DOMAIN → $DOMAIN_IP6"
DNS_OK=true
fi
fi
if [ "$DNS_OK" = false ]; then
echo ""
print_error "DNS не настроен или настроен неправильно!"
echo -e "$DNS_ISSUES"
echo ""
echo -e "${YELLOW}┌─────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ Как настроить DNS: │${NC}"
echo -e "${YELLOW}├─────────────────────────────────────────────────────────────┤${NC}"
echo -e "${YELLOW}│ Зайдите в панель управления доменом и создайте записи: │${NC}"
echo -e "${YELLOW}│ │${NC}"
if [ -n "$SERVER_IP4" ]; then
echo -e "${YELLOW}│ ${WHITE}A-запись (IPv4):${YELLOW} │${NC}"
echo -e "${YELLOW}│ Тип: ${WHITE}A${YELLOW} │${NC}"
echo -e "${YELLOW}│ Имя: ${WHITE}@ или поддомен${YELLOW} │${NC}"
echo -e "${YELLOW}│ Значение: ${WHITE}$SERVER_IP4${YELLOW}$(printf '%*s' $((27 - ${#SERVER_IP4})) '')│${NC}"
echo -e "${YELLOW}│ │${NC}"
fi
if [ -n "$SERVER_IP6" ]; then
echo -e "${YELLOW}│ ${WHITE}AAAA-запись (IPv6):${YELLOW} │${NC}"
echo -e "${YELLOW}│ Тип: ${WHITE}AAAA${YELLOW} │${NC}"
echo -e "${YELLOW}│ Имя: ${WHITE}@ или поддомен${YELLOW} │${NC}"
echo -e "${YELLOW}│ Значение: ${WHITE}$SERVER_IP6${YELLOW}$(printf '%*s' $((27 - ${#SERVER_IP6})) '')│${NC}"
echo -e "${YELLOW}│ │${NC}"
fi
echo -e "${YELLOW}│ Подождите 5-15 минут после настройки │${NC}"
echo -e "${YELLOW}└─────────────────────────────────────────────────────────────┘${NC}"
echo ""
read -p " Попробовать другой домен? (y/n): " TRY_ANOTHER
if [[ ! "$TRY_ANOTHER" =~ ^[Yy]$ ]]; then
read -p " Продолжить без проверки DNS? (y/n): " SKIP_DNS
if [[ "$SKIP_DNS" =~ ^[Yy]$ ]]; then
print_warning "Продолжаем без проверки DNS"
break
else
print_info "Настройте DNS и запустите скрипт снова."
exit 0
fi
fi
echo ""
else
break
fi
fi
done
echo ""
# Email
while true; do
echo -e "${WHITE}2. Введите ваш email${NC}"
echo -e "${BLUE} Нужен для получения SSL-сертификата (Let's Encrypt)${NC}"
echo ""
read -p " Email: " LETSENCRYPT_EMAIL
if [ -z "$LETSENCRYPT_EMAIL" ]; then
print_error "Email не может быть пустым"
echo ""
elif [[ ! "$LETSENCRYPT_EMAIL" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
print_error "Некорректный формат email"
echo ""
else
break
fi
done
echo ""
# Настройка аутентификации
echo -e "${WHITE}3. Хотите ограничить создание комнат?${NC}"
echo -e "${BLUE} Если да — только вы сможете создавать комнаты.${NC}"
echo -e "${BLUE} Гости будут заходить по ссылке без пароля.${NC}"
echo ""
read -p " Включить ограничение? (y/n, по умолчанию y): " ENABLE_AUTH
ENABLE_AUTH=${ENABLE_AUTH:-y}
if [[ "$ENABLE_AUTH" =~ ^[Yy]$ ]]; then
SETUP_AUTH=true
echo ""
# Логин администратора
while true; do
echo -e "${WHITE}4. Придумайте логин администратора${NC}"
echo -e "${BLUE} Латинские буквы и цифры, без пробелов${NC}"
echo ""
read -p " Логин: " ADMIN_USER
if [ -z "$ADMIN_USER" ]; then
print_error "Логин не может быть пустым"
echo ""
elif [[ ! "$ADMIN_USER" =~ ^[a-zA-Z0-9_]+$ ]]; then
print_error "Логин может содержать только буквы, цифры и _"
echo ""
else
break
fi
done
echo ""
# Пароль администратора
while true; do
echo -e "${WHITE}5. Придумайте пароль администратора${NC}"
echo -e "${BLUE} Минимум 8 символов${NC}"
echo ""
read -s -p " Пароль: " ADMIN_PASS
echo ""
if [ ${#ADMIN_PASS} -lt 8 ]; then
print_error "Пароль должен быть минимум 8 символов"
echo ""
else
read -s -p " Повторите пароль: " ADMIN_PASS2
echo ""
if [ "$ADMIN_PASS" != "$ADMIN_PASS2" ]; then
print_error "Пароли не совпадают"
echo ""
else
break
fi
fi
done
else
SETUP_AUTH=false
print_info "Аутентификация отключена — любой сможет создавать комнаты"
fi
echo ""
#===============================================================================
# Подтверждение
#===============================================================================
print_step "Проверьте данные"
echo -e " Домен: ${WHITE}$JITSI_DOMAIN${NC}"
echo -e " Email: ${WHITE}$LETSENCRYPT_EMAIL${NC}"
if [ "$SETUP_AUTH" = true ]; then
echo -e " Аутентификация: ${WHITE}Включена${NC}"
echo -e " Логин админа: ${WHITE}$ADMIN_USER${NC}"
echo -e " Пароль админа: ${WHITE}********${NC}"
else
echo -e " Аутентификация: ${WHITE}Отключена${NC}"
fi
echo ""
echo -e "${YELLOW}Важно! Убедитесь, что:${NC}"
if [ -n "$SERVER_IP4" ]; then
echo -e " • A-запись для ${WHITE}$JITSI_DOMAIN${NC} указывает на ${WHITE}$SERVER_IP4${NC}"
fi
if [ -n "$SERVER_IP6" ]; then
echo -e " • AAAA-запись для ${WHITE}$JITSI_DOMAIN${NC} указывает на ${WHITE}$SERVER_IP6${NC} (опционально)"
fi
echo -e " • Порты 80, 443 (TCP) и 10000 (UDP) открыты"
echo ""
read -p "Всё верно? Начинаем установку? (y/n): " CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
print_info "Установка отменена"
exit 0
fi
#===============================================================================
# ШАГ 2: Обновление системы
#===============================================================================
print_step "ШАГ 2 из 5: Обновление системы"
print_info "Обновляем список пакетов..."
apt update -qq
check_success "Список пакетов обновлён" "Не удалось обновить список пакетов"
print_info "Устанавливаем обновления..."
DEBIAN_FRONTEND=noninteractive apt upgrade -y -qq
check_success "Система обновлена" "Не удалось обновить систему"
#===============================================================================
# ШАГ 3: Установка зависимостей
#===============================================================================
print_step "ШАГ 3 из 5: Установка веб-сервера"
print_info "Устанавливаем nginx..."
apt install -y -qq nginx
check_success "Nginx установлен" "Не удалось установить nginx"
systemctl enable nginx > /dev/null 2>&1
systemctl start nginx
check_success "Nginx запущен" "Не удалось запустить nginx"
# Устанавливаем дополнительные пакеты
print_info "Устанавливаем необходимые пакеты..."
apt install -y -qq gnupg2 apt-transport-https curl
check_success "Пакеты установлены" "Не удалось установить пакеты"
#===============================================================================
# ШАГ 4: Установка Jitsi Meet
#===============================================================================
print_step "ШАГ 4 из 5: Установка Jitsi Meet"
# Добавляем репозиторий Jitsi
print_info "Добавляем репозиторий Jitsi..."
curl -fsSL https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor -o /usr/share/keyrings/jitsi-keyring.gpg
check_success "Ключ добавлен" "Не удалось добавить ключ репозитория"
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" > /etc/apt/sources.list.d/jitsi-stable.list
check_success "Репозиторий добавлен" "Не удалось добавить репозиторий"
apt update -qq
check_success "Список пакетов обновлён" "Не удалось обновить список пакетов"
# Настраиваем ответы для автоматической установки
print_info "Настраиваем параметры установки..."
echo "jitsi-videobridge2 jitsi-videobridge/jvb-hostname string $JITSI_DOMAIN" | debconf-set-selections
echo "jitsi-meet-web-config jitsi-meet/cert-choice select Generate a new self-signed certificate" | debconf-set-selections
# Устанавливаем Jitsi Meet
print_info "Устанавливаем Jitsi Meet (это может занять несколько минут)..."
DEBIAN_FRONTEND=noninteractive apt install -y jitsi-meet
check_success "Jitsi Meet установлен" "Не удалось установить Jitsi Meet"
# Получаем SSL-сертификат
print_info "Получаем SSL-сертификат от Let's Encrypt..."
# Сначала проверяем, доступен ли порт 80 извне
print_info "Проверяем доступность сервера извне..."
sleep 2
# Пробуем стандартный скрипт Jitsi
echo "$LETSENCRYPT_EMAIL" | /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh > /tmp/letsencrypt.log 2>&1
CERT_RESULT=$?
if [ $CERT_RESULT -eq 0 ] && [ -f "/etc/letsencrypt/live/$JITSI_DOMAIN/fullchain.pem" ]; then
print_success "SSL-сертификат получен"
else
print_warning "Стандартный способ не сработал, пробуем certbot..."
# Устанавливаем certbot
apt install -y -qq certbot python3-certbot-nginx > /dev/null 2>&1
# Пробуем certbot
certbot --nginx -d "$JITSI_DOMAIN" --email "$LETSENCRYPT_EMAIL" --agree-tos --non-interactive > /tmp/certbot.log 2>&1
CERTBOT_RESULT=$?
if [ $CERTBOT_RESULT -eq 0 ]; then
print_success "SSL-сертификат получен через certbot"
else
echo ""
print_error "Не удалось получить SSL-сертификат"
echo ""
echo -e "${YELLOW}┌─────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ Возможные причины: │${NC}"
echo -e "${YELLOW}├─────────────────────────────────────────────────────────────┤${NC}"
echo -e "${YELLOW}│ • Порт 80 заблокирован хостингом │${NC}"
echo -e "${YELLOW}│ • DNS ещё не обновился (подождите 15-30 минут) │${NC}"
echo -e "${YELLOW}│ • Firewall хостинга блокирует входящие соединения │${NC}"
echo -e "${YELLOW}├─────────────────────────────────────────────────────────────┤${NC}"
echo -e "${YELLOW}│ Что сделать: │${NC}"
echo -e "${YELLOW}│ 1. Проверьте настройки Firewall в панели хостинга │${NC}"
echo -e "${YELLOW}│ 2. Откройте порты 80, 443, 10000 в панели хостинга │${NC}"
echo -e "${YELLOW}│ 3. Запустите команду: │${NC}"
echo -e "${YELLOW}│ ${WHITE}certbot --nginx -d $JITSI_DOMAIN${YELLOW} │${NC}"
echo -e "${YELLOW}└─────────────────────────────────────────────────────────────┘${NC}"
echo ""
print_warning "Jitsi установлен, но работает без HTTPS"
print_info "Получите сертификат позже командой выше"
fi
fi
#===============================================================================
# ШАГ 5: Настройка аутентификации (если включена)
#===============================================================================
if [ "$SETUP_AUTH" = true ]; then
print_step "ШАГ 5 из 5: Настройка аутентификации"
PROSODY_CONFIG="/etc/prosody/conf.avail/$JITSI_DOMAIN.cfg.lua"
JITSI_CONFIG="/etc/jitsi/meet/$JITSI_DOMAIN-config.js"
print_info "Настраиваем аутентификацию..."
if [ -f "$PROSODY_CONFIG" ]; then
# Меняем jitsi-anonymous на internal_hashed для основного домена
# Это первое вхождение authentication в файле (основной VirtualHost)
sed -i '0,/authentication = "jitsi-anonymous"/s//authentication = "internal_hashed"/' "$PROSODY_CONFIG"
# Проверяем, что замена произошла
if grep -q 'VirtualHost "'$JITSI_DOMAIN'"' "$PROSODY_CONFIG" && \
grep -A3 'VirtualHost "'$JITSI_DOMAIN'"' "$PROSODY_CONFIG" | grep -q 'authentication = "internal_hashed"'; then
print_success "Аутентификация для основного домена настроена"
else
print_warning "Не удалось автоматически настроить аутентификацию"
print_info "Возможно, конфигурация Jitsi изменилась. Проверьте вручную."
fi
# Проверяем, есть ли уже гостевой домен
if grep -q "VirtualHost \"guest.$JITSI_DOMAIN\"" "$PROSODY_CONFIG"; then
print_success "Гостевой домен уже настроен"
else
# Добавляем гостевой домен если его нет
cat >> "$PROSODY_CONFIG" << EOF
-- Гостевой домен для подключения без авторизации
VirtualHost "guest.$JITSI_DOMAIN"
authentication = "anonymous"
c2s_require_encryption = false
modules_enabled = {
"bosh";
"ping";
"pubsub";
"speakerstats";
"conference_duration";
}
EOF
print_success "Гостевой домен добавлен"
fi
else
print_error "Файл конфигурации Prosody не найден: $PROSODY_CONFIG"
exit 1
fi
# Настраиваем anonymousdomain в конфиге Jitsi Meet
if [ -f "$JITSI_CONFIG" ]; then
# Проверяем, есть ли уже anonymousdomain (закомментированный или нет)
if grep -q "anonymousdomain:" "$JITSI_CONFIG"; then
# Раскомментируем и обновляем если закомментирован
sed -i "s|// *anonymousdomain:.*| anonymousdomain: 'guest.$JITSI_DOMAIN',|" "$JITSI_CONFIG"
# Обновляем если уже раскомментирован
sed -i "s|anonymousdomain: '.*'|anonymousdomain: 'guest.$JITSI_DOMAIN'|" "$JITSI_CONFIG"
print_success "Конфигурация Jitsi Meet обновлена"
else
# Добавляем после строки с domain
sed -i "/domain: '$JITSI_DOMAIN'/a\\ anonymousdomain: 'guest.$JITSI_DOMAIN'," "$JITSI_CONFIG"
print_success "anonymousdomain добавлен в конфиг"
fi
else
print_warning "Файл конфигурации Jitsi Meet не найден: $JITSI_CONFIG"
fi
# Создаём пользователя-администратора
print_info "Создаём пользователя $ADMIN_USER..."
prosodyctl register "$ADMIN_USER" "$JITSI_DOMAIN" "$ADMIN_PASS" 2>/dev/null
if [ $? -eq 0 ]; then
print_success "Пользователь $ADMIN_USER создан"
else
# Возможно пользователь уже существует, пробуем изменить пароль
prosodyctl deluser "$ADMIN_USER@$JITSI_DOMAIN" 2>/dev/null
prosodyctl register "$ADMIN_USER" "$JITSI_DOMAIN" "$ADMIN_PASS" 2>/dev/null
if [ $? -eq 0 ]; then
print_success "Пользователь $ADMIN_USER создан"
else
print_warning "Не удалось создать пользователя автоматически"
print_info "Создайте вручную: prosodyctl register $ADMIN_USER $JITSI_DOMAIN ПАРОЛЬ"
fi
fi
# Перезапускаем сервисы
print_info "Перезапускаем сервисы..."
systemctl restart prosody
sleep 2
systemctl restart jicofo
systemctl restart jitsi-videobridge2
# Проверяем, что сервисы запустились
sleep 3
if systemctl is-active --quiet prosody && \
systemctl is-active --quiet jicofo && \
systemctl is-active --quiet jitsi-videobridge2; then
print_success "Все сервисы запущены"
else
print_warning "Некоторые сервисы могли не запуститься"
print_info "Проверьте: systemctl status prosody jicofo jitsi-videobridge2"
fi
else
print_step "ШАГ 5 из 5: Финальная настройка"
print_info "Аутентификация не настраивается по вашему выбору"
fi
#===============================================================================
# Настройка файрвола
#===============================================================================
print_info "Настраиваем файрвол..."
# Проверяем, установлен ли ufw
if command -v ufw &> /dev/null; then
ufw allow 80/tcp > /dev/null 2>&1
ufw allow 443/tcp > /dev/null 2>&1
ufw allow 10000/udp > /dev/null 2>&1
ufw --force enable > /dev/null 2>&1
print_success "Порты открыты (80, 443, 10000)"
else
print_warning "UFW не установлен — убедитесь, что порты 80, 443 (TCP) и 10000 (UDP) открыты"
fi
#===============================================================================
# ГОТОВО!
#===============================================================================
echo ""
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}║ 🎉 УСТАНОВКА ЗАВЕРШЕНА УСПЕШНО! 🎉 ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${WHITE}Ваш Jitsi Meet доступен по адресу:${NC}"
echo ""
echo -e " ${CYAN}https://$JITSI_DOMAIN${NC}"
echo ""
if [ "$SETUP_AUTH" = true ]; then
echo -e "${WHITE}Данные для входа:${NC}"
echo -e " Логин: ${CYAN}$ADMIN_USER${NC}"
echo -e " Пароль: ${CYAN}(тот, что вы указали)${NC}"
echo ""
echo -e "${BLUE}ℹ️ Для создания комнаты нужно ввести логин и пароль.${NC}"
echo -e "${BLUE} Гости заходят по ссылке без авторизации.${NC}"
fi
echo ""
echo -e "${YELLOW}Что делать дальше:${NC}"
echo -e " 1. Откройте ${WHITE}https://$JITSI_DOMAIN${NC} в браузере"
echo -e " 2. Создайте тестовую комнату"
echo -e " 3. Проверьте камеру и микрофон"
echo -e " 4. Отправьте ссылку другу для проверки"
echo ""
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e " Видео-инструкция: ${WHITE}Лысый из браузера${NC} на YouTube"
echo -e " Telegram: ${WHITE}https://t.me/+2qI3y89Hi2FiODN${NC}"
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment