# Deployment Guide ## Overview Production runs on a **Mac Mini** accessible via Cloudflare Tunnel at **mana.how**. ``` Push to main → CI builds Docker images → GHCR → Watchtower pulls & restarts (automatic) (automatic, ~5 min) ``` **Watchtower** automatically checks for new Docker images every 5 minutes and updates running containers. ## Quick Reference | Environment | Location | Domain | |-------------|----------|--------| | Local Dev | Your machine | localhost | | Production | Mac Mini | mana.how | ## CI/CD Pipeline ### What happens automatically 1. **Push to main** triggers CI workflow 2. CI detects changed services 3. Docker images are built for changed services 4. Images are pushed to GitHub Container Registry (ghcr.io) ### What happens automatically (Watchtower) Watchtower runs as a Docker container and: 1. Checks GHCR for new images every 5 minutes 2. Pulls updated images 3. Recreates containers with new images 4. Cleans up old images No manual action needed for regular deployments. ## Manual Deployment (if needed) For immediate deployment without waiting for Watchtower: ```bash ssh mana-server "cd ~/projects/manacore-monorepo && ./scripts/mac-mini/deploy.sh" ``` ## Monitoring ```bash # Check service status ssh mana-server "./scripts/mac-mini/status.sh" # View logs ssh mana-server "docker logs -f manacore-chat-backend" # Health check ssh mana-server "./scripts/mac-mini/health-check.sh" ``` ## Services & URLs | Service | URL | Container | |---------|-----|-----------| | Dashboard | https://mana.how | manacore-web | | Auth API | https://auth.mana.how | mana-core-auth | | Chat | https://chat.mana.how | chat-web | | Chat API | https://chat-api.mana.how | chat-backend | | Todo | https://todo.mana.how | todo-web | | Todo API | https://todo-api.mana.how | todo-backend | | Calendar | https://calendar.mana.how | calendar-web | | Calendar API | https://calendar-api.mana.how | calendar-backend | | Clock | https://clock.mana.how | clock-web | | Clock API | https://clock-api.mana.how | clock-backend | | Contacts | https://contacts.mana.how | contacts-web | | Contacts API | https://contacts-api.mana.how | contacts-backend | ## Rollback ```bash ssh mana-server cd ~/projects/manacore-monorepo # Rollback to specific image tag docker compose -f docker-compose.macmini.yml pull : docker compose -f docker-compose.macmini.yml up -d ``` ## Detailed Documentation - **[MAC_MINI_SERVER.md](MAC_MINI_SERVER.md)** - Complete server setup, autostart, health checks - **[LOCAL_DEVELOPMENT.md](LOCAL_DEVELOPMENT.md)** - Local development setup