f7cloud_client/install.sh

573 lines
25 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
#
# Скрипт инициализации F7cloud клиента
# Устанавливает зависимости, настраивает Apache, Redis, PostgreSQL
#
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INSTALL_DIR="$SCRIPT_DIR"
CONFIG_FILE="$INSTALL_DIR/config/config.php"
DATA_DIR="/data"
# APACHE_USER задаётся ниже после определения типа веб-сервера (apache2 → www-data, httpd → apache)
echo "=========================================="
echo "F7cloud Client Installation Script"
echo "=========================================="
echo ""
# Проверка прав root
if [ "$EUID" -ne 0 ]; then
echo "Ошибка: Скрипт должен запускаться от root"
exit 1
fi
# Проверка переменных окружения для неинтерактивного режима
NON_INTERACTIVE=false
if [ -n "${DOMAIN:-}" ] && [ -n "${DB_NAME:-}" ] && [ -n "${DB_USER:-}" ] && \
[ -n "${DB_PASSWORD:-}" ] && [ -n "${ADMIN_USER:-}" ] && [ -n "${ADMIN_PASSWORD:-}" ]; then
NON_INTERACTIVE=true
echo "Обнаружен неинтерактивный режим (переменные окружения заданы)"
fi
# Функция генерации случайной строки
generate_random() {
openssl rand -hex 32
}
# Функция генерации instanceid
generate_instanceid() {
openssl rand -hex 4
}
# Проверка и установка зависимостей
echo "[1/7] Проверка зависимостей..."
# PHP
if ! command -v php &> /dev/null; then
echo "Установка PHP..."
apt-get update -qq
apt-get install -y php-fpm php-cli php-common php-mysql php-pgsql php-curl php-gd php-mbstring php-xml php-zip php-bcmath php-intl php-redis php-apcu php-imagick 2>/dev/null
fi
PHP_VERSION=$(php -r 'echo PHP_VERSION;')
echo "✓ PHP $PHP_VERSION установлен"
# Apache
if ! command -v apache2 &> /dev/null && ! command -v httpd &> /dev/null; then
echo "Установка Apache..."
apt-get install -y apache2 libapache2-mod-php 2>/dev/null
fi
if command -v apache2 &> /dev/null; then
APACHE_CMD="apache2ctl"
APACHE_SERVICE="apache2"
elif command -v httpd &> /dev/null; then
APACHE_CMD="apachectl"
APACHE_SERVICE="httpd"
else
echo "Ошибка: Apache не найден"
exit 1
fi
# Пользователь веб-сервера: под Debian/Ubuntu (apache2) — www-data, под RHEL/CentOS (httpd) — apache
# Переменная окружения APACHE_USER переопределяет автоопределение
if [ -n "${APACHE_USER:-}" ]; then
: # уже задан из окружения
else
if [ "$APACHE_SERVICE" = "httpd" ]; then
APACHE_USER="apache"
else
APACHE_USER="www-data"
fi
fi
# Проверка, что пользователь существует (на некоторых системах есть только www-data)
if ! id "$APACHE_USER" &>/dev/null; then
if [ "$APACHE_USER" = "apache" ]; then
echo "Пользователь apache не найден, используется www-data"
APACHE_USER="www-data"
else
echo "Пользователь www-data не найден, используется apache"
APACHE_USER="apache"
fi
fi
if ! id "$APACHE_USER" &>/dev/null; then
echo "Ошибка: не найден пользователь веб-сервера (ни www-data, ни apache). Создайте пользователя или задайте APACHE_USER."
exit 1
fi
echo "✓ Пользователь веб-сервера: $APACHE_USER"
echo "✓ Apache установлен"
# Включить необходимые модули Apache
echo "Включение модулей Apache..."
a2enmod rewrite headers env dir mime setenvif 2>/dev/null || true
a2enmod php* 2>/dev/null || true
# PostgreSQL клиент
if ! command -v psql &> /dev/null; then
echo "Установка PostgreSQL клиента..."
apt-get install -y postgresql-client 2>/dev/null
fi
echo "✓ PostgreSQL клиент установлен"
# Redis
if ! command -v redis-cli &> /dev/null; then
echo "[2/7] Установка Redis..."
apt-get install -y redis-server 2>/dev/null
# Настройка Redis
sed -i 's/^# maxmemory <bytes>/maxmemory 256mb/' /etc/redis/redis.conf 2>/dev/null || true
sed -i 's/^# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/' /etc/redis/redis.conf 2>/dev/null || true
systemctl enable redis-server 2>/dev/null || systemctl enable redis 2>/dev/null || true
systemctl restart redis-server 2>/dev/null || systemctl restart redis 2>/dev/null || true
echo "✓ Redis установлен и запущен"
else
echo "[2/7] ✓ Redis уже установлен"
systemctl start redis-server 2>/dev/null || systemctl start redis 2>/dev/null || true
fi
# Проверка подключения к Redis
if redis-cli ping &> /dev/null; then
echo "✓ Redis работает"
else
echo "⚠ Предупреждение: Redis не отвечает на ping"
fi
# Настройка Apache
echo "[3/7] Настройка Apache..."
# Определить домен
if [ -z "${DOMAIN:-}" ]; then
read -p "Введите доменное имя для F7cloud (например: cloud.example.com): " DOMAIN
if [ -z "$DOMAIN" ]; then
echo "Ошибка: Домен обязателен"
exit 1
fi
else
echo "Используется домен из переменной окружения: $DOMAIN"
fi
# Определить путь установки (DocumentRoot)
if [ -z "${INSTALL_PATH:-}" ]; then
read -p "Путь установки F7cloud [$INSTALL_DIR]: " INSTALL_PATH
INSTALL_PATH=${INSTALL_PATH:-$INSTALL_DIR}
else
echo "Используется путь установки из переменной окружения: $INSTALL_PATH"
fi
# Создать виртуальный хост Apache
APACHE_SITE_FILE="/etc/apache2/sites-available/f7cloud.conf"
if [ -f "/etc/httpd/conf.d/f7cloud.conf" ] || [ -f "/etc/apache2/sites-available/f7cloud.conf" ]; then
read -p "Конфиг Apache для f7cloud уже существует. Перезаписать? (y/N): " OVERWRITE
if [[ ! "$OVERWRITE" =~ ^[Yy]$ ]]; then
echo "Пропуск создания конфига Apache"
else
rm -f /etc/apache2/sites-available/f7cloud.conf /etc/httpd/conf.d/f7cloud.conf
fi
fi
if [ ! -f "/etc/apache2/sites-available/f7cloud.conf" ] && [ ! -f "/etc/httpd/conf.d/f7cloud.conf" ]; then
cat > "$APACHE_SITE_FILE" <<EOF
<VirtualHost *:80>
ServerName $DOMAIN
DocumentRoot $INSTALL_PATH
<Directory $INSTALL_PATH>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog \${APACHE_LOG_DIR}/f7cloud_error.log
CustomLog \${APACHE_LOG_DIR}/f7cloud_access.log combined
</VirtualHost>
EOF
# Если Apache 2.4+
if [ -d "/etc/apache2/sites-available" ]; then
a2ensite f7cloud.conf 2>/dev/null || true
fi
echo "✓ Конфиг Apache создан: $APACHE_SITE_FILE"
fi
# Запрос данных PostgreSQL
echo "[4/7] Настройка PostgreSQL..."
if [ -z "${DB_HOST:-}" ]; then
read -p "Хост PostgreSQL [localhost]: " DB_HOST
DB_HOST=${DB_HOST:-localhost}
else
echo "Используется хост PostgreSQL из переменной окружения: $DB_HOST"
fi
if [ -z "${DB_PORT:-}" ]; then
read -p "Порт PostgreSQL [5432]: " DB_PORT
DB_PORT=${DB_PORT:-5432}
else
echo "Используется порт PostgreSQL из переменной окружения: $DB_PORT"
fi
if [ -z "${DB_NAME:-}" ]; then
read -p "Имя базы данных: " DB_NAME
if [ -z "$DB_NAME" ]; then
echo "Ошибка: Имя базы данных обязательно"
exit 1
fi
else
echo "Используется имя базы данных из переменной окружения: $DB_NAME"
fi
if [ -z "${DB_USER:-}" ]; then
read -p "Пользователь PostgreSQL: " DB_USER
if [ -z "$DB_USER" ]; then
echo "Ошибка: Пользователь обязателен"
exit 1
fi
else
echo "Используется пользователь PostgreSQL из переменной окружения: $DB_USER"
fi
if [ -z "${DB_PASSWORD:-}" ]; then
read -sp "Пароль PostgreSQL: " DB_PASSWORD
echo ""
if [ -z "$DB_PASSWORD" ]; then
echo "Ошибка: Пароль обязателен"
exit 1
fi
else
echo "Используется пароль PostgreSQL из переменной окружения"
fi
if [ -z "${DB_PREFIX:-}" ]; then
read -p "Префикс таблиц [oc_]: " DB_PREFIX
DB_PREFIX=${DB_PREFIX:-oc_}
else
echo "Используется префикс таблиц из переменной окружения: $DB_PREFIX"
fi
# Проверка подключения к БД
echo "Проверка подключения к PostgreSQL..."
export PGPASSWORD="$DB_PASSWORD"
if psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" &> /dev/null; then
echo "✓ Подключение к PostgreSQL успешно"
else
echo "⚠ Предупреждение: Не удалось подключиться к PostgreSQL"
echo " Убедитесь, что база данных создана и пользователь имеет права"
fi
unset PGPASSWORD
# Дополнительные настройки
echo "[5/8] Дополнительные настройки..."
if [ -z "${DATA_DIR_INPUT:-}" ]; then
read -p "Директория данных [$DATA_DIR]: " DATA_DIR_INPUT
DATA_DIR=${DATA_DIR_INPUT:-$DATA_DIR}
else
DATA_DIR=${DATA_DIR_INPUT:-$DATA_DIR}
echo "Используется директория данных из переменной окружения: $DATA_DIR"
fi
if [ -z "${TRUSTED_DOMAINS_INPUT:-}" ]; then
read -p "Trusted domains (через запятую) [$DOMAIN]: " TRUSTED_DOMAINS_INPUT
TRUSTED_DOMAINS=${TRUSTED_DOMAINS_INPUT:-$DOMAIN}
else
TRUSTED_DOMAINS=${TRUSTED_DOMAINS_INPUT:-$DOMAIN}
echo "Используются trusted domains из переменной окружения: $TRUSTED_DOMAINS"
fi
if [ -z "${TRUSTED_PROXIES:-}" ]; then
read -p "Trusted proxies (IP через запятую, Enter для пропуска): " TRUSTED_PROXIES
else
echo "Используются trusted proxies из переменной окружения: $TRUSTED_PROXIES"
fi
if [ -z "${CLI_URL:-}" ]; then
read -p "CLI URL (для occ команд) [https://$DOMAIN]: " CLI_URL
CLI_URL=${CLI_URL:-https://$DOMAIN}
else
echo "Используется CLI URL из переменной окружения: $CLI_URL"
fi
# Данные администратора
echo "[6/8] Создание администратора..."
if [ -z "${ADMIN_USER:-}" ]; then
read -p "Логин администратора [admin]: " ADMIN_USER
ADMIN_USER=${ADMIN_USER:-admin}
else
echo "Используется логин администратора из переменной окружения: $ADMIN_USER"
fi
if [ -z "${ADMIN_PASSWORD:-}" ]; then
read -sp "Пароль администратора: " ADMIN_PASSWORD
echo ""
if [ -z "$ADMIN_PASSWORD" ]; then
echo "Ошибка: Пароль администратора обязателен"
exit 1
fi
else
echo "Используется пароль администратора из переменной окружения"
fi
# Создание config.php не выполняем — passwordsalt, secret, instanceid создаст occ maintenance:install
echo "[7/8] Подготовка к установке..."
# Создать директорию config если нет (occ создаст в ней config.php)
mkdir -p "$INSTALL_DIR/config"
# Бэкап существующего config.php
if [ -f "$CONFIG_FILE" ]; then
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.$(date +%Y%m%d_%H%M%S)"
echo "✓ Старый config.php сохранен в бэкап"
fi
# Создание директории данных
if [ ! -d "$DATA_DIR" ]; then
mkdir -p "$DATA_DIR"
echo "✓ Директория данных создана: $DATA_DIR"
fi
chown -R $APACHE_USER:$APACHE_USER "$DATA_DIR"
chmod 750 "$DATA_DIR"
echo "✓ Права на директорию данных установлены"
# Права на установочную директорию
chown -R $APACHE_USER:$APACHE_USER "$INSTALL_DIR"
find "$INSTALL_DIR" -type f -exec chmod 640 {} \;
find "$INSTALL_DIR" -type d -exec chmod 750 {} \;
find "$INSTALL_DIR" -name "*.sh" -exec chmod 750 {} \;
find "$INSTALL_DIR" -name "*.php" -exec chmod 640 {} \;
echo "✓ Права на файлы установлены"
# Перезапуск Apache
echo ""
echo "Перезапуск Apache..."
systemctl reload apache2 2>/dev/null || systemctl reload httpd 2>/dev/null || $APACHE_CMD graceful 2>/dev/null || true
echo "✓ Apache перезапущен"
# Запуск occ maintenance:install
echo ""
echo "[9/9] Инициализация F7cloud через occ..."
cd "$INSTALL_DIR"
# Проверка что база данных существует
export PGPASSWORD="$DB_PASSWORD"
if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" &> /dev/null; then
echo "⚠ Предупреждение: База данных '$DB_NAME' не доступна"
echo " Создайте базу данных перед продолжением:"
echo " CREATE DATABASE $DB_NAME OWNER $DB_USER;"
read -p "Продолжить установку? (y/N): " CONTINUE
if [[ ! "$CONTINUE" =~ ^[Yy]$ ]]; then
echo "Установка прервана"
exit 1
fi
fi
unset PGPASSWORD
# Запуск maintenance:install
echo "Запуск occ maintenance:install..."
if sudo -u $APACHE_USER php occ maintenance:install \
--database pgsql \
--database-name "$DB_NAME" \
--database-host "$DB_HOST:$DB_PORT" \
--database-user "$DB_USER" \
--database-pass "$DB_PASSWORD" \
--admin-user "$ADMIN_USER" \
--admin-pass "$ADMIN_PASSWORD" \
--data-dir "$DATA_DIR" 2>&1; then
echo "✓ F7cloud успешно инициализирован (passwordsalt, secret, instanceid взяты из config, созданного occ)"
# Дополнить config.php: trusted_domains, trusted_proxies, redis, overwriteprotocol (passwordsalt, secret, instanceid уже из occ)
PATCH_PHP=$(mktemp)
cat > "$PATCH_PHP" <<'PATCHEOF'
<?php
$CONFIG_FILE = $argv[1];
$trusted_domains_str = $argv[2];
$trusted_proxies_str = isset($argv[3]) ? $argv[3] : '';
$cli_url = $argv[4] ?? '';
$CONFIG = array();
if (is_file($CONFIG_FILE)) { include $CONFIG_FILE; }
$CONFIG['trusted_domains'] = array_values(array_filter(array_map('trim', explode(',', $trusted_domains_str))));
$CONFIG['overwrite.cli.url'] = $cli_url;
$CONFIG['overwriteprotocol'] = 'https';
$CONFIG['htaccess.RewriteBase'] = '/';
$CONFIG['memcache.local'] = '\OC\Memcache\APCu';
$CONFIG['memcache.distributed'] = '\OC\Memcache\Redis';
$CONFIG['memcache.locking'] = '\OC\Memcache\Redis';
$CONFIG['redis'] = array('host' => '127.0.0.1', 'port' => 6379, 'timeout' => 1.5, 'dbindex' => 0);
$CONFIG['maintenance'] = false;
$CONFIG['loglevel'] = 0;
if ($trusted_proxies_str !== '') {
$CONFIG['trusted_proxies'] = array_values(array_filter(array_map('trim', explode(',', $trusted_proxies_str))));
}
file_put_contents($CONFIG_FILE, "<?php\n\$CONFIG = " . var_export($CONFIG, true) . ";\n");
PATCHEOF
php "$PATCH_PHP" "$CONFIG_FILE" "$TRUSTED_DOMAINS" "$TRUSTED_PROXIES" "$CLI_URL" 2>/dev/null && rm -f "$PATCH_PHP" && echo "✓ config.php дополнен (trusted_domains, redis, overwriteprotocol и др.)"
chmod 640 "$CONFIG_FILE"
chown root:$APACHE_USER "$CONFIG_FILE" 2>/dev/null || true
# Включение приложений по умолчанию (mail, office, talk, circles и др.)
echo ""
echo "Включение приложений (mail, richdocuments, spreed, circles, calendar, contacts, ...)..."
DEFAULT_APPS="mail richdocuments spreed circles calendar contacts deck files_pdfviewer files_reminders firstrunwizard notifications dashboard"
for app in $DEFAULT_APPS; do
if [ -d "$INSTALL_DIR/apps/$app" ]; then
if sudo -u $APACHE_USER php occ app:enable "$app" 2>/dev/null; then
echo "$app"
else
echo "$app (пропущено или уже включено)"
fi
else
echo " $app (не найдено в apps/)"
fi
done
echo "✓ Приложения обработаны"
# Настройка F7Talk (если приложение установлено)
echo ""
TALK_CONFIG_FILE="$INSTALL_DIR/config/talk-config.php"
if [ -f "$TALK_CONFIG_FILE" ]; then
echo "Найдён файл конфигурации F7Talk: $TALK_CONFIG_FILE"
echo "Применение настроек из файла..."
USE_TALK_CONFIG_FILE=true
else
if [ -z "${CONFIGURE_TALK:-}" ]; then
read -p "Настроить F7Talk (Talk)? (y/N): " CONFIGURE_TALK
USE_TALK_CONFIG_FILE=false
if [[ ! "$CONFIGURE_TALK" =~ ^[Yy]$ ]]; then
echo "Пропуск настройки F7Talk"
USE_TALK_CONFIG_FILE=false
fi
else
USE_TALK_CONFIG_FILE=false
if [[ "$CONFIGURE_TALK" =~ ^[Yy]$ ]] || [ "$CONFIGURE_TALK" = "yes" ] || [ "$CONFIGURE_TALK" = "true" ]; then
echo "Настройка F7Talk включена через переменную окружения"
else
echo "Пропуск настройки F7Talk (задано через переменную окружения)"
fi
fi
fi
# Проверка, нужно ли настраивать F7Talk
SHOULD_CONFIGURE_TALK=false
if [ "$USE_TALK_CONFIG_FILE" = true ]; then
SHOULD_CONFIGURE_TALK=true
elif [[ "$CONFIGURE_TALK" =~ ^[Yy]$ ]] || [ "$CONFIGURE_TALK" = "yes" ] || [ "$CONFIGURE_TALK" = "true" ]; then
SHOULD_CONFIGURE_TALK=true
fi
if [ "$SHOULD_CONFIGURE_TALK" = true ]; then
echo "Настройка F7Talk..."
# Проверка, включён ли Talk
TALK_APP_ID=""
if sudo -u $APACHE_USER php occ app:list 2>/dev/null | grep -qE "(f7talk|spreed).*enabled"; then
TALK_APP_ID=$(sudo -u $APACHE_USER php occ app:list 2>/dev/null | grep -E "(f7talk|spreed)" | grep enabled | awk '{print $1}' | head -1)
fi
if [ -z "$TALK_APP_ID" ]; then
echo "⚠ F7Talk не включен. Попытка включить..."
sudo -u $APACHE_USER php occ app:enable f7talk 2>/dev/null || sudo -u $APACHE_USER php occ app:enable spreed 2>/dev/null || true
TALK_APP_ID=$(sudo -u $APACHE_USER php occ app:list 2>/dev/null | grep -E "(f7talk|spreed)" | grep enabled | awk '{print $1}' | head -1)
fi
if [ -n "$TALK_APP_ID" ]; then
# Если есть файл конфига - читаем из него
if [ -f "$TALK_CONFIG_FILE" ]; then
# Читаем настройки из PHP файла через php
TALK_FEDERATION=$(php -r "require '$TALK_CONFIG_FILE'; echo \$config['federation_enabled'] ?? 'no';" 2>/dev/null || echo "no")
TALK_ALLOWED_GROUPS=$(php -r "require '$TALK_CONFIG_FILE'; echo json_encode(\$config['allowed_groups'] ?? []);" 2>/dev/null || echo "[]")
TALK_START_CONVERSATIONS=$(php -r "require '$TALK_CONFIG_FILE'; echo json_encode(\$config['start_conversations'] ?? []);" 2>/dev/null || echo "[]")
TALK_STUN_SERVERS=$(php -r "require '$TALK_CONFIG_FILE'; echo json_encode(\$config['stun_servers'] ?? []);" 2>/dev/null || echo "[]")
TALK_BREAKOUT_ROOMS=$(php -r "require '$TALK_CONFIG_FILE'; echo \$config['breakout_rooms'] ?? 'yes';" 2>/dev/null || echo "yes")
TALK_CALL_RECORDING=$(php -r "require '$TALK_CONFIG_FILE'; echo \$config['call_recording'] ?? 'yes';" 2>/dev/null || echo "yes")
TALK_ATTACHMENT_FOLDER=$(php -r "require '$TALK_CONFIG_FILE'; echo \$config['default_attachment_folder'] ?? '/Talk';" 2>/dev/null || echo "/Talk")
echo "✓ Настройки прочитаны из $TALK_CONFIG_FILE"
else
# Интерактивный ввод
read -p "Включить федерацию Talk? (y/N): " TALK_FEDERATION_INPUT
TALK_FEDERATION=$([ "$TALK_FEDERATION_INPUT" = "y" ] || [ "$TALK_FEDERATION_INPUT" = "Y" ] && echo "yes" || echo "no")
read -p "Группы для доступа к Talk (через запятую, Enter для всех): " TALK_ALLOWED_GROUPS_INPUT
if [ -n "$TALK_ALLOWED_GROUPS_INPUT" ]; then
TALK_ALLOWED_GROUPS=$(echo "$TALK_ALLOWED_GROUPS_INPUT" | awk -F',' '{printf "["; for(i=1;i<=NF;i++) {gsub(/^[ \t]+|[ \t]+$/, "", $i); if(i>1) printf ","; printf "\"%s\"", $i} printf "]"}')
else
TALK_ALLOWED_GROUPS="[]"
fi
read -p "STUN серверы (через запятую, Enter для пропуска): " TALK_STUN_SERVERS_INPUT
if [ -n "$TALK_STUN_SERVERS_INPUT" ]; then
TALK_STUN_SERVERS=$(echo "$TALK_STUN_SERVERS_INPUT" | awk -F',' '{printf "["; for(i=1;i<=NF;i++) {gsub(/^[ \t]+|[ \t]+$/, "", $i); if(i>1) printf ","; printf "\"%s\"", $i} printf "]"}')
else
TALK_STUN_SERVERS="[]"
fi
TALK_START_CONVERSATIONS="[]"
TALK_BREAKOUT_ROOMS="yes"
TALK_CALL_RECORDING="yes"
TALK_ATTACHMENT_FOLDER="/Talk"
fi
# Применение настроек через occ
if [ "$TALK_FEDERATION" = "yes" ]; then
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" federation_enabled --value="yes" 2>/dev/null || true
echo "✓ Федерация Talk включена"
fi
if [ "$TALK_ALLOWED_GROUPS" != "[]" ]; then
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" allowed_groups --value="$TALK_ALLOWED_GROUPS" 2>/dev/null || true
echo "✓ Группы для Talk настроены: $TALK_ALLOWED_GROUPS"
fi
if [ "$TALK_START_CONVERSATIONS" != "[]" ]; then
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" start_conversations --value="$TALK_START_CONVERSATIONS" 2>/dev/null || true
echo "✓ Группы для создания бесед настроены"
fi
if [ "$TALK_STUN_SERVERS" != "[]" ]; then
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" stun_servers --value="$TALK_STUN_SERVERS" 2>/dev/null || true
echo "✓ STUN серверы настроены: $TALK_STUN_SERVERS"
fi
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" breakout_rooms --value="$TALK_BREAKOUT_ROOMS" 2>/dev/null || true
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" call_recording --value="$TALK_CALL_RECORDING" 2>/dev/null || true
sudo -u $APACHE_USER php occ config:app:set "$TALK_APP_ID" default_attachment_folder --value="$TALK_ATTACHMENT_FOLDER" 2>/dev/null || true
echo "✓ Настройки F7Talk применены"
else
echo "⚠ F7Talk не найден. Убедитесь, что приложение установлено."
fi
fi
else
echo "⚠ Ошибка при запуске occ maintenance:install"
echo " Проверьте логи и убедитесь, что база данных создана"
exit 1
fi
echo ""
echo "=========================================="
echo "Установка завершена!"
echo "=========================================="
echo ""
echo "F7cloud успешно установлен и настроен."
echo ""
echo "Данные для входа:"
echo " URL: https://$DOMAIN"
echo " Логин: $ADMIN_USER"
echo " Пароль: <указанный вами>"
echo ""
echo "Конфигурация сохранена в: $CONFIG_FILE"
echo "Директория данных: $DATA_DIR"
echo ""
echo "Примечание: SSL сертификаты должны быть настроены на прокси-сервере."
echo ""