- Fork elmeg-demo codebase for multi-band support - Add data importer infrastructure with base class - Create band-specific importers: - phish.py: Phish.net API v5 - grateful_dead.py: Grateful Stats API - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm) - Add spec-kit configuration for Gemini - Update README with supported bands and architecture
73 lines
1.9 KiB
Markdown
73 lines
1.9 KiB
Markdown
---
|
|
description: how to deploy elmeg changes safely
|
|
---
|
|
|
|
# Elmeg Safe Deployment
|
|
|
|
## CRITICAL: Never wipe the database
|
|
|
|
When deploying changes to elmeg, **ONLY rebuild the backend and frontend containers**. The database must NEVER be rebuilt or recreated.
|
|
|
|
## Safe deployment command
|
|
|
|
### Production (`elmeg.xyz`) - tangible-aacorn
|
|
|
|
```bash
|
|
# turbo
|
|
ssh tangible-aacorn "cd /srv/containers/elmeg-demo && git pull && docker compose up -d --build --no-deps backend frontend"
|
|
```
|
|
|
|
### Staging (`elmeg.runfoo.run`) - nexus-vector
|
|
|
|
```bash
|
|
# turbo
|
|
ssh nexus-vector "cd /srv/containers/elmeg-demo && git pull && docker compose up -d --build --no-deps backend frontend"
|
|
```
|
|
|
|
## DANGEROUS - Do NOT use these commands
|
|
|
|
```bash
|
|
# These will WIPE THE DATABASE:
|
|
docker compose up -d --build # Rebuilds ALL containers including db
|
|
docker compose down && docker compose up -d # Recreates all containers
|
|
docker compose up -d --force-recreate # Force recreates all
|
|
```
|
|
|
|
## Backup before any deployment (optional but recommended)
|
|
|
|
```bash
|
|
# turbo
|
|
ssh nexus-vector "docker exec elmeg-demo-db-1 pg_dump -U elmeg elmeg > /srv/containers/elmeg-demo/backup-\$(date +%Y%m%d-%H%M%S).sql"
|
|
```
|
|
|
|
## Restore from backup if needed
|
|
|
|
```bash
|
|
ssh nexus-vector "cat /srv/containers/elmeg-demo/backup-YYYYMMDD-HHMMSS.sql | docker exec -i elmeg-demo-db-1 psql -U elmeg elmeg"
|
|
```
|
|
|
|
## Data Import (Recovery)
|
|
|
|
If the database is wiped or fresh, use the Smart Import script to populate shows and setlists. This script is memory-optimized and checks for infinite loops.
|
|
|
|
### Production (tangible-aacorn)
|
|
|
|
```bash
|
|
ssh tangible-aacorn "docker exec elmeg-backend-1 python import_setlists_smart.py"
|
|
```
|
|
|
|
### Staging (nexus-vector)
|
|
|
|
```bash
|
|
ssh nexus-vector "docker exec elmeg-demo-backend-1 python import_setlists_smart.py"
|
|
```
|
|
|
|
## Git Configuration (Production)
|
|
|
|
To ensure `git pull` works correctly on production:
|
|
|
|
```bash
|
|
# On nexus-vector
|
|
cd /srv/containers/elmeg-demo
|
|
git branch --set-upstream-to=origin/main main
|
|
```
|