77 lines
2.6 KiB
Bash
77 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
||
# Восстановление / сброс config Nextcloud (NEXTCLOUD_CONFIG_DIR из .env)
|
||
# ./restore-config.sh — дополнить недостающие шаблоны, починить права
|
||
# ./restore-config.sh --force — сброс config и переустановка через occ
|
||
# ./restore-config.sh --web — создать CAN_INSTALL для веб-мастера (без occ)
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
cd "${SCRIPT_DIR}"
|
||
|
||
# shellcheck source=../lib/common.sh
|
||
source "${SCRIPT_DIR}/../lib/common.sh"
|
||
drop_root_if_sudo "${SCRIPT_DIR}/restore-config.sh" "$@"
|
||
|
||
FORCE=false
|
||
WEB=false
|
||
for arg in "$@"; do
|
||
case "${arg}" in
|
||
--force|-f) FORCE=true ;;
|
||
--web) WEB=true; FORCE=true ;;
|
||
-h|--help)
|
||
echo "Использование: ./restore-config.sh [--force|--web]"
|
||
exit 0
|
||
;;
|
||
esac
|
||
done
|
||
|
||
[[ -f .env ]] || { echo "[ERROR] Нет .env"; exit 1; }
|
||
# shellcheck disable=SC1091
|
||
source .env
|
||
[[ -n "${NEXTCLOUD_CONFIG_DIR:-}" ]] || { echo "[ERROR] NEXTCLOUD_CONFIG_DIR не задан в .env"; exit 1; }
|
||
|
||
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
||
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||
|
||
CFG="${NEXTCLOUD_CONFIG_DIR}"
|
||
SRC="${SCRIPT_DIR}/config.defaults"
|
||
|
||
if [[ ! -d "${SRC}" ]]; then
|
||
echo "[ERROR] Нет ${SRC}/" >&2
|
||
exit 1
|
||
fi
|
||
|
||
if [[ "${FORCE}" == true ]]; then
|
||
warn "Сброс config в ${CFG}/"
|
||
if [[ -f "${CFG}/config.php" ]]; then
|
||
sudo cp -a "${CFG}/config.php" "${CFG}.config.php.bak.$(date +%s)" 2>/dev/null || true
|
||
fi
|
||
fi
|
||
|
||
info "Восстановление шаблонов config..."
|
||
restore_config_templates "${SRC}" "${CFG}" "${NEXTCLOUD_INSTANCEID}" "${FORCE}"
|
||
info "Права www-data на ${CFG}/"
|
||
fix_config_permissions "${CFG}"
|
||
|
||
if docker ps --format '{{.Names}}' | grep -q '^nextcloud-app$'; then
|
||
run_compose restart app cron
|
||
sleep 5
|
||
|
||
if [[ "${WEB}" == true ]]; then
|
||
info "CAN_INSTALL → веб-мастер установки"
|
||
sudo touch "${CFG}/CAN_INSTALL"
|
||
sudo chown 33:33 "${CFG}/CAN_INSTALL"
|
||
sudo chmod 664 "${CFG}/CAN_INSTALL"
|
||
warn "Откройте Nextcloud в браузере и завершите установку вручную."
|
||
elif [[ "${FORCE}" == true ]] || ! docker exec nextcloud-app test -s /var/www/html/config/config.php 2>/dev/null; then
|
||
info "occ maintenance:install..."
|
||
occ_maintenance_install
|
||
fix_config_permissions "${CFG}"
|
||
fi
|
||
else
|
||
warn "Контейнер nextcloud-app не запущен — выполните ./start.sh"
|
||
fi
|
||
|
||
info "Готово: ${CFG}/"
|