54 lines
1.9 KiB
Bash
54 lines
1.9 KiB
Bash
#!/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"
|