ALM-2 / backend /docs /README_POSTGRESQL.md
ACA050's picture
Upload 520 files
2ed8996 verified
|
Raw
History Blame Contribute Delete
3.14 kB
# PostgreSQL Setup for AegisLM
## 🐳 Option 1: Docker (Easiest)
### Step 1: Install Docker Desktop
1. Download Docker Desktop from https://www.docker.com/products/docker-desktop/
2. Install and start Docker Desktop
3. Make sure Docker is running (check system tray)
### Step 2: Start PostgreSQL
```bash
cd d:\Projects\ALM\backend
docker-compose up -d postgres
```
### Step 3: Verify Connection
```bash
docker-compose logs postgres
```
### Step 4: Run Setup Script
```bash
python setup_postgresql.py
```
## 🪟 Option 2: Windows Native Installation
### Step 1: Download PostgreSQL
1. Go to https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
2. Download PostgreSQL for Windows (version 15 or later)
3. Run the installer
### Step 2: Installation Settings
- Password: `password` (match .env file)
- Port: `5432`
- Username: `postgres`
- Database: `aegislm` (create after installation)
### Step 3: Start PostgreSQL Service
1. Open Windows Services
2. Find "postgresql-x64-15" (or similar version)
3. Right-click → Start
### Step 4: Create Database
Open Command Prompt and run:
```bash
psql -U postgres -c "CREATE DATABASE aegislm;"
```
### Step 5: Test Connection
```bash
psql -U postgres -d aegislm
```
## 🌐 Option 3: Cloud PostgreSQL (Production Ready)
### Neon (Recommended for Production)
1. Sign up at https://neon.tech/
2. Create new project
3. Get connection string
4. Update .env file:
```
DATABASE_URL="postgresql+asyncpg://user:password@ep-xxx.us-east-2.aws.neon.tech/aegislm?sslmode=require"
```
### AWS RDS
1. Go to AWS Console → RDS
2. Create PostgreSQL instance
3. Configure security group to allow your IP
4. Update connection string
### Railway
1. Sign up at https://railway.app/
2. Add PostgreSQL service
3. Get connection string
4. Update .env file
## 🔧 Configuration
### Update .env file
```env
# Database - PostgreSQL Production
DATABASE_URL="postgresql+asyncpg://postgres:password@localhost:5432/aegislm"
DATABASE_POOL_SIZE=10
DATABASE_MAX_OVERFLOW=20
```
### Test Connection
```bash
python setup_postgresql.py
```
## 🚨 Troubleshooting
### Connection Refused Error
1. Check if PostgreSQL is running
2. Verify port 5432 is available
3. Check firewall settings
4. Verify credentials in .env
### Docker Issues
1. Make sure Docker Desktop is running
2. Check if port 5432 is already in use
3. Try `docker system prune` to clean up
### Permission Issues
1. Run Command Prompt as Administrator
2. Check PostgreSQL service status
3. Verify user permissions
## ✅ Verification
After setup, run:
```bash
python setup_postgresql.py
```
You should see:
```
🎉 POSTGRESQL SETUP COMPLETE!
✅ PostgreSQL is ready for production!
✅ All database operations working!
✅ Health checks passing!
```
## 🔄 Migration from SQLite
If you have existing data in SQLite:
1. Export data from SQLite
2. Import to PostgreSQL
3. Update .env to use PostgreSQL
4. Run setup script
## 🚀 Production Deployment
For production:
1. Use cloud PostgreSQL (Neon/AWS/Railway)
2. Enable SSL
3. Use environment variables for credentials
4. Set up connection pooling
5. Configure backups