Project Services
Configure Supabase services for your projects.
Each Supabase project consists of multiple services. Learn what each service does and how to configure them.
Core Services
These services are always enabled and required for Supabase to function:
PostgreSQL (db)
The main database powering your project.
| Setting | Description |
|---|---|
| Port | Default 5432 (auto-assigned) |
| Version | PostgreSQL 15 |
| Extensions | pgvector, pgjwt, and more pre-installed |
PostgREST (rest)
Automatically generates a REST API from your database schema.
| Setting | Description |
|---|---|
| Port | Exposed through Kong |
| Schema | public, storage, graphql_public |
| Anonymous Role | Controlled by RLS policies |
GoTrue (auth)
Handles user authentication and authorization.
| Setting | Description |
|---|---|
| JWT Expiry | Default 3600 seconds |
| Providers | Email, Phone, OAuth |
| External Providers | Configurable via settings |
Kong (kong)
API gateway that routes requests to services.
| Setting | Description |
|---|---|
| Port | 8000 (HTTP), 8443 (HTTPS) |
| Routes | /rest, /auth, /storage, etc. |
Studio (studio)
Web-based database management interface.
| Setting | Description |
|---|---|
| Port | Default 3000 (auto-assigned) |
| Features | Table editor, SQL editor, Auth UI |
Meta (meta)
Provides metadata about the database.
| Setting | Description |
|---|---|
| Port | Internal only |
| Purpose | Schema introspection |
Optional Services
Enable these based on your requirements:
Realtime (realtime)
WebSocket server for real-time subscriptions.
Enable when:
- Building collaborative features
- Need live data updates
- Implementing presence features
// Client usage
const channel = supabase
.channel('room1')
.on('postgres_changes', { event: '*', schema: 'public' }, payload => {
console.log('Change received:', payload)
})
.subscribe()
Storage (storage)
File storage with CDN-like features.
Enable when:
- Storing user uploads
- Managing images and documents
- Need signed URLs
// Client usage
const { data, error } = await supabase.storage
.from('avatars')
.upload('public/avatar.png', file)
Edge Functions (functions)
Serverless TypeScript/JavaScript functions.
Enable when:
- Custom server-side logic
- Third-party API integrations
- Complex business rules
// Deploy function supabase functions deploy my-function
PgBouncer (pooler)
Connection pooling for high-traffic applications.
Enable when:
- Many concurrent connections
- Serverless deployments
- Connection limits reached
Analytics (analytics)
Usage analytics and monitoring.
Enable when:
- Want to track API usage
- Need performance metrics
- Debugging slow queries
Imgproxy (imgproxy)
On-the-fly image transformation.
Enable when:
- Need image resizing
- Want format conversion
- Optimizing image delivery
Inbucket (inbucket)
Local email testing server.
Enable when:
- Development environment
- Testing email flows
- No SMTP configured
Inbucket is for development only. Never enable in production.
Managing Services
View Enabled Services
Via Web UI
- Click on a project
- Go to Services tab
- See enabled/disabled status
Via API
curl https://supascale.example.com/api/v1/projects/my-project/services \ -H "X-API-Key: your-api-key"
Response:
{
"services": ["db", "rest", "auth", "kong", "studio", "meta", "realtime", "storage"],
"enabledServices": {
"db": true,
"rest": true,
"auth": true,
"kong": true,
"studio": true,
"meta": true,
"realtime": true,
"storage": true,
"functions": false,
"pooler": false,
"analytics": false,
"imgproxy": false,
"inbucket": false
}
}
Enable/Disable Services
Via Web UI
- Click on a project
- Go to Services tab
- Toggle services on/off
- Click Save Changes
- Restart the project
Via API
curl -X PUT https://supascale.example.com/api/v1/projects/my-project/services \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"services": ["db", "rest", "auth", "kong", "studio", "meta", "realtime", "storage", "functions"]
}'
Service changes require a project restart to take effect.
Service Dependencies
Some services depend on others:
| Service | Requires |
|---|---|
| All | db, meta |
| rest | kong |
| auth | kong |
| storage | kong |
| functions | kong |
| realtime | db |
Supascale automatically enables dependencies when you select a service.
Resource Usage by Service
| Service | Memory | CPU |
|---|---|---|
| db | 256MB+ | Low-Medium |
| rest | 64MB | Low |
| auth | 64MB | Low |
| kong | 128MB | Low |
| studio | 128MB | Low |
| realtime | 128MB | Medium |
| storage | 64MB | Low |
| functions | 256MB+ | Variable |
| pooler | 64MB | Low |
| analytics | 128MB | Low |
| imgproxy | 128MB | Medium |
| inbucket | 32MB | Low |
Best Practices
Development Environment
Enable all services for full functionality:
- All core services
- Realtime, Storage, Functions
- Inbucket for email testing
Production Environment
Enable only what you need:
- Core services
- Services your app uses
- PgBouncer for high traffic
Staging Environment
Mirror production configuration:
- Same services as production
- Inbucket instead of real SMTP