nextcloud-install/native/setup-env.sh
2026-06-24 09:23:58 +03:00

40 lines
1.3 KiB
Bash

#!/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}"