#!/bin/bash # Установка F7_Office (coolwsd, брендинг). Запускается на сервере Office. # Apache и сертификаты настраивает управляющий скрипт. # Использование: ./f7office.sh /path/to/f7cloud-install.env set -e ROLE="f7office" ENV_FILE="${1:-/tmp/f7cloud-install.env}" ERROR_LOG="/tmp/install-error-${ROLE}.log" log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; } log_warn() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*" >> "$ERROR_LOG"; echo "WARN: $*" >&2; } if [ ! -f "$ENV_FILE" ]; then log_error "Файл конфигурации не найден: $ENV_FILE" exit 1 fi # shellcheck source=/dev/null set -a && source "$ENV_FILE" && set +a > "$ERROR_LOG" echo "=== Лог установки F7_Office ===" >> "$ERROR_LOG" echo "Начало: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG" if ! command -v git >/dev/null 2>&1; then echo "Установка git..." apt-get update -qq && apt-get install -y git || { log_error "Не удалось установить git"; exit 1; } fi echo "Очистка старой директории..." rm -rf /tmp/F7_Office echo "Клонирование репозитория F7_Office..." if ! (cd /tmp && git clone https://git.f7cloud.ru/root/F7_Office.git); then log_error "Не удалось клонировать репозиторий F7_Office" exit 1 fi sleep 1 if ! [ -d /tmp/F7_Office ] || ! [ -f /tmp/F7_Office/install-f7office.sh ]; then log_error "Директория /tmp/F7_Office не содержит install-f7office.sh" exit 1 fi echo "Установка coolwsd и code-brand..." apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y coolwsd code-brand || { log_error "Не удалось установить coolwsd/code-brand"; exit 1; } echo "Копирование файлов брендинга..." DIST_SRC=/tmp/F7_Office/usr/share/coolwsd/browser/dist DIST_DST=/usr/share/coolwsd/browser/dist if [ ! -d "$DIST_DST" ]; then log_error "Каталог $DIST_DST не найден после установки coolwsd" exit 1 fi if [ ! -d "$DIST_SRC" ]; then log_error "В репозитории не найден каталог $DIST_SRC" exit 1 fi cp -a "$DIST_SRC"/* "$DIST_DST/" 2>/dev/null || true for f in branding.js branding.css branding-mobile.css branding-tablet.css cool.html wasm.html bundle.js global.js admin-bundle.js; do [ -f "$DIST_SRC/$f" ] && cp -a "$DIST_SRC/$f" "$DIST_DST/" && echo " Скопирован: $f" done [ -d "$DIST_SRC/welcome" ] && cp -a "$DIST_SRC/welcome" "$DIST_DST/" [ -d "$DIST_SRC/src" ] && mkdir -p "$DIST_DST/src" && cp -a "$DIST_SRC/src/layer" "$DIST_DST/src/" 2>/dev/null || true [ -d "$DIST_SRC/f7cloud" ] && cp -a "$DIST_SRC/f7cloud" "$DIST_DST/" [ -d "$DIST_SRC/l10n" ] && mkdir -p "$DIST_DST/l10n" && cp -a "$DIST_SRC/l10n"/* "$DIST_DST/l10n/" 2>/dev/null || true [ -d "$DIST_SRC/admin" ] && mkdir -p "$DIST_DST/admin" && cp -a "$DIST_SRC/admin"/* "$DIST_DST/admin/" 2>/dev/null || true systemctl restart coolwsd 2>/dev/null || true echo "Конец: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG" echo "F7_Office установлен. Лог ошибок: $ERROR_LOG" exit 0