Inicio
NexoPOS

Plataforma y configuración

Toda la configuración de productos vive en Admin → Settings (se almacena en platform_settings).

Cambiar las claves aquí no requiere recrear contenedores de Docker. Ruta: /dashboard/admin/settings (consulta de grupo, por ejemplo: ?group=payments).

settings

Marcador de posición de captura de pantalla: Administrador → Configuración del shell con grupos izquierdo/verticales

Los elementos solo de infraestructura (DB, Redis, APP_URL, agente host) permanecen en .env; consulte 01.

SMTP

Requerido para una plataforma similar a producción: verificación, restablecimiento de contraseña, facturación, resultados de despliegue, notificaciones de reembolso.

Field Purpose
Host / Port e.g. smtp.mailgun.org / 587
Username / Password Provider credentials (password encrypted)
Encryption tls, ssl, or empty
From address / name Outbound identity
Admin alert emails Comma-separated ops alert recipients

Si el host SMTP está vacío, la aplicación puede recurrir al mailer de .env (a menudo en Docker — los mensajes van a los logs, no a las bandejas de entrada).

Cómo probar: configurar SMTP → abrir un usuario no verificado → reenviar la verificación → confirmar la bandeja de entrada.

smtp-configuration

GitHub

Solía extraer las versiones principales de NexoPOS y las fuentes de los módulos desde GitHub.

Field Purpose
Personal access token Required for private repos (and higher rate limits)
NexoPOS repository owner/name (default open-source NexoPOS)
Visibility public or private
Install channel latest or pinned
Pinned version / ref Used when channel is pinned
Release cache hours Scheduler refresh interval (min 1h); manual refresh still allowed

NexoPOS público: el token es opcional para los límites de velocidad públicos, pero sigue siendo recomendable. Forks privados / módulos privados: crea un PAT detallado o clásico con acceso a repo (o lectura de contenido) y guárdalo aquí.

Las versiones de los módulos también se pueden cargar como un archivo ZIP sin GitHub.

github-configuration

Facturación (Pagos)

Solo una pasarela está activa para los cargos de pago y de ciclo de vida medio.

Provider Status Notes
Stripe Implemented Cards + Checkout; best default
Paddle Implemented Merchant of Record / Billing API
Mollie Implemented EU methods; first payment + recurring
Airwallex Credentials only Not selectable until a driver ships
Fake Tests only Never production; launch-check rejects

Configurar Stripe (ejemplo)

  1. Pasarela de pago activa → Stripe.
  2. Clave publicable, clave secreta, secreto del webhook.
  3. Punto final del webhook de producción: https://{APP_HOST}/webhooks/stripeEvents: checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.deleted (y cualquier evento adicional que espere tu controlador).
  4. Prueba local: Stripe CLI → ver 

Paddle y Mollie siguen el mismo patrón (clave de API + secreto de webhook; Paddle también tiene un entorno de sandbox/producción).

Marcador de captura: Administrador → Configuración → Pagos — controlador activo + Stripe

billing-settings

Las instalaciones heredadas solo para entorno pueden importar una vez:

php artisan platform:import-env-settings

Luego, elimina los secretos del producto de .env.

Marca

Field Purpose
App name Sidebar, titles, marketing
Logo (light / dark) Theme-aware logos
Favicon Browser tab
branding

Fecha y hora

Controla cómo se muestran las fechas en la interfaz de la capa de control y en los correos electrónicos (no en ISO sin procesar en Vue).

Field Examples
Timezone IANA, e.g. UTC, Africa/Douala, Europe/Paris
Date format Y-m-d, d/m/Y, m/d/Y, d M Y
Time format 24h or 12h

Almacenado como preferencias de la plataforma y compartido mediante las propiedades de plataforma de Inertia.

date-and-settings

Página general y de suspensión

General

Field Purpose
Support email Public contact; used on suspension page when enabled
Support phone / hours Optional contact details
Two factor available Allow customers to enable 2FA
general-contact

Implementaciones (límites + página sin conexión)

Field Purpose
Default max installations Applied to new personal orgs
Default max seats Applied to new personal orgs
Show suspension reason Offline/suspended tenant page
Show support email / phone / hours Same offline page

Cuando una instalación se suspende (fallo de pago, Términos de Servicio, ruta de reembolso, etc.), los visitantes ven la página de plataforma suspendida. Estos conmutadores controlan qué información de contacto y texto de motivo aparecen.

Marcador de captura: Administrador → Configuración → Alternar implementaciones / suspensión

suspension-page

S3 y copias de seguridad

Las copias de seguridad son solo almacenamiento compatible con S3 propiedad de la empresa (sin Drive/OneDrive del cliente en el MVP).

Grupo S3

Field Purpose
Key / Secret Access credentials (encrypted)
Region / Bucket Destination
Endpoint Empty for AWS; set for MinIO, R2, etc.
Path-style Provider-specific

S3 de administrador incompleto no recurre en silencio al disco local para escrituras reales de respaldo. Use la acción de almacenamiento de prueba de Admin cuando esté disponible.

backup

Grupo de copias de seguridad

Field Purpose / default
Platform automatic backups Progressive wave for installs with the Backups add-on
Schedule cron (UTC) e.g. 0 3 * * *
Concurrency 1–5 installs at a time
Keep last N Retention of succeeded backups per install (default 3)

Los clientes no pueden configurar su propio calendario de copias de seguridad; reciben copias de seguridad manuales y, además, copias automáticas de la plataforma cuando tienen derecho.

Catálogo: publica un complemento con copias de seguridad de la clave de función.

backup-schedule

Dominio

Field Purpose
Platform base domain Suffix for free install hostnames
Custom domain mode free / addon / disabled
Public IPv4 / IPv6 Shown on customer Domain tab for DNS
Max verified domain changes / day Per install; LE rate protection

Cuando el modo es complemento, los clientes necesitan un complemento de dominio personalizado activo (feature_key = custom_domain) antes de adjuntar un nombre de host.

Retención de facturación

Field Default Meaning
Grace period (days) 3 After trial/period end: install stays online with renewal banner, then suspend
Soft-delete retention (days) 30 After soft-delete (cancel path, etc.) before hard purge
Refund hard-delete (days) 7 After approved refund soft-delete before hard purge

El ciclo de vida está impulsado por la facturación programada: process-lifecycle (servicio de programador de Compose).

Notificaciones

Field Purpose
Email footer Appended to outbound mail
Support URL Link in emails / help surfaces

Orden de configuración para una nueva plataforma

  1. Dominio — dominio base + IP pública
  2. SMTP — correo real
  3. Pagos — Stripe (o Paddle/Mollie) + webhooks
  4. GitHub — acceso a módulos principales
  5. S3 + copias de seguridad — si vendes un complemento de copias de seguridad
  6. Marca + fecha y hora — pulir
  7. Implementaciones / general: límites + página de suspensión
  8. Retención de facturación: ventanas de gracia y eliminación

Luego ejecuta `php artisan platform:launch-check`.