Files
AnchorOS/docs/DOMAIN_CONFIGURATION.md
Marco Gallegos 133b4f6c42 docs: Actualizar documentación del proyecto
- Actualizar README.md con estado actual del proyecto
- Agregar sección de anchor23.mx frontend institucional
- Actualizar estructura de rutas y carpetas
- Actualizar fase actual (95% Fase 1, 60% Fase 2)
- Crear documento DOMAIN_CONFIGURATION.md con guía de dominios
- Crear documento ANCHOR23_FRONTEND.md con detalles técnicos
- Agregar referencias cruzadas en README

Completados recientes:
 Frontend institucional anchor23.mx (todas las páginas)
 Sistema de disponibilidad completo
 API de reservas para clientes
 HQ Dashboard con calendario multi-columna
2026-01-16 15:51:53 -06:00

7.4 KiB

Configuración de Dominios - Anchor:23

Arquitectura de Dominios

El proyecto SalonOS está diseñado para funcionar con múltiples subdominios, cada uno con una función específica:

Subdominio Función Estado URL de ejemplo
anchor23.mx Frontend institucional (landing page + páginas informativas) Completado https://anchor23.mx
booking.anchor23.mx The Boutique - Frontend de reservas Pendiente https://booking.anchor23.mx
kiosk.anchor23.mx The Kiosk - Sistema de autoservicio táctil Completado https://kiosk.anchor23.mx/{location-id}

Configuración en Next.js

1. Configuración DNS

Registros DNS Requeridos

En tu proveedor de DNS (ej. Cloudflare, GoDaddy, Namecheap):

# Registros A (o CNAME)
anchor23.mx          → A record → IP del servidor
booking.anchor23.mx   → CNAME → anchor23.mx
kiosk.anchor23.mx     → CNAME → anchor23.mx

# Registros wildcard (opcional, para subdominios futuros)
*.anchor23.mx         → CNAME → anchor23.mx

2. Configuración en Vercel (o VPS)

Si despliegas en Vercel:

  1. Agregar dominios en Settings → Domains

  2. Configurar subdominios:

    • anchor23.mx como dominio principal
    • booking.anchor23.mx como dominio adicional
    • kiosk.anchor23.mx como dominio adicional
  3. Vercel manejará automáticamente la configuración SSL

3. Configuración en VPS (Nginx + Next.js)

Si despliegas en VPS propio:

# /etc/nginx/sites-available/anchor23
server {
    listen 80;
    server_name anchor23.mx booking.anchor23.mx kiosk.anchor23.mx;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

# Redirección HTTP a HTTPS
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name anchor23.mx booking.anchor23.mx kiosk.anchor23.mx;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Rutas por Subdominio

anchor23.mx (Frontend Institucional)

Rutas disponibles:

  • / - Landing page
  • /servicios - Página de servicios
  • /historia - Historia y filosofía
  • /contacto - Formulario de contacto
  • /franchises - Información de franquicias
  • /membresias - Membresías exclusivas
  • /privacy-policy - Política de privacidad
  • /legal - Términos y condiciones

booking.anchor23.mx (The Boutique) - Pendiente

Rutas planificadas:

  • / - Selección de servicio y calendario
  • /reservar - Flujo de reserva paso a paso
  • /mis-citas - Historial de citas del cliente
  • /perfil - Perfil del cliente
  • /login - Autenticación de clientes

kiosk.anchor23.mx (The Kiosk)

Rutas disponibles:

  • /[locationId] - Pantalla principal del kiosko
  • /api/kiosk/authenticate - Autenticación del dispositivo
  • /api/kiosk/bookings - Gestión de reservas
  • /api/kiosk/walkin - Reservas walk-in
  • /api/kiosk/bookings/[shortId]/confirm - Confirmación de citas
  • /api/kiosk/resources/available - Recursos disponibles

Configuración de Environment Variables

Cada subdominio puede requerir variables de entorno específicas:

# anchor23.mx (compartido)
NEXT_PUBLIC_SITE_URL=https://anchor23.mx

# booking.anchor23.mx (pendiente)
NEXT_PUBLIC_BOOKING_URL=https://booking.anchor23.mx

# kiosk.anchor23.mx
NEXT_PUBLIC_KIOSK_URL=https://kiosk.anchor23.mx
NEXT_PUBLIC_KIOSK_API_KEY=tu_api_key_de_64_caracteres

Enlaces Cruzados

Desde anchor23.mx

// CTA en landing page
<a href="https://booking.anchor23.mx">Solicitar Cita</a>

// Enlace a kiosko (solo visible en ubicación física)
<a href="https://kiosk.anchor23.mx/{location-id}">Kiosko</a>

Desde booking.anchor23.mx

// Enlace a información de servicios
<a href="https://anchor23.mx/servicios">Más información</a>

// Enlace a política de privacidad
<a href="https://anchor23.mx/privacy-policy">Privacidad</a>

Desde kiosk.anchor23.mx

// El kiosko es autónomo, no tiene enlaces externos
// Solo comunica con la API del kiosko

Testing de Subdominios

Local con /etc/hosts

Para probar localmente:

# /etc/hosts (Linux/Mac) o C:\Windows\System32\drivers\etc\hosts (Windows)
127.0.0.1  anchor23.mx
127.0.0.1  booking.anchor23.mx
127.0.0.1  kiosk.anchor23.mx

Luego accede a:

  • http://anchor23.mx:3000
  • http://booking.anchor23.mx:3000
  • http://kiosk.anchor23.mx:3000/location-id

Con ngrok (testing rápido)

# Para anchor23.mx
ngrok http 3000 --subdomain=anchor23-mx

# Para booking.anchor23.mx
ngrok http 3000 --subdomain=booking-anchor23-mx

# Para kiosk.anchor23.mx
ngrok http 3000 --subdomain=kiosk-anchor23-mx

Seguridad Considerations

HTTPS Obligatorio

Todos los dominios deben usar HTTPS:

  • Certificado SSL automático (Vercel, Netlify, Cloudflare)
  • Let's Encrypt (VPS con Certbot)
  • Compra de certificado comercial

CORS Configuration

En next.config.js:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          { key: 'Access-Control-Allow-Origin', value: '*' },
          { key: 'Access-Control-Allow-Methods', value: 'GET,POST,PUT,DELETE,OPTIONS' },
          { key: 'Access-Control-Allow-Headers', value: 'Content-Type,Authorization' },
        ],
      },
    ]
  },
}

API Key Protection

El kiosko usa API keys de 64 caracteres para autenticación:

  • Generar keys únicas por dispositivo
  • Rotar keys periódicamente
  • Logs de auditoría de autenticación

Despliegue

Vercel (Recomendado)

  1. Conectar repositorio de Git
  2. Configurar dominios en Settings → Domains
  3. Desplegar automáticamente en push a main

VPS Personal

# Clonar repositorio
git clone <repo-url> /var/www/salonos
cd /var/www/salonos

# Instalar dependencias
npm install

# Configurar environment variables
cp .env.example .env.local
nano .env.local

# Build y start
npm run build
npm start

# Configurar PM2 para proceso en segundo plano
pm2 start npm --name "salonos" -- start
pm2 save
pm2 startup

Troubleshooting

Subdominios no resuelven

  1. Verificar configuración DNS
  2. Esperar propagación DNS (puede tardar hasta 48h)
  3. Verificar con dig booking.anchor23.mx

SSL/Certificate errors

  1. Verificar configuración de certificados
  2. Certbot renew: sudo certbot renew
  3. Reiniciar Nginx: sudo systemctl restart nginx

Rutas no funcionan

  1. Verificar configuración de Next.js router
  2. Rebuild: npm run build
  3. Verificar logs: pm2 logs o vercel logs

Próximos Pasos

  1. Configurar DNS para anchor23.mx
  2. Desplegar y configurar booking.anchor23.mx
  3. Desplegar y configurar kiosk.anchor23.mx
  4. Configurar SSL/TLS para todos los subdominios
  5. Implementar autenticación de clientes en The Boutique
  6. Implementar integración de pagos (Stripe) en booking