gukbi

Supabase

Install

# โšก 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

Docker Config (Run Once Only)

# 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:
"@

Environment Config

$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

Run

$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"

Down

$BaseDir = "C:\supabase-project"
Set-Location $BaseDir
docker-compose down

Etc