diff --git a/COOLIFY_DEPLOYMENT_GUIDE.md b/COOLIFY_DEPLOYMENT_GUIDE.md new file mode 100644 index 0000000..d251d67 --- /dev/null +++ b/COOLIFY_DEPLOYMENT_GUIDE.md @@ -0,0 +1,108 @@ +# Coolify Deployment Guide - "Quick Fix" Method + +## Environment Variables (Add in Coolify UI) + +``` +ADMIN_EMAIL=admin@sparkplatform.com +ADMIN_PASSWORD=SecurePass2024!Change +DB_USER=sparkuser +DB_PASSWORD=DbPass2024!Change +DB_DATABASE=directus +KEY=nGs2S6Ue/tl03SNao1BIkXPxQtoEIZoUs+roKurD3UlSK8x9XrjyKySWf7tr0ABPkH7SB9wEzYnCDEX4ycB01Q== +SECRET=bVu+i1Yqp6aoxpe/o0ySfeE4GSAQCdlitOVCBZklQFcayXPQ1Nwc5jhLUjjrSIJsI1CH6UyRMsLo/fVSIf997w== +DIRECTUS_ADMIN_TOKEN= +``` + +## Deployment Steps + +1. **In Coolify:** Create new Docker Compose deployment +2. **Paste the docker-compose.yaml** from this repo +3. **Add environment variables** (above) +4. **CRUCIAL:** After saving, go to **Service Configuration**: + - For `directus` service: Set domain to `spark.jumpstartscaling.com` + - For `frontend` service: Set domain to `launch.jumpstartscaling.com` +5. **Deploy!** + +## Login + +- URL: https://spark.jumpstartscaling.com +- Email: `admin@sparkplatform.com` +- Password: `SecurePass2024!Change` + +--- + +# "Pro" Method (Recommended for Production) + +## Why Split Services? + +- ✅ Automated database backups to S3/R2 +- ✅ Independent scaling +- ✅ Data persists even if you delete the app +- ✅ One-click version upgrades + +## Architecture + +1. **PostgreSQL** (Coolify Managed Database) +2. **Redis** (Coolify Managed Database) +3. **Directus** (Docker Service) +4. **Frontend** (Public Repository) + +## Setup Steps + +### 1. Create Databases + +**PostgreSQL:** +- Coolify → Add Resource → PostgreSQL +- After creation: Settings → Change image to `postgis/postgis:16-3.4-alpine` +- Note the internal URL (e.g., `tcp://uuid:5432`) + +**Redis:** +- Coolify → Add Resource → Redis +- Note the internal URL (e.g., `tcp://uuid:6379`) + +### 2. Deploy Directus + +- Add Resource → Docker-based +- **Environment Variables:** + ``` + KEY=nGs2S6Ue/tl03SNao1BIkXPxQtoEIZoUs+roKurD3UlSK8x9XrjyKySWf7tr0ABPkH7SB9wEzYnCDEX4ycB01Q== + SECRET=bVu+i1Yqp6aoxpe/o0ySfeE4GSAQCdlitOVCBZklQFcayXPQ1Nwc5jhLUjjrSIJsI1CH6UyRMsLo/fVSIf997w== + ADMIN_EMAIL=admin@sparkplatform.com + ADMIN_PASSWORD=SecurePass2024!Change + DB_CLIENT=postgres + DB_HOST= + DB_PORT=5432 + DB_DATABASE=directus + DB_USER= + DB_PASSWORD= + PUBLIC_URL=https://spark.jumpstartscaling.com + CORS_ENABLED=true + CORS_ORIGIN=https://launch.jumpstartscaling.com + ``` +- **Domain:** `spark.jumpstartscaling.com` + +### 3. Deploy Frontend + +- Add Resource → Public Repository +- Point to: `https://gitthis.jumpstartscaling.com/gatekeeper/net.git` +- **Build Pack:** Nixpacks or Dockerfile +- **Build Environment Variables:** + ``` + PUBLIC_DIRECTUS_URL=https://spark.jumpstartscaling.com + PUBLIC_PLATFORM_DOMAIN=launch.jumpstartscaling.com + ``` +- **Domain:** `launch.jumpstartscaling.com` + +## Traffic Flow + +``` +User Browser → launch.jumpstartscaling.com (Frontend) + → spark.jumpstartscaling.com (Directus API) + +Directus → tcp://postgres-uuid:5432 (Internal) + → tcp://redis-uuid:6379 (Internal) +``` + +## Next Steps + +Would you like me to help migrate your existing data from the docker-compose volumes to Coolify Managed Databases? diff --git a/docker-compose.yaml b/docker-compose.yaml index 938679b..1ee9a03 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,7 +1,7 @@ services: postgresql: image: 'postgis/postgis:16-3.4-alpine' - platform: linux/amd64 + restart: always volumes: - 'postgres-data:/var/lib/postgresql/data' environment: @@ -9,28 +9,26 @@ services: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_DATABASE} healthcheck: - test: ['CMD-SHELL', 'pg_isready -U ${DB_USER} -d ${DB_DATABASE}'] + test: [ 'CMD-SHELL', 'pg_isready -U ${DB_USER} -d ${DB_DATABASE}' ] interval: 10s timeout: 5s retries: 5 - networks: - - default redis: image: 'redis:7-alpine' command: 'redis-server --appendonly yes' + restart: always volumes: - 'redis-data:/data' healthcheck: - test: ['CMD', 'redis-cli', 'ping'] + test: [ 'CMD', 'redis-cli', 'ping' ] interval: 10s timeout: 5s retries: 5 - networks: - - default directus: image: 'directus/directus:11' + restart: always volumes: - 'directus-uploads:/directus/uploads' - 'directus-extensions:/directus/extensions' @@ -51,15 +49,8 @@ services: CORS_ENABLED: 'true' CORS_ORIGIN: 'https://launch.jumpstartscaling.com,http://localhost:4321' PUBLIC_URL: 'https://spark.jumpstartscaling.com' - labels: - - 'traefik.enable=true' - - 'traefik.http.routers.directus.rule=Host(`spark.jumpstartscaling.com`)' - - 'traefik.http.routers.directus.entrypoints=https' - - 'traefik.http.routers.directus.tls.certresolver=letsencrypt' - - 'traefik.http.services.directus.loadbalancer.server.port=8055' - - 'traefik.docker.network=coolify' healthcheck: - test: ['CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:8055/server/health'] + test: [ 'CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:8055/server/health' ] interval: 30s timeout: 10s retries: 3 @@ -69,39 +60,21 @@ services: condition: service_healthy redis: condition: service_healthy - networks: - - coolify - - default frontend: build: context: ./frontend dockerfile: Dockerfile + restart: always environment: PUBLIC_DIRECTUS_URL: 'https://spark.jumpstartscaling.com' DIRECTUS_ADMIN_TOKEN: ${DIRECTUS_ADMIN_TOKEN} PUBLIC_PLATFORM_DOMAIN: 'launch.jumpstartscaling.com' - labels: - - 'traefik.enable=true' - - 'traefik.http.routers.frontend.rule=Host(`launch.jumpstartscaling.com`)' - - 'traefik.http.routers.frontend.entrypoints=https' - - 'traefik.http.routers.frontend.tls.certresolver=letsencrypt' - - 'traefik.http.services.frontend.loadbalancer.server.port=4321' - - 'traefik.docker.network=coolify' depends_on: - directus - networks: - - coolify - - default volumes: postgres-data: redis-data: directus-uploads: directus-extensions: - -networks: - coolify: - external: true - default: - driver: bridge