mirror of
https://github.com/marcogll/AnchorOS.git
synced 2026-03-15 21:24:35 +00:00
5.2 KiB
5.2 KiB
🚀 AnchorOS Deployment Guide
📋 Pre-requisitos
- VPS con Ubuntu/Debian 20.04+
- Docker y Docker Compose instalados
- Dominio apuntando a tu VPS
- Certificados SSL (Let's Encrypt recomendado)
🛠️ Configuración Inicial
1. Clonar y configurar
git clone https://github.com/your-repo/anchoros.git
cd anchoros
cp .env.example .env
# Editar .env con tus valores reales
2. Variables críticas
# Requeridas para funcionamiento básico
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxxxx
SUPABASE_SERVICE_ROLE_KEY=eyJxxxxx
RESEND_API_KEY=re_xxxxx
NEXT_PUBLIC_APP_URL=https://tu-dominio.com
# Formbricks (opcional - encuestas)
NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID=your-environment-id
NEXT_PUBLIC_FORMBRICKS_API_HOST=https://app.formbricks.com
# Optional: Redis para caching
REDIS_URL=redis://redis:6379
# Optional: Analytics
NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX
3. SSL Certificates
# Instalar Certbot
sudo apt install certbot
# Generar certificados
sudo certbot certonly --standalone -d tu-dominio.com
# Copiar a directorio ssl/
sudo mkdir ssl
sudo cp /etc/letsencrypt/live/tu-dominio.com/fullchain.pem ssl/
sudo cp /etc/letsencrypt/live/tu-dominio.com/privkey.pem ssl/
🚀 Deployment
Opción 1: Script Automático
./deploy.sh production
Opción 2: Manual
# Build e iniciar
docker-compose -f docker-compose.prod.yml up -d --build
# Verificar
curl http://localhost/health
📊 Monitoreo
Logs
# Todos los servicios
docker-compose -f docker-compose.prod.yml logs -f
# Servicio específico
docker-compose -f docker-compose.prod.yml logs -f anchoros
Recursos
# Uso de CPU/Memoria
docker stats
# Espacio en disco
df -h
Health Checks
# API health
curl https://tu-dominio.com/api/health
# Nginx status
curl -H "Host: tu-dominio.com" http://localhost/health
🔧 Mantenimiento
Updates
# Pull latest changes
git pull origin main
# Redeploy
./deploy.sh production
Backup
# Database backup (si usas PostgreSQL local)
docker exec anchoros_db pg_dump -U postgres anchoros > backup.sql
# Logs backup
docker-compose -f docker-compose.prod.yml logs > logs_backup.txt
SSL Renewal
# Renew certificates
sudo certbot renew
# Restart nginx
docker-compose -f docker-compose.prod.yml restart nginx
🚨 Troubleshooting
App no responde
# Verificar contenedores
docker ps
# Logs de la app
docker logs anchoros_app
# Reiniciar app
docker-compose -f docker-compose.prod.yml restart anchoros
Error 502 Bad Gateway
# Nginx no puede conectar con Next.js
docker logs anchoros_nginx
# Verificar que Next.js esté corriendo
curl http://localhost:3000
Alta carga de CPU
# Verificar procesos
docker stats
# Restart services
docker-compose -f docker-compose.prod.yml restart
📈 Optimizaciones de Performance
Nginx Caching
- Static files: 1 año cache
- API responses: No cache
- Rate limiting: 10 req/s
Next.js Optimizations
- Standalone build
- Gzip compression
- Image optimization
- Console removal en prod
Database
- Conexión pool
- Query optimization
- Redis caching (opcional)
📝 Formbricks Integration
Configuración de Encuestas
# Activar Formbricks para recolección de feedback
NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID=clxxxxxxxx
NEXT_PUBLIC_FORMBRICKS_API_HOST=https://app.formbricks.com
Webhooks
# Endpoints de webhook para formularios
# Test: https://flows.soul23.cloud/webhook-test/4YZ7RPfo1GT
# Prod: https://flows.soul23.cloud/webhook/4YZ7RPfo1GT
# Formularios que envían a webhooks:
# - contact (Contacto)
# - franchise (Franquicias)
# - membership (Membresías)
# Payload structure:
{
"form": "contact|franchise|membership",
"timestamp_utc": "ISO-8601",
"device_type": "mobile|desktop|unknown",
"...": "campos específicos del formulario"
}
Form Types y Campos
Contact (contacto)
{
"form": "contact",
"nombre": "string",
"email": "string",
"telefono": "string",
"motivo": "cita|membresia|franquicia|servicios|pago|resena|otro",
"mensaje": "string",
"timestamp_utc": "string",
"device_type": "string"
}
Franchise (franquicias)
{
"form": "franchise",
"nombre": "string",
"email": "string",
"telefono": "string",
"ciudad": "string",
"estado": "string",
"socios": "number",
"experiencia_sector": "string",
"experiencia_belleza": "boolean",
"mensaje": "string",
"timestamp_utc": "string",
"device_type": "string"
}
Membership (membresías)
{
"form": "membership",
"membership_id": "gold|black|vip",
"nombre": "string",
"email": "string",
"telefono": "string",
"mensaje": "string",
"timestamp_utc": "string",
"device_type": "string"
}
🔒 Seguridad
- SSL/TLS 1.2+
- Rate limiting
- Security headers
- No exposición de puertos internos
- Variables de entorno seguras
📞 Soporte
Para issues, revisar:
- Docker logs
- Network connectivity
- Environment variables
- SSL certificates
- Database connections