#!/usr/bin/env bash # Генерация .env для нативной установки # Можно запускать без sudo: ./setup-env.sh [домен] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=../lib/common.sh source "${SCRIPT_DIR}/../lib/common.sh" ENV_FILE="${SCRIPT_DIR}/.env" ENV_EXAMPLE="${SCRIPT_DIR}/.env.example" generate_password() { openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c "${1:-32}" } DOMAIN="${1:-}" if [[ -z "${DOMAIN}" ]]; then DOMAIN="$(hostname -I 2>/dev/null | awk '{print $1}' || true)" fi [[ -z "${DOMAIN}" ]] && DOMAIN="localhost" [[ -f "${ENV_FILE}" ]] && { echo ".env уже существует"; exit 1; } cp "${ENV_EXAMPLE}" "${ENV_FILE}" sed -i "s|^NEXTCLOUD_ADMIN_PASSWORD=.*|NEXTCLOUD_ADMIN_PASSWORD=$(generate_password 24)|" "${ENV_FILE}" sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=$(generate_password 32)|" "${ENV_FILE}" sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=$(generate_password 32)|" "${ENV_FILE}" sed -i "s|^NEXTCLOUD_DOMAIN=.*|NEXTCLOUD_DOMAIN=${DOMAIN}|" "${ENV_FILE}" chmod 600 "${ENV_FILE}" fix_env_ownership "${ENV_FILE}" # shellcheck disable=SC1091 source "${ENV_FILE}" echo "Создан ${ENV_FILE}" echo " Домен: ${NEXTCLOUD_DOMAIN}" echo " Администратор: ${NEXTCLOUD_ADMIN_USER} / ${NEXTCLOUD_ADMIN_PASSWORD}"