# โก PowerShell Script for Supabase Setup on Windows (with WSL2)
# Run this script as Administrator
# 1. Install Chocolatey (if not already installed)
if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
Write-Host "๐ซ Installing Chocolatey..."
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
} else {
Write-Host "โ
Chocolatey is already installed."
}
# 2. Install Git
if (!(Get-Command git -ErrorAction SilentlyContinue)) {
Write-Host "๐ Installing Git..."
choco install git -y
} else {
Write-Host "โ
Git is already installed."
}
# 3. Install Docker Desktop
if (!(Get-Command docker -ErrorAction SilentlyContinue)) {
Write-Host "๐ณ Installing Docker Desktop..."
choco install docker-desktop -y
} else {
Write-Host "โ
Docker Desktop is already installed."
}
# 4. Install WSL and Ubuntu
if (!(Get-Command wsl -ErrorAction SilentlyContinue)) {
Write-Host "๐ง Installing WSL..."
choco install wsl -y
} else {
Write-Host "โ
WSL is already installed."
}
if (!(Get-Command openssl -ErrorAction SilentlyContinue)) {
Write-Host "๐ Installing OpenSSL..."
choco install openssl -y
} else {
Write-Host "โ
OpenSSL is already installed."
}
Write-Host "๐ง Setting WSL 2 as the default version..."
wsl --set-default-version 2
Write-Host "๐ฆ Downloading and installing WSL2 kernel..."
$wslInstaller = "$env:TEMP\wsl_update.msi"
Invoke-WebRequest -Uri "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi" -OutFile $wslInstaller
Start-Process msiexec.exe -ArgumentList "/i $wslInstaller /quiet /norestart" -Wait
Remove-Item $wslInstaller
Write-Host "๐ฅ Installing Ubuntu from Microsoft Store..."
wsl --install -d Ubuntu
echo "Reboot System"
shutdown /r /f /t 5
# 6. Clone Supabase repository
$BaseDir = "C:\supabase-project"
if (!(Test-Path $BaseDir)) {
New-Item -Path $BaseDir -ItemType Directory
}
Set-Location $BaseDir
Write-Host "๐ฆ Cloning the Supabase repository..."
git clone https://github.com/supabase/supabase.git
# 7. Patch docker-compose.yml for Windows volumes
Write-Host "๐ Modifying docker-compose.yml for volume compatibility..."
Set-Location "$BaseDir\supabase"
(Get-Content docker\docker-compose.yml) `
-replace '^\s*- \../volumes/storage:/var/lib/storage:z', ' - supabase_storage:/var/lib/storage' `
| ForEach-Object { $_ -replace '^\s*- \../volumes/db/data:/var/lib/postgresql/data:Z', ' - supabase_db_data:/var/lib/postgresql/data' } `
| Set-Content docker\docker-compose.yml
Add-Content docker\docker-compose.yml @"
supabase_db_data:
supabase_storage:
"@
$BaseDir = "C:\supabase-project"
# 8. Copy project files and prepare environment
Write-Host "๐ Setting up Supabase project directory..."
Set-Location $BaseDir
Copy-Item -Recurse -Force .\supabase\docker\* .\
Copy-Item -Force .\supabase\docker\.env.example .\.env
# 9. Pull Docker images
Write-Host "๐ฅ Pulling Docker images..."
docker-compose pull
# 10. Prompt for SMTP Email Config
$smtpAdminEmail = Read-Host "๐ง Enter the admin email for outgoing mail (SMTP_ADMIN_EMAIL)"
$smtpPass = Read-Host "๐ Enter your Resend SMTP API key (SMTP_PASS)"
@"
SMTP_ADMIN_EMAIL=$smtpAdminEmail
SMTP_HOST=smtp.resend.com
SMTP_PORT=465
SMTP_USER=resend
SMTP_PASS=$smtpPass
SMTP_SENDER_NAME=Supabase
"@ | Add-Content .env
$BaseDir = "C:\supabase-project"
Set-Location $BaseDir
# 11. Start Supabase
Write-Host "๐ Starting Supabase with Docker Compose..."
docker-compose up -d
Write-Host "Visit http://localhost:8000 for dashboard"
Write-Host "DASHBOARD_USERNAME=supabase"
Write-Host "DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated"
$BaseDir = "C:\supabase-project"
Set-Location $BaseDir
docker-compose down
๋ง์ฝ POSTGRES_PASSWORD๋ฅผ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด
docker exec -it supabase-db psql -U supabase_admin
ALTER USER postgres WITH PASSWORD 'NEW_PASSWORD';
๋ฅผ ์คํ ํด์ฃผ๊ณ .envํ์ผ์์ POSTGRES_PASSWORD๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
# ์
๋ ฅํ ๊ธธ์ด๋งํผ์ ํฌ๊ธฐ์ ๋๋คํ base64๋ฅผ ๋ง๋ ๋ค
# JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, DASHBOARD_PASSWORD, SECRET_KEY_BASE, VAULT_ENC_KEY ๋ฑ์ ์ฌ์ฉ ๊ฐ๋ฅ
openssl rand -base64 ๊ธธ์ด