mirror of
https://github.com/umami-software/umami.git
synced 2026-02-09 15:17:23 +01:00
134 lines
4.4 KiB
Markdown
134 lines
4.4 KiB
Markdown
# 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.
|
|
|
|
**For Vercel deployments, you have two options:**
|
|
|
|
**Option A: Use pooler for direct connection (Recommended for Vercel)**
|
|
```
|
|
DIRECT_DATABASE_URL=postgresql://user:password@host.pooler.supabase.com:6543/postgres
|
|
```
|
|
Note: Same as DATABASE_URL but without the `?pgbouncer=true&connect_timeout=15` parameters
|
|
|
|
**Option B: Use true direct connection (requires Supabase port 5432 access)**
|
|
```
|
|
DIRECT_DATABASE_URL=postgresql://user:password@host.supabase.com:5432/postgres
|
|
```
|
|
|
|
**Important notes:**
|
|
- If port 5432 is not accessible from Vercel, use Option A
|
|
- Port 5432 may need to be enabled in Supabase dashboard under Settings > Database > Connection Pooling
|
|
|
|
### 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
|
|
```
|
|
|
|
### Optional: Skip Database Migrations
|
|
|
|
If your database is already set up with migrations applied, you can skip migrations during build:
|
|
```
|
|
SKIP_DB_MIGRATION=true
|
|
```
|
|
|
|
**When to use this:**
|
|
- Database is already migrated
|
|
- You're doing a rebuild/redeploy
|
|
- Port 5432 is not accessible and you don't need migrations
|
|
|
|
**When NOT to use this:**
|
|
- First deployment with a new database
|
|
- After pulling code with new migrations
|
|
|
|
## Vercel Configuration
|
|
|
|
The `vercel.json` file has been configured with:
|
|
- **Custom build command**: Uses the standard `npm run build` which includes database setup
|
|
- **Install command**: Uses `npm install --legacy-peer-deps` to handle React 19 peer dependency conflicts
|
|
|
|
Note: The `--legacy-peer-deps` flag is required because the project uses React 19, but some dependencies still expect React 18.
|
|
|
|
## 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
|