Files
zhuangxiu/scripts/bootstrap.ps1
T

38 lines
1.3 KiB
PowerShell

param(
[switch]$Force
)
$ErrorActionPreference = "Stop"
$projectRoot = Split-Path -Parent $PSScriptRoot
$templatePath = Join-Path $projectRoot ".env.example"
$targetPath = Join-Path $projectRoot ".env"
if ((Test-Path -LiteralPath $targetPath) -and -not $Force) {
Write-Host ".env already exists. Use -Force to regenerate it."
exit 0
}
function New-SecureHex([int]$byteCount) {
$bytes = New-Object byte[] $byteCount
$generator = [System.Security.Cryptography.RandomNumberGenerator]::Create()
try {
$generator.GetBytes($bytes)
}
finally {
$generator.Dispose()
}
return -join ($bytes | ForEach-Object { $_.ToString("x2") })
}
$postgresPassword = New-SecureHex 24
$redisPassword = New-SecureHex 24
$content = Get-Content -Raw -Encoding UTF8 -LiteralPath $templatePath
$content = $content.Replace("__AUTO_POSTGRES_PASSWORD__", $postgresPassword)
$content = $content.Replace("__AUTO_REDIS_PASSWORD__", $redisPassword)
$utf8WithoutBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText($targetPath, $content, $utf8WithoutBom)
Write-Host "Bootstrap complete: PostgreSQL and Redis passwords were generated securely."
Write-Host "Configure MinIO, OCR, AI models, GPU, Langfuse and Sentry in System Settings."