Add deployment documentation and scripts

This commit is contained in:
austindebest
2026-04-20 00:03:32 +01:00
parent d62468adf9
commit 0665a66288
3 changed files with 451 additions and 0 deletions

205
DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,205 @@
# Deployment Guide - SDI SaaS Platform
## Prerequisites on Dev Server
The dev server (102.69.243.165) needs:
- Docker & Docker Compose
- Node.js 20+
- pnpm 8+
- Git (optional)
## Deployment Options
### Option 1: Automated Deployment Script (Recommended)
```bash
# Make script executable
chmod +x deploy-dev.sh
# Run deployment (will prompt for SSH password)
./deploy-dev.sh
```
The script will:
1. Create deployment package
2. Upload to server via SCP
3. Extract and install dependencies
4. Set up Docker containers
5. Run database migrations
6. Seed demo data
7. Start all services
### Option 2: Manual Deployment via Git
If Git authentication works:
```bash
# On dev server
ssh root@102.69.243.165
# Clone repository
cd /var/www
git clone https://git.votcloud.com/austindebest/sdi.git sdi-saas
cd sdi-saas
# Install dependencies
pnpm install
# Set up environment
cp apps/api/.env.example apps/api/.env
cp apps/worker/.env.example apps/worker/.env
cp packages/database/.env.example packages/database/.env
# Update DATABASE_URL in .env files to use 'postgres' instead of 'localhost'
# Generate Prisma client
cd packages/database
pnpm db:generate
# Start infrastructure
cd ../..
docker-compose up -d
# Wait for database
sleep 10
# Run migrations
cd packages/database
pnpm db:migrate
# Seed data
pnpm db:seed
# Services should now be running
```
### Option 3: Manual SCP Upload
```bash
# Create archive locally
tar -czf sdi-deploy.tar.gz \
--exclude='node_modules' \
--exclude='.git' \
--exclude='dist' \
.
# Upload to server
scp sdi-deploy.tar.gz root@102.69.243.165:/tmp/
# SSH to server and extract
ssh root@102.69.243.165
mkdir -p /var/www/sdi-saas
cd /var/www/sdi-saas
tar -xzf /tmp/sdi-deploy.tar.gz
# Follow manual deployment steps above
```
## Accessing the Application
Once deployed:
- **API**: http://102.69.243.165:3000
- **API Documentation**: http://102.69.243.165:3000/api/docs
- **Database Studio**: SSH tunnel required
## Managing Services
```bash
# SSH to server
ssh root@102.69.243.165
# View logs
cd /var/www/sdi-saas
docker-compose logs -f
# Restart services
docker-compose restart
# Stop services
docker-compose down
# Rebuild and restart
docker-compose up -d --build
```
## Troubleshooting
### Database Connection Issues
```bash
# Check if PostgreSQL is running
docker-compose ps
# Check database logs
docker-compose logs postgres
# Restart database
docker-compose restart postgres
```
### API Not Starting
```bash
# Check API logs
docker-compose logs api
# Check environment variables
cat apps/api/.env
# Rebuild API container
docker-compose up -d --build api
```
### Worker Not Processing Jobs
```bash
# Check worker logs
docker-compose logs worker
# Check Redis connection
docker-compose logs redis
# Restart worker
docker-compose restart worker
```
## Updating the Application
```bash
# SSH to server
ssh root@102.69.243.165
cd /var/www/sdi-saas
# Pull latest changes (if using Git)
git pull
# Or upload new archive and extract
# Reinstall dependencies
pnpm install
# Regenerate Prisma client
cd packages/database
pnpm db:generate
# Run new migrations
pnpm db:migrate
# Rebuild and restart
cd ../..
docker-compose up -d --build
```
## Security Notes
- Change default passwords in production
- Set up firewall rules (UFW)
- Use SSL/TLS certificates (Let's Encrypt)
- Implement proper authentication
- Set up monitoring and logging
- Regular backups of database
## Next Steps After Deployment
1. Verify API is accessible
2. Test API endpoints via Swagger docs
3. Check database has seed data
4. Monitor logs for errors
5. Begin Phase 1 development