7.6 KiB
7.6 KiB
✅ Setup Complete - PostgreSQL Migration
🎉 What Was Done
Your QR Master application has been successfully migrated from Supabase to a local PostgreSQL database with Docker!
✅ Completed Tasks
-
Removed Supabase Dependencies
- ❌ Removed
DIRECT_URLfrom Prisma schema - ❌ Removed
DIRECT_URLfrom environment validation - ❌ Cleaned up all Supabase-specific configurations
- ❌ Removed
-
Created Docker Infrastructure
- ✅ Production Docker Compose (
docker-compose.yml) - ✅ Development Docker Compose (
docker-compose.dev.yml) - ✅ Optimized Dockerfile for Next.js
- ✅ PostgreSQL 16 Alpine with persistence
- ✅ Redis 7 Alpine with AOF persistence
- ✅ Adminer database UI (optional)
- ✅ Custom bridge network for services
- ✅ Production Docker Compose (
-
Database Setup
- ✅ PostgreSQL initialization script
- ✅ UUID and pg_trgm extensions
- ✅ Health checks for all services
- ✅ Volume persistence
-
Documentation
- ✅ Updated README.md
- ✅ Created DOCKER_SETUP.md (comprehensive guide)
- ✅ Created MIGRATION_FROM_SUPABASE.md
- ✅ Created docker/README.md
- ✅ Created CHANGELOG.md
- ✅ Created env.example template
-
Developer Tools
- ✅ Setup script for Linux/Mac (
scripts/setup.sh) - ✅ Setup script for Windows (
scripts/setup.ps1) - ✅ npm Docker scripts
- ✅ .dockerignore for optimization
- ✅ Setup script for Linux/Mac (
-
Environment Configuration
- ✅ Created env.example template
- ✅ Updated environment validation
- ✅ Simplified configuration
🚀 How to Get Started
Option 1: Quick Setup (Recommended)
Windows:
cd scripts
.\setup.ps1
Linux/Mac:
chmod +x scripts/setup.sh
./scripts/setup.sh
Option 2: Manual Setup
Development Mode (Database in Docker, App on Host)
# 1. Copy environment file
cp env.example .env
# 2. Edit .env and set NEXTAUTH_SECRET and IP_SALT
# Generate with: openssl rand -base64 32
# 3. Install dependencies
npm install
# 4. Start database services
npm run docker:dev
# 5. Run migrations
npm run db:migrate
# 6. Seed database
npm run db:seed
# 7. Start development server
npm run dev
Production Mode (Full Stack in Docker)
# 1. Copy and configure environment
cp env.example .env
# Edit .env with your settings
# 2. Build and start
npm run docker:prod
# 3. Run migrations
docker-compose exec web npx prisma migrate deploy
# 4. Access at http://localhost:3050
📍 Access Points
After setup, you can access:
- 🌐 Application: http://localhost:3050
- 🗄️ Database UI (Adminer): http://localhost:8080
- System: PostgreSQL
- Server: db
- Username: postgres
- Password: postgres
- Database: qrmaster
- 💾 PostgreSQL: localhost:5432
- 🔴 Redis: localhost:6379
📦 What's Included
Docker Services
| Service | Image | Port | Purpose |
|---|---|---|---|
| web | Next.js (custom) | 3050 | Application |
| db | postgres:16-alpine | 5432 | Database |
| redis | redis:7-alpine | 6379 | Cache |
| adminer | adminer:latest | 8080 | DB UI |
File Structure
QRMASTER/
├── docker/
│ ├── init-db.sh # PostgreSQL initialization
│ └── README.md # Docker commands
├── scripts/
│ ├── setup.sh # Quick setup (Linux/Mac)
│ └── setup.ps1 # Quick setup (Windows)
├── src/ # Application code
├── prisma/
│ └── schema.prisma # Updated schema (no directUrl)
├── docker-compose.yml # Production setup
├── docker-compose.dev.yml # Development setup
├── Dockerfile # Application container
├── env.example # Environment template
├── .dockerignore # Docker build optimization
├── DOCKER_SETUP.md # Complete Docker guide
├── MIGRATION_FROM_SUPABASE.md # Migration guide
├── CHANGELOG.md # What changed
└── README.md # Updated main docs
🛠️ Useful Commands
Development
npm run dev # Start dev server
npm run docker:dev # Start database only
npm run docker:dev:stop # Stop database
Database
npm run db:migrate # Run migrations
npm run db:seed # Seed database
npm run db:studio # Open Prisma Studio
npm run docker:db # PostgreSQL CLI
Docker
npm run docker:prod # Start all services
npm run docker:stop # Stop all services
npm run docker:logs # View logs
npm run docker:backup # Backup database
Management
docker-compose ps # Check status
docker-compose logs -f # Follow logs
docker-compose restart web # Restart app
docker-compose exec db psql -U postgres -d qrmaster # DB CLI
📚 Documentation
- README.md - Main documentation with quick start
- DOCKER_SETUP.md - Complete Docker guide with troubleshooting
- MIGRATION_FROM_SUPABASE.md - Migration guide from Supabase
- docker/README.md - Docker commands and operations
- CHANGELOG.md - What changed in this version
🔐 Security Checklist
Before deploying to production:
- Change PostgreSQL password in docker-compose.yml
- Set strong NEXTAUTH_SECRET (generate with
openssl rand -base64 32) - Set strong IP_SALT (generate with
openssl rand -base64 32) - Update NEXTAUTH_URL to your domain
- Enable HTTPS/SSL
- Set up firewall rules
- Configure automated backups
- Review and test all environment variables
🎯 Next Steps
-
Test the Application
npm run docker:dev npm run dev # Visit http://localhost:3050 -
Review Configuration
- Check
.envfile - Verify database connection
- Test authentication
- Check
-
Set Up Backups
# Manual backup npm run docker:backup # Or create automated backup script # See DOCKER_SETUP.md for examples -
Customize
- Update database passwords
- Configure OAuth providers
- Adjust resource limits
- Set up monitoring
🆘 Need Help?
Common Issues
Database won't start:
docker-compose logs db
docker-compose restart db
Port already in use:
# Windows
netstat -ano | findstr :3050
# Change port in docker-compose.yml if needed
Prisma errors:
npm run db:generate
npm run db:migrate
Resources
- DOCKER_SETUP.md - Comprehensive troubleshooting
- docker/README.md - Common Docker commands
- MIGRATION_FROM_SUPABASE.md - Migration help
Support
- Check the documentation files
- Review logs:
docker-compose logs -f - Check service health:
docker-compose ps - Open an issue on GitHub
✨ Features
Your application now has:
- ✅ Self-hosted PostgreSQL - Full control over your data
- ✅ Redis caching - Improved performance
- ✅ Docker Compose - Easy deployment
- ✅ Health checks - Automatic monitoring
- ✅ Data persistence - Volumes for data safety
- ✅ Database UI - Adminer for easy management
- ✅ Development mode - Run only what you need
- ✅ Production ready - Optimized Docker builds
- ✅ Complete docs - Multiple guides and references
🎊 Success!
You're now ready to develop and deploy QR Master with your own PostgreSQL database!
Demo Credentials:
- Email: demo@qrmaster.com
- Password: demo123
Happy coding! 🚀
Need more help? Check the documentation or run the setup scripts.