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

54 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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