mirror of
https://github.com/umami-software/umami.git
synced 2026-02-04 20:57:17 +01:00
Fix Vercel deployment hanging issue
Added directUrl configuration to Prisma schema and created vercel.json with extended timeout settings to resolve deployment hangs after database check. Includes comprehensive deployment guide for Supabase setup.
This commit is contained in:
parent
03c892aac0
commit
81ee9bdb46
3 changed files with 118 additions and 0 deletions
109
VERCEL_DEPLOYMENT.md
Normal file
109
VERCEL_DEPLOYMENT.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# Vercel Deployment Guide for Umami
|
||||
|
||||
This guide will help you successfully deploy Umami on Vercel, especially if you're experiencing the "Database version check successful" hang issue.
|
||||
|
||||
## Required Environment Variables
|
||||
|
||||
### For Supabase Users
|
||||
|
||||
You need to configure **TWO** database URLs in your Vercel environment variables:
|
||||
|
||||
#### 1. DATABASE_URL (Connection Pooler)
|
||||
This URL uses pgbouncer for connection pooling.
|
||||
|
||||
**Format:**
|
||||
```
|
||||
DATABASE_URL=postgresql://user:password@host.pooler.supabase.com:6543/postgres?pgbouncer=true&connect_timeout=15
|
||||
```
|
||||
|
||||
**Important notes:**
|
||||
- Use port `6543` (pgbouncer port)
|
||||
- Include `?pgbouncer=true&connect_timeout=15` parameters
|
||||
- Host should end with `.pooler.supabase.com`
|
||||
|
||||
#### 2. DIRECT_DATABASE_URL (Direct Connection)
|
||||
This URL connects directly to the database, bypassing pgbouncer.
|
||||
|
||||
**Format:**
|
||||
```
|
||||
DIRECT_DATABASE_URL=postgresql://user:password@host.supabase.com:5432/postgres
|
||||
```
|
||||
|
||||
**Important notes:**
|
||||
- Use port `5432` (direct postgres port)
|
||||
- Do **NOT** include pgbouncer parameters
|
||||
- Host should end with `.supabase.com` (without `.pooler`)
|
||||
|
||||
### For Other PostgreSQL Providers
|
||||
|
||||
If you're not using Supabase, you still need both environment variables:
|
||||
|
||||
```
|
||||
DATABASE_URL=postgresql://username:password@host:port/database
|
||||
DIRECT_DATABASE_URL=postgresql://username:password@host:port/database
|
||||
```
|
||||
|
||||
For non-pooled connections, both can be the same URL.
|
||||
|
||||
## Additional Environment Variables
|
||||
|
||||
Make sure you also have:
|
||||
```
|
||||
APP_SECRET=your-random-secret-key
|
||||
```
|
||||
|
||||
## Vercel Configuration
|
||||
|
||||
The `vercel.json` file has been configured with:
|
||||
- **Function timeout**: 300 seconds (5 minutes) to prevent build timeouts
|
||||
- **Custom build command**: Ensures database migrations run before the build
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Still Hanging?
|
||||
|
||||
1. **Check Database Connectivity**: Ensure your database is accessible from Vercel's network
|
||||
2. **Verify Environment Variables**: Double-check both `DATABASE_URL` and `DIRECT_DATABASE_URL` are set correctly
|
||||
3. **Check Password Encoding**: Special characters in passwords may need URL encoding
|
||||
4. **Review Vercel Logs**: Look for errors after the "Database version check successful" message
|
||||
|
||||
### Migration Issues
|
||||
|
||||
If you have pending migrations that are causing issues, run locally:
|
||||
|
||||
```bash
|
||||
npx prisma migrate resolve --applied "migration_name"
|
||||
npx prisma migrate deploy
|
||||
```
|
||||
|
||||
Then redeploy to Vercel.
|
||||
|
||||
### Common Mistakes
|
||||
|
||||
- ❌ Using the same port (6543) for both URLs
|
||||
- ❌ Missing pgbouncer parameters on DATABASE_URL
|
||||
- ❌ Including pgbouncer parameters on DIRECT_DATABASE_URL
|
||||
- ❌ Not URL-encoding special characters in passwords
|
||||
- ❌ Using `.pooler.supabase.com` for DIRECT_DATABASE_URL
|
||||
|
||||
### Port Reference for Supabase
|
||||
|
||||
| Connection Type | Port | Host Pattern | URL Parameter |
|
||||
|----------------|------|--------------|---------------|
|
||||
| Pooled (DATABASE_URL) | 6543 | `*.pooler.supabase.com` | `?pgbouncer=true&connect_timeout=15` |
|
||||
| Direct (DIRECT_DATABASE_URL) | 5432 | `*.supabase.com` | None |
|
||||
|
||||
## Deployment Steps
|
||||
|
||||
1. Set up both environment variables in Vercel dashboard
|
||||
2. Push your code changes (including the updated `schema.prisma` and `vercel.json`)
|
||||
3. Trigger a new deployment
|
||||
4. Monitor the build logs
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you're still experiencing issues:
|
||||
- Check Vercel's deployment logs for specific errors
|
||||
- Verify your database is accepting connections
|
||||
- Ensure your database user has the correct permissions
|
||||
- Try connecting to your database using a PostgreSQL client to verify credentials
|
||||
|
|
@ -7,6 +7,7 @@ generator client {
|
|||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
directUrl = env("DIRECT_DATABASE_URL")
|
||||
relationMode = "prisma"
|
||||
}
|
||||
|
||||
|
|
|
|||
8
vercel.json
Normal file
8
vercel.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"functions": {
|
||||
"api/**/*.js": {
|
||||
"maxDuration": 300
|
||||
}
|
||||
},
|
||||
"buildCommand": "npm run build-db && npm run build"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue