Project Settings
Configure storage, SMTP, auth, database, and other project settings.
Each project has configurable settings for storage, email, authentication, database, and more. Changes require a project restart.
Accessing Settings
Via Web UI
- Click on a project
- Go to Settings tab
- Select the category
- Make changes
- Click Save and restart
Via API
# Get all settings curl https://supascale.example.com/api/v1/projects/my-project/settings \ -H "X-API-Key: your-api-key" # Get specific category curl "https://supascale.example.com/api/v1/projects/my-project/settings?category=smtp" \ -H "X-API-Key: your-api-key"
Storage Settings
Configure file storage behavior:
| Setting | Description | Default |
|---|---|---|
| File Size Limit | Maximum upload size | 50MB |
| Image Transformation | Enable imgproxy | Disabled |
Update via API
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "storage",
"settings": {
"fileSizeLimit": "100MB"
}
}'
SMTP Settings
Configure email delivery for authentication:
| Setting | Description | Example |
|---|---|---|
| Host | SMTP server | smtp.sendgrid.net |
| Port | SMTP port | 587 |
| User | SMTP username | apikey |
| Password | SMTP password | SG.xxx |
| Sender Name | From name | My App |
| Sender Email | From address | [email protected] |
Example Configurations
SendGrid
{
"category": "smtp",
"settings": {
"host": "smtp.sendgrid.net",
"port": 587,
"user": "apikey",
"password": "your-sendgrid-api-key",
"senderName": "My Application",
"senderEmail": "[email protected]"
}
}
Mailgun
{
"category": "smtp",
"settings": {
"host": "smtp.mailgun.org",
"port": 587,
"user": "[email protected]",
"password": "your-mailgun-password",
"senderName": "My Application",
"senderEmail": "[email protected]"
}
}
Gmail
{
"category": "smtp",
"settings": {
"host": "smtp.gmail.com",
"port": 587,
"user": "[email protected]",
"password": "your-app-password",
"senderName": "My Application",
"senderEmail": "[email protected]"
}
}
For Gmail, use an App Password instead of your regular password.
Auth Settings
Configure authentication behavior:
| Setting | Description | Default |
|---|---|---|
| Site URL | Redirect URL after auth | Project URL |
| JWT Expiry | Token lifetime (seconds) | 3600 |
| Disable Signup | Prevent new registrations | false |
| Email Confirm | Require email verification | true |
Update via API
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "auth",
"settings": {
"siteUrl": "https://myapp.com",
"jwtExpiry": 7200,
"disableSignup": false,
"emailConfirmRequired": true
}
}'
OAuth Provider Settings
Configure social login providers for your project. For detailed setup instructions, see the OAuth documentation.
Supported Providers
Supascale supports 18 OAuth providers including Google, GitHub, Apple, Microsoft, Discord, and more.
Configuring a Provider
- Click on a project
- Go to Settings > OAuth Providers
- Click the provider you want to enable
- Enter your Client ID and Client Secret
- Copy the Callback URL to your provider's developer console
- Click Save
- Restart the project
Example: Enable Google OAuth
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/oauth/google \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"clientId": "your-google-client-id.apps.googleusercontent.com",
"clientSecret": "your-google-client-secret"
}'
Viewing Configured Providers
curl https://supascale.example.com/api/v1/projects/my-project/oauth \ -H "X-API-Key: your-api-key"
Response:
{
"providers": [
{
"name": "google",
"enabled": true,
"configured": true
},
{
"name": "github",
"enabled": false,
"configured": false
}
]
}
OAuth credentials are encrypted before storage. See Encryption for details.
Connection Pooler Settings
Configure PgBouncer (requires pooler service enabled):
| Setting | Description | Default |
|---|---|---|
| Pool Mode | Connection pooling mode | transaction |
| Default Pool Size | Connections per user/db | 20 |
| Max Client Connections | Maximum client connections | 100 |
Pool Modes:
- session - Connection held for entire session
- transaction - Connection released after transaction
- statement - Connection released after each statement
Update via API
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "pooler",
"settings": {
"poolMode": "transaction",
"defaultPoolSize": 25,
"maxClientConnections": 200
}
}'
API Settings
Configure REST API behavior:
| Setting | Description | Default |
|---|---|---|
| Max Rows | Maximum rows returned | 1000 |
| DB Schema | Exposed schemas | public |
Update via API
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "api",
"settings": {
"maxRows": 2000,
"dbSchema": "public,api"
}
}'
Database Settings
Configure PostgreSQL version and external database access.
| Setting | Description | Default |
|---|---|---|
| PostgreSQL Version | Database version (15, 16, or 17) | 15 |
| External Access | Allow direct PostgreSQL connections from outside Docker | Disabled |
View Database Settings
curl "https://supascale.example.com/api/v1/projects/my-project/settings?category=database" \ -H "X-API-Key: your-api-key"
Response:
{
"success": true,
"data": {
"externalAccess": false,
"postgresVersion": "15",
"port": 5432
}
}
Enable External PostgreSQL Access
Allow direct connections to PostgreSQL from outside the Docker network:
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "database",
"settings": {
"externalAccess": true
}
}'
Security Warning: Enabling external access exposes your PostgreSQL port to the network. Ensure your firewall is properly configured and use strong database passwords. Only enable this if you need direct database connections from external tools or services.
Change PostgreSQL Version
Upgrade or downgrade PostgreSQL version:
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/settings \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"category": "database",
"settings": {
"postgresVersion": "17"
}
}'
Changing the PostgreSQL version requires a full project restart. Your data is preserved during the upgrade process.
Applying Changes
After modifying settings:
- Click Save Changes (UI) or make API call
- Restart the project for changes to take effect
# Via API curl -X POST https://supascale.example.com/api/v1/projects/my-project/stop \ -H "X-API-Key: your-api-key" curl -X POST https://supascale.example.com/api/v1/projects/my-project/start \ -H "X-API-Key: your-api-key"
Viewing Current Settings
Settings are returned with sensitive values masked:
curl https://supascale.example.com/api/v1/projects/my-project/settings \ -H "X-API-Key: your-api-key"
Response:
{
"storage": {
"fileSizeLimit": "50MB"
},
"smtp": {
"host": "smtp.sendgrid.net",
"port": 587,
"user": "apikey",
"password": "********",
"senderName": "My App",
"senderEmail": "[email protected]"
},
"auth": {
"siteUrl": "https://myapp.com",
"jwtExpiry": 3600
}
}
Best Practices
- Test SMTP before enabling email confirmation
- Use environment-specific settings for dev/staging/prod
- Document your configuration for team reference
- Backup settings before major changes