#!/usr/bin/env bash # Генерация .env с паролями (пути задаются при ./install.sh) # Запускать БЕЗ sudo: ./setup-env.sh [домен_или_ip] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=../lib/common.sh source "${SCRIPT_DIR}/../lib/common.sh" drop_root_if_sudo "${SCRIPT_DIR}/setup-env.sh" "$@" ENV_FILE="${SCRIPT_DIR}/.env" ENV_EXAMPLE="${SCRIPT_DIR}/.env.example" generate_password() { local length="${1:-32}" openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c "${length}" } TRUSTED_DOMAIN="${1:-}" if [[ -z "${TRUSTED_DOMAIN}" ]]; then TRUSTED_DOMAIN="$(hostname -I 2>/dev/null | awk '{print $1}' || true)" fi [[ -z "${TRUSTED_DOMAIN}" ]] && TRUSTED_DOMAIN="localhost" if [[ -f "${ENV_FILE}" ]]; then echo "Файл .env уже существует: ${ENV_FILE}" exit 1 fi cp "${ENV_EXAMPLE}" "${ENV_FILE}" ADMIN_PASS="$(generate_password 24)" ROOT_PASS="$(generate_password 32)" DB_PASS="$(generate_password 32)" REDIS_PASS="$(generate_password 32)" INSTANCE_ID="$(openssl rand -base64 48 | tr -dc 'a-z0-9' | head -c 12)" TRUSTED_LIST="localhost 127.0.0.1 ${TRUSTED_DOMAIN}" sed -i "s|^NEXTCLOUD_INSTANCEID=.*|NEXTCLOUD_INSTANCEID=${INSTANCE_ID}|" "${ENV_FILE}" sed -i "s|^NEXTCLOUD_ADMIN_PASSWORD=.*|NEXTCLOUD_ADMIN_PASSWORD=${ADMIN_PASS}|" "${ENV_FILE}" sed -i "s|^MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD=${ROOT_PASS}|" "${ENV_FILE}" sed -i "s|^MYSQL_PASSWORD=.*|MYSQL_PASSWORD=${DB_PASS}|" "${ENV_FILE}" sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=${REDIS_PASS}|" "${ENV_FILE}" sed -i "s|^NEXTCLOUD_TRUSTED_DOMAINS=.*|NEXTCLOUD_TRUSTED_DOMAINS=\"${TRUSTED_LIST}\"|" "${ENV_FILE}" chmod 600 "${ENV_FILE}" echo "Создан ${ENV_FILE}" echo " Администратор: admin / ${ADMIN_PASS}" echo " Домен/IP: ${TRUSTED_DOMAIN}" echo " Пути хранения задаст ./install.sh"