40 lines
1.3 KiB
Bash
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}"
|