Revisa el servidor antes de que la tienda abra
SixPreflight es un verificador de preparación del servidor para 6amMart. Subes una carpeta, la abres en un navegador, y hasta 163 comprobaciones terminan en una sola frase: listo para abrir, o no listo — y exactamente qué corregir primero.
Siempre la versión actual, y corre en tu propio servidor. Lee: nunca lee ni escribe una tabla de la aplicación, y nunca envía correo ni SMS a nadie. Tres superficies pueden actuar fuera de la propia carpeta de la herramienta, y una cuarta escribe dentro de ella — cada una solo cuando presionas su botón. Mira “Qué va a cambiar, si se lo pides”.
163
comprobaciones distintas en el código
10
pasos, primero los más baratos y los que más probablemente estén rotos
1
frase al final de todo
A–F
calificación, con cada bloqueador nombrado
¿Estás leyendo esto con un asistente de IA?
Conseguir SixPreflight
SixPreflight es una carpeta de PHP que subes. Nada que instalar antes, y nada que registrar. Es gratis.
Pruébalo antes de descargarlo
Contraseña de la demo
Password: a3uap648vnh7yqenc9vb
No username — SixPreflight asks for the password only.
The shop runs a real dataset — tens of thousands of orders — so the screens behave the way they will on yours, not the way a demo with forty products does. Two things are switched off on the demo: maps and SMS one-time passwords. Both use keys locked to a single server, which is how they should be held, so they cannot answer from a demo host. They work normally on your own install.
Obtener SixPreflight
Free- Actualizaciones incluidas — cada versión llega a CodeCanyon sin coste adicional. Sin servidor de licencias, sin clave que renovar.
- La primera configuración es gratis — envía tu código de compra y los datos del servidor por WhatsApp o correo.
Nada que activar — funciona en tu propio servidor, no llama a casa, y sigue funcionando aunque este sitio esté caído.
Qué hace
Para un dueño de tienda, no para un ingeniero
Compraste 6amMart, alquilaste un servidor, y alguien lo instaló. El sitio carga. Eso no es lo mismo que estar listo. Una tienda puede verse completamente normal en un navegador mientras su pasarela de pago no tiene credenciales que funcionen, sus notificaciones push no llegan a ninguna parte, su archivo .env lo puede leer cualquiera en internet, sus tareas programadas nunca se han ejecutado ni una vez, y su base de datos está configurada para usar una fracción de la memoria que estás pagando. Nada de eso aparece hasta que un cliente real hace un pedido real y algo sale mal en silencio.
SixPreflight es la revisión que corres antes de que eso pase. Subes una carpeta a tu sitio, la abres en un navegador, pones una contraseña y presionas un botón. Mira el servidor como lo miraría un ingeniero cuidadoso — el hardware, PHP, los ajustes de la base de datos, el servidor web, los permisos de archivos, qué puede alcanzar internet, y si los pagos, el correo, los SMS, los mapas y las notificaciones push funcionan de verdad cuando los llamas en serio.
Después te da una sola frase — “Listo para abrir” o “No está listo para recibir pedidos” — una calificación con letra, y una lista ordenada de qué corregir, cada punto con la línea exacta a cambiar, el archivo donde está, y qué le cuesta a tu tienda dejarlo así.
El escaneo en sí solo lee. Donde la herramienta puede actuar, actúa con un botón que tú presionas, nunca por su cuenta.
Con esto frente a sin esto
Lo que sabes antes de abrir
El mismo servidor en los dos lados. La diferencia es si encuentras tú los problemas, o los encuentra un cliente que paga.
El día que abres
Sin SixPreflight
El sitio carga en el navegador, así que abres. Una tienda puede parecer completamente normal mientras su pasarela de pago no tiene credenciales que funcionen, sus notificaciones push no llegan a ninguna parte, su .env es legible por cualquiera en internet, sus tareas programadas no se han ejecutado ni una vez, y su base de datos está configurada para usar una fracción de la memoria que estás pagando.
Con SixPreflight
Hasta 163 comprobaciones terminan en una sola frase — lista para abrir, o no lista para tomar pedidos — con una nota de la A a la F y una lista ordenada de qué arreglar primero.
Cómo te enteras de que algo va mal
Sin SixPreflight
Un cliente real hace un pedido real y algo falla en silencio. Esa es tu primera señal, y te cuesta el pedido y el cliente.
Con SixPreflight
Te enteras antes de abrir, con un escaneo que ejecutas tú mismo — cada punto indica la línea exacta a cambiar, el archivo en el que está y lo que le cuesta a tu tienda dejarlo así.
Una credencial presente pero incorrecta
Sin SixPreflight
Se parece exactamente a una que funciona. Un archivo de configuración con un valor te dice que el valor está ahí, no que sea correcto.
Con SixPreflight
Lo resuelven llamadas reales: un token de Firebase real generado y enviado al endpoint de Google, una conversación SMTP real con EHLO / STARTTLS / AUTH y una llamada de geocodificación en vivo a Google Maps. Presente-pero-incorrecto falla aquí, el único lugar donde se puede detectar antes de que lo encuentre un cliente.
Lo que internet ya puede alcanzar
Sin SixPreflight
Das por hecho que los archivos que no deberían ser públicos no lo son. Nada en el servidor te dice lo contrario, porque nada está haciendo las peticiones.
Con SixPreflight
Descarga una lista fija de direcciones de riesgo conocidas desde tu propio sitio en vivo — /.env, /.git/config, /artisan, el database.sql del instalador y los propios archivos de la herramienta — e informa de lo que realmente respondió.
Lo que cuesta
Sin SixPreflight
Enterarte de esto por un cliente es la versión cara.
Con SixPreflight
Nada. SixPreflight es gratuito en CodeCanyon y la primera configuración es gratis. Nada en el paquete comprueba una licencia, una cuenta ni una fecha de caducidad, y nada informa de nada a AllsWeb.
Ejecutado en servidores reales
Qué puntuó cuando lo apuntamos a nuestras propias máquinas
Un verificador que nunca ha publicado un resultado es una afirmación. Estos vienen de la misma ronda de mediciones que el benchmark de SixPanel — la herramienta desplegada en servidores reales con una tienda real, y puntuada como la puntúa un navegador y no desde una consola.
SixPanel
97 · A
Filas que requieren atención: Ninguna
SixPanel Docker
96 · A
Filas que requieren atención: Ninguna
Cómo leer bien una puntuación con tope
La puntuación se limita a 88 mientras haya una sola fila en rojo, por muy bien que esté todo lo demás. Es deliberado — una tienda que no puede operar no debería leerse como un notable alto — pero significa que un número con tope no te dice casi nada sobre los otros noventa y nueve controles. Antes, en esa misma ronda, un servidor marcó 88 y otro 96, y la diferencia entre sus puntuaciones subyacentes era de 0,03 sobre un centenar de controles. Toda la diferencia visible era un trabajo en segundo plano obsoleto. Lee siempre las filas rojas, nunca solo el titular.
Un defecto que esta ronda encontró en la propia herramienta
El ejecutor de escaneos de SixPreflight no tenía ningún manejo de errores. En un servidor donde la empresa de hosting ha deshabilitado una función de PHP, llamarla en PHP 8 no es un aviso que se pueda silenciar — es un error fatal — así que una sola función deshabilitada terminaba el escaneo entero con una traza en vez de un informe. Y ese es precisamente el hosting compartido de cPanel y Plesk que más probablemente necesita esta herramienta. Está corregido: una función deshabilitada es ahora una fila que dice que no se pudo medir, y el escaneo termina.
Y uno en el que se equivoca en un servidor endurecido
En un servidor donde PHP está confinado por un sandbox del kernel, SixPreflight no puede leer la configuración del servidor web — y comunica que un tiempo de espera está sin definir cuando el servidor web sí lo ha definido. Ausencia de pruebas leída como prueba de ausencia, lo que penaliza a un servidor por estar endurecido. Aparece aquí porque una herramienta que declara sus propios puntos ciegos vale más que una que no tiene ninguno.
Cómo funciona
Por pasos, no una sola espera larga
La página en sí no ejecuta ninguna comprobación. Dibuja un cascarón vacío, y después el navegador le pide al servidor un paso a la vez.
El primer dibujado es instantáneo
Medido en la instalación de prueba: 6.8 KB en 2 ms, contra 36 KB y alrededor de 1.6 s cuando la página hacía todo el trabajo antes de renderizar. En un servidor que por definición puede estar mal configurado, esperar la comprobación más lenta antes de mostrar algo es un mal intercambio.
La barra de progreso es real
Pasos completados sobre pasos totales, no una animación. Cuando se detiene, algo está de verdad trabado, y la etiqueta dice qué comprobación es.
Una comprobación colgada no puede tumbar la página
Cada paso es su propia petición corta, así que nada choca contra max_execution_time. Un paso que lanza un error se reporta como hallazgo y el escaneo sigue. Cada paso terminado se escribe en disco a medida que se completa, así que un escaneo interrumpido igual se puede leer.
Dos botones
Revisar ahora
Lee la configuración local y consulta la IP pública del servidor — alrededor de un segundo.
Revisión profunda
Agrega los dos pasos que hacen llamadas reales hacia afuera: las pruebas de exposición pública contra tu propia URL, y las pruebas de integración en vivo.
Detalle honesto: “Revisar ahora” no es del todo sin conexión. La fila de la IP pública consulta un servicio externo de eco — ifconfig.me, después api.ipify.org, después icanhazip.com, probados en ese orden y guardados en caché entre escaneos, a propósito tres proveedores para que un mal minuto no sobrescriba una respuesta que se sabe buena.
Las tres formas en que corre
SixPreflight deduce qué está mirando y cambia lo que dice, porque un consejo honesto es distinto en cada caso.
En un servidor común — sin ninguna aplicación instalada todavía
Este es el modo para elegir un servidor o preparar uno nuevo. El hardware, PHP, el servidor de base de datos, el servidor web, los permisos y la exposición pública se siguen revisando. El paso de .env no devuelve nada, el paso de la aplicación devuelve solo la fila de perfil, y el paso de base de datos reporta “no revisado — aquí no hay aplicación que guarde credenciales” como aprobado, en lugar de dejar que una conexión faltante se convierta en la peor fila de una máquina que está correctamente vacía.
Igual puedes auditar la base de datos de una máquina vacía apuntando env_path a un .env de relleno que lleve las credenciales.
Dentro de tu tienda — en el código del admin de 6amMart
Sube la carpeta a public/, el directorio que tu servidor web realmente sirve. La raíz de la aplicación se encuentra subiendo desde la propia carpeta de la herramienta, como máximo cinco niveles, hasta el directorio que tenga artisan — así que tanto public/preflight/ como una carpeta en la raíz de la aplicación funcionan, y una subida enterrada más de cinco niveles recibe en silencio el modo autónomo. El lugar correcto es public/ — una carpeta en la raíz de la aplicación solo se puede alcanzar por URL cuando la raíz de documentos está mal, que es justamente lo más grave que busca esta herramienta.
Aquí corre cada comprobación, incluidas las escritas específicamente desde el código de 6amMart: el programador de tareas que paga a tiendas y repartidores, los módulos marcados como habilitados pero que faltan, las extensiones exactas de PHP que exigen sus paquetes de proveedor, y la capa de websocket detrás del seguimiento de entregas en vivo. En cualquier otra aplicación Laravel, todo lo relativo al servidor sigue aplicando tal como está escrito, y las comprobaciones específicas de 6amMart se saltan en vez de adivinarse.
Integrado en SixPanel
En un servidor con SixPanel, el panel es dueño del servidor web, PHP, la configuración de la base de datos, cron, el worker de la cola y el certificado, y reescribe esos archivos desde sus propias plantillas en cada despliegue — así que un valor pegado a mano se pierde en silencio en el siguiente despliegue. En ese modo SixPreflight quita los bloques para pegar, los bloques crudos de nginx y Apache, las líneas para reiniciar php-fpm y las rutas de “dónde hacer clic en tu panel de hosting”, y en su lugar señala la página de SixPanel que es dueña de cada ajuste. Conserva todo lo de la aplicación — .env, ajustes del negocio, claves faltantes o equivocadas, un APP_URL equivocado, almacenamiento roto, errores en el log — porque esa es la mitad que el panel no puede arreglar por sí solo. Dice en qué modo está, en una línea arriba de la página, así que el modo nunca es un misterio.
El modo lo decide una variable de entorno que fija el bloque de servidor que responde la ruta (SIXPANEL_EMBED=1), o 'embedded' => true en config.php. A propósito, una cabecera de petición no es la señal principal: una cabecera la escribe quien hace la petición, así que sobreviviría al marco del panel y nada más — abre la misma página en una pestaña nueva y la herramienta volvería a dar consejo autónomo en el mismo servidor. X-SixPanel-Embed: 1 solo se respeta cuando activas 'trust_embed_header', que está apagado por defecto, porque sin control dejaría que cualquier visitante se diera a sí mismo la vista de servidor administrado en un servidor que en realidad le toca arreglar a él.
Qué revisa
163 comprobaciones distintas, en diez pasos
En el código viven 163 comprobaciones distintas, que corren en diez pasos, ordenadas primero por las más baratas y las que más probablemente estén rotas. Los dos pasos que hacen llamadas hacia afuera están marcados como lentos y solo corren en una Revisión profunda.
| Paso | Qué mira | Comprobaciones | Ejemplos reales |
|---|---|---|---|
| Sistema y hardware | La máquina que estás pagando | 7 | cantidad de vCPU, RAM, swap, disco libre, carga promedio, versión del sistema operativo, si existe siquiera alguna herramienta de respaldo |
| Entorno de ejecución de PHP | El lenguaje en el que corre la tienda | 18 | banda de versión de PHP, 25 extensiones requeridas, memory_limit, max_execution_time efectivo, display_errors, OPcache encendido/apagado, memoria y cantidad de archivos de OPcache, tasa de acierto |
| Salud de la aplicación | Laravel y el propio 6amMart | 22 | .env versionado en git, migraciones pendientes, tareas fallidas, cola acumulada, tamaño del log, cantidad de errores en el log, si el programador de tareas ha corrido alguna vez, lista de módulos válida, proxies de confianza, ajustes de instalación presentes |
| Entorno (.env) | El único archivo que todo lee | 14 | claves duplicadas (gana la última, así que tu edición no hace nada), caracteres \r invisibles, un APP_KEY inválido o el que viene de fábrica, APP_DEBUG=true, un APP_URL mal formado, claves que nadie lee, claves que quedan nulas cuando se cachea la configuración |
| Identidad del host y permisos | Quién es dueño de los archivos | 9 | IPv4 e IPv6 públicas, el usuario de PHP, la propiedad de los archivos, los seis directorios que deben ser escribibles, archivos escribibles por todos, un .env legible por todos, cualquier cosa escribible y ejecutable dentro de public/ |
| Servidor web | nginx o Apache adelante | 17 | tipo de manejador, gzip, tokens del servidor, tiempo de espera de lectura de FastCGI, módulos y MPM de Apache, cantidad de workers de php-fpm frente a la memoria, la cadena de tamaño de subida, compresión en vivo, caché de estáticos, HSTS, vencimiento del certificado |
| Caché, cola y tiempo real | Trabajo en segundo plano | 11 | conexión de la cola, si hay un worker de cola realmente corriendo y supervisado, drivers de sesión y de caché, Redis, Memcached, credenciales y esquema de Reverb, credenciales de Pusher |
| Configuración de la base de datos | Donde vive el dinero | 32 | buffer pool de InnoDB dimensionado según tus datos y tu RAM reales, redo log, método de volcado, max_connections frente a los workers de php-fpm, skip_name_resolve, sql_mode, juego de caracteres, desfase de reloj entre PHP y la base de datos, tasa de acierto del buffer pool, tablas temporales en disco, privilegios del usuario de base de datos |
| Exposición públicalento | Qué puede descargar un desconocido | 12 | HTTPS, .env legible por la web, .git/config legible, laravel.log servido, un archivo .php subido que de verdad se ejecuta, Debugbar o Telescope respondiendo, volcados de base de datos del instalador que quedaron ahí, los propios archivos de esta herramienta servidos como texto |
| Pagos, correo y SMSlento | Los servicios que tienen que funcionar | 21 | una conversación SMTP real, la emisión real de un token de Firebase, una llamada real de geocodificación a Google Maps, métodos de pago utilizables, credenciales de la pasarela de SMS, disco de almacenamiento escribible, modo mantenimiento, reCAPTCHA, zona horaria, moneda |
La columna suma 163. Dos filas llevan una salvedad.
- Una de las 32 comprobaciones de base de datos — db_standalone — existe solo para el caso en que no hay ninguna aplicación que guarde credenciales. Sustituye a las otras 31 en vez de sumarse a ellas.
- Dos de las 21 comprobaciones de pagos/correo/SMS son bases de prefijo (sms_, social_) que se expanden en tiempo de ejecución en una fila por cada pasarela activa o por cada inicio de sesión social configurado. Así que ese paso puede emitir más de 21 filas en una tienda con mucho movimiento, o menos en una vacía.
Ninguna corrida sola ejecuta las 163 — y esta es exactamente la razón
Una tienda instalada puede producir como mucho 162 filas distintas — y ninguna corrida sola emite las 162
db_standalone solo se emite cuando no hay aplicación, así que una tienda instalada nunca la puede ver; esa es la número 163. Las 162 son un techo, no una corrida.
Una Revisión profunda en una tienda instalada emite 160
Cuando el paso profundo va a venir después, la clase del servidor web suprime sus dos gemelas que leen la configuración — gzip y server_tokens en nginx, o keepalive y server_tokens en Apache — porque la medición en vivo responde la misma pregunta desde una respuesta real, y las dos pueden discrepar (gzip on; con una lista gzip_types que omite application/json es aprobado por configuración y advertencia por medición, sobre un mismo ajuste). Esas gemelas están dentro de las 162; son la razón por la que una Revisión profunda queda en 160 y no en 162, no un par extra encima.
Un “Revisar ahora” emite 123 — se salta 39
Esas 39 son las 12 comprobaciones de exposición pública, las 21 de pagos/correo/SMS, y las seis filas del servidor web que solo se pueden leer de una respuesta en vivo — compression, static_cache, keepalive_live, server_banner, hsts y cert_expiry. Las dos gemelas que leen la configuración sí están en esta corrida, porque la medición en vivo que las habría reemplazado no va a llegar.
Las dos cifras cuentan claves distintas, y un servidor real queda aún más abajo — usa el extremo bajo
Tres de las 17 claves del servidor web pertenecen al servidor web que no estás usando (nginx aporta client_max_body_size, gzip y fastcgi_read_timeout; Apache aporta apache_modules, apache_mpm y keepalive), y el paso de base de datos lleva pares condicionados por el motor — MySQL 8.0.30+ reporta innodb_redo_log_capacity, todo lo demás reporta innodb_log_file_size, nunca los dos. Contando solo la división del servidor web, una Revisión profunda en una instalación con nginx o con Apache emite como mucho 157, y un “Revisar ahora” como mucho 120; cada fila de base de datos condicionada por el motor lo baja todavía más.
En un servidor común, 40 filas no tienen nada que leer
Las 14 comprobaciones de .env, las 12 de la aplicación Laravel, las 9 de la plataforma 6amMart y las 5 de tiempo real no tienen nada que leer — 40 filas, dejando solo la fila de perfil del paso de la aplicación.
Así que la forma honesta es “hasta 163” — con una Revisión profunda en una instalación de 6amMart corriendo todo el conjunto disponible para ella, que son 160 claves distintas y no más de 157 filas en una máquina real con un solo servidor web.
Ninguno de los dos pasos lentos adivina nada
El paso de exposición descarga direcciones reales de tu sitio real
Descarga una lista fija de direcciones conocidas por riesgosas desde tu propio sitio en vivo — /.env, /.git/config, /storage/logs/laravel.log, /artisan, /composer.json, /vendor/autoload.php, el database.sql y el public.zip del instalador, /telescope, /_debugbar/open, la ruta de registro de tiendas, y los propios archivos de esta herramienta — y reporta qué devolvió realmente.
El paso de servicios hace llamadas reales
Emite un JWT real y lo envía al endpoint de tokens de Google para demostrar que tu cuenta de servicio de Firebase funciona, abre una conversación SMTP real con EHLO / STARTTLS / AUTH, y hace una llamada de geocodificación en vivo a Google Maps. Una credencial que está presente pero equivocada falla aquí, que es el único lugar donde se puede atrapar antes de que la encuentre un cliente.
El sondeo SMTP se detiene en la autenticación. Envía EHLO, negocia STARTTLS, se autentica y después hace QUIT — en esa clase no hay MAIL FROM, no hay RCPT TO y no hay DATA, así que no se le entrega nada a nadie.
Dos páginas más que no forman parte de las 163
Las dos son superficies reales del producto y ninguna aporta al puntaje.
Seguimiento de entregas en vivo — 15 comprobaciones
Tiene su propia página, que cubre el proceso de Reverb, el gestor de procesos, el socket de escucha, el firewall, el proxy, el certificado, las credenciales, las claves de la app, los ajustes de la app, la autenticación de canales, el destino del cliente, la caché de configuración, la cola, el CDN y el driver. Para un comprador de 6amMart esta es la funcionalidad detrás del mapa en vivo, y se revisa por separado en vez de mezclarse con el puntaje del servidor.
Alerta de pedido de prueba
Envía una notificación push real a un dispositivo real de tienda o de repartidor, a través del propio comando artisan de la plataforma en vez de un payload armado a mano. Hay un botón de “Mostrar qué se enviaría” que la corre en seco, pero el botón por defecto envía de verdad.
Cómo puntúa
Un número — y te dice qué no pudo medir
Cada comprobación termina en una de cuatro cosas: aprobado, advertencia, problema, o no medido.
El número es un promedio ponderado, no un conteo. La tabla de pesos va de 200 hasta 11, fijada por lo que te cuesta cuando está mal — APP_DEBUG=true está en 200, la fila del nombre del sistema operativo está en 12, y app_profile y public_ipv6 están en 11. Cualquier clave que no esté en esa tabla cae a un valor por defecto de 10, y una clave de escaneo en vivo hace exactamente eso: db_standalone, que de verdad no está ponderada y aparece en el propio informe de desvíos de la herramienta. Un aprobado gana todo su peso, una advertencia gana la mitad, un problema no gana nada.
| Puntaje | Calificación | Qué significa |
|---|---|---|
| 90 o más | A | Listo para producción |
| 75–89 | B | Bien. Resuelve los puntos en ámbar y vuelve a revisar |
| 55–74 | C | Utilizable, pero dejando rendimiento real sin aprovechar |
| 35–54 | D | No está listo. Varios ajustes van a doler bajo carga |
| Menos de 35 | F | No salgas en vivo con esta configuración |
Los bloqueadores limitan la calificación
Algunas fallas no son “puntos menos” — significan que la tienda no puede vender. Un bloqueador limita el puntaje a 74, dos a 54, tres o más a 34, así que un bloqueador empuja la banda de calificación hacia abajo y el promedio ponderado solo decide dónde caes dentro de esa banda. Sin ningún bloqueador, una sola fila roja igual limita el puntaje a 88 — una A es inalcanzable con cualquier rojo en la página.
La lista de bloqueadores es corta y específica, y son exactamente diecinueve claves nombradas más cualquiera que empiece con sms_: .env legible por la web, logs servidos por la web, el sitio en modo mantenimiento, un archivo .php subido que se ejecuta, tiendas nuevas que no se pueden registrar, ningún método de pago utilizable, la base de datos inalcanzable, el almacenamiento mal configurado, el correo fallando, los SMS fallando, un sql_mode bajo el que la plataforma se rompe, el juego de caracteres equivocado, el programador de tareas sin correr, un certificado que vence dentro de 14 días, y cinco fallas más de .env — un APP_KEY faltante o el que viene de fábrica, APP_DEBUG=true, un bloque de base de datos roto, un bloque de correo roto, y claves duplicadas.
Fíjate en lo que a propósito no es un bloqueador: que los archivos por encima de la raíz de documentos sean legibles se califica como advertencia, no como bloqueador, porque eso es divulgación y no una brecha. La lista es corta a propósito — si todo es una emergencia, nada lo es.
Una consecuencia que vale la pena decir claramente: cert_expiry es un bloqueador que solo se mide en una Revisión profunda, porque se lee de un handshake TLS en vivo. Un “Revisar ahora” no te puede decir que tu certificado vence la semana que viene.
Por qué “no medido” nunca se califica — y por qué eso importa
Una comprobación que la herramienta no pudo ejecutar queda excluida por completo del puntaje.
Eso es lo más importante que hay que entender sobre el número. En un panel administrado, PHP queda confinado al directorio del propio sitio — lo cual es correcto y vale la pena conservar — y eso significa que /proc, /etc/os-release, la configuración de nginx y la configuración del pool de php-fpm no se pueden leer en absoluto. Siete comprobaciones se quedan entonces sin respuesta.
Una herramienta que las calificara como fallas te castigaría por una medida de seguridad que deberías conservar. Una que las calificara como aprobadas estaría mintiendo. SixPreflight no hace ninguna de las dos: esas filas dicen “no se puede leer desde aquí”, una fila de la sección de PHP explica por qué una sola vez y da las dos formas de resolverlo, y ninguna toca el puntaje.
La misma regla aplica a la comprobación de respaldos. Si no se encuentra ninguna herramienta de respaldo, la fila queda como no medida — no como advertencia — porque las instantáneas de tu proveedor de hosting son invisibles desde dentro del servidor, y la herramienta se niega a llamar roto a algo que simplemente no puede ver.
Un servidor bien cerrado no debe sacar mal puntaje por estar bien cerrado. Esa es la regla, y es la razón por la que vale la pena leer el número.
La lista de correcciones
Cada advertencia y cada problema aterrizan en la página Qué corregir, primero los rojos y después por orden de peso. Cada uno lleva una etiqueta de impacto derivada del mismo peso que produjo el puntaje, así que nada se califica en una escala y se prioriza en otra.
- Detiene los pedidos
- Puede detener los pedidos
- Riesgo grave
- Riesgo
- Hace lento el sitio
- Vale la pena corregirlo
- Orden y limpieza
Cada tarjeta te dice cuál es el ajuste ahora, cuál debería ser, en qué archivo está, el comando a ejecutar si lo hay, y cómo comprobar que el cambio quedó. Hay un bloque de “muéstrame todas las líneas para pegar” por cada archivo de destino, que contiene solo las líneas que todavía hay que cambiar — porque copiar veinte valores de a uno es como se pierde un dígito. Los ajustes para pegar y los comandos para ejecutar se mantienen en bloques separados; van a lugares distintos.
Los valores objetivo de base de datos de las tarjetas se derivan del mismo cálculo que produce el bloque de my.cnf que copias, así que la cifra de cada fila y el bloque nunca pueden discrepar.
También recuerda
La herramienta guarda los últimos 60 escaneos en disco. La página de historial muestra una tarjeta de “desde el último escaneo” — qué se rompió recién y qué corregiste recién — puedes comparar dos revisiones guardadas cualesquiera lado a lado, y exportar una corrida como archivo de texto.
Un endpoint de solo lectura ?api=findings devuelve la última revisión guardada como JSON para un tablero o un monitor. Nunca inicia un escaneo: un monitor que disparara un escaneo completo — uno de cuyos pasos descarga URLs de tu sitio en vivo — en cada actualización del tablero sería un generador de carga disfrazado de monitor. La respuesta lleva run.age_seconds para que quien la llame pueda decir “esta lectura tiene dos semanas” en vez de presentar noticias viejas como actuales.
La otra mitad
También tiene una segunda mitad: el script de configuración
SixPreflight lee y explica. bin/setup-6ammart.php es la otra mitad del paquete: hace los cambios. La página de documentación que se entrega lo dice en una línea — “SixPreflight lee un servidor y explica qué cambiar. setup-6ammart.php es la otra mitad: hace esos cambios.”
Un script de bash con extensión .php, a propósito
PHP toma el archivo, choca con un exit en la línea 3, y no le entrega nada a un navegador. Ejecútalo con bash, nunca desde un navegador.
El modo por defecto es una corrida en seco
Ejecutarlo por accidente no cambia nada. --check reporta el valor actual frente al recomendado. --apply hace el trabajo.
84 entradas de catálogo, 40 de ellas seguras de aplicar sin preguntar
Su fuente de verdad es el mismo catálogo de ajustes que usan las tarjetas de corrección — 84 entradas repartidas en php, php-fpm, os, mysql, nginx, laravel y 6ammart, de las cuales 40 están marcadas como seguras de aplicar sin preguntar y 44 se preguntan con el compromiso explicado en una línea, o se imprimen como instrucción manual. Ninguna entrada del segundo grupo se aplica nunca en silencio, ni siquiera con --yes.
Conteo en disputa, dicho abiertamente
La página docs/setup.html que se entrega dice 84 entradas, 40 seguras de automatizar, 44 no. El propio encabezado del script y un conteo directo de los tres archivos data/tuning-*.json.php dicen los dos 86 / 41 / 45. Arriba se usa la cifra publicada más baja.
Las escrituras a un vhost de nginx en vivo, el cron del programador de tareas y cualquier cosa que arranque un worker de cola sobre una acumulación caen todas en el grupo que pregunta: cada una muestra exactamente qué está por hacer y pregunta, y --yes no responde por ellas.
Así que SixPreflight es un verificador con un corrector opcional al lado, no un verificador solo.
Vienen cuatro guías con él
El conjunto de documentación le dedica al corrector una cuarta parte de sus páginas.
Cómo usarlo
index.html — el tablero, los dos botones de escaneo, la lista de correcciones y la página de historial.
Qué instalar, y de dónde sale cada credencial
requirements.html — los paquetes, las extensiones, y desde qué consola se emite cada clave.
Qué PHP, qué base de datos y qué sistema operativo
versions.html — la recomendación, la tabla de puntajes ordenada, y la razón detrás de cada elección.
Qué hace el script de configuración
setup.html — el catálogo, qué entradas se automatizan, y cuáles se detienen y preguntan.
Por qué esto es mejor que adivinar
Cuatro cosas que no puedes revisar a ojo
Frente a tu propio criterio
La página de requisitos previos del proveedor lista mínimos, y los mínimos son lo incorrecto sobre lo que construir. “MySQL 5.7+ / MariaDB 10.3+” esconde que los dos se comportan distinto bajo ONLY_FULL_GROUP_BY: MySQL 5.7.5+ lo activa por defecto y se las arregla, porque deduce la dependencia funcional de la que dependen estos informes; MariaDB lo deja apagado, y se rompe si lo enciendes — el informe por artículo falla entonces con ERROR 1055. Eso se verificó corriendo el informe en los dos, no se supuso. Así que en MariaDB el modo tiene que quedarse apagado, y en MySQL hay que dejar el valor por defecto en paz. La herramienta califica esa combinación específica, no el número de versión.
Frente a una página de phpinfo()
phpinfo() imprime valores, y nada más. Tu max_execution_time real es el menor entre php.ini y el request_terminate_timeout de php-fpm; SixPreflight calcula ese número efectivo y lo califica. phpinfo() no puede dimensionar tu buffer pool de InnoDB según tu RAM real, tu cantidad real de workers de php-fpm y tu tamaño real de datos — SixPreflight sí, y después comprueba si los workers de php-fpm siquiera caben dentro de max_connections. No puede calcular un objetivo de cantidad de archivos de OPcache a partir del número de archivos PHP de tu proyecto. Y no te puede decir qué puede descargar internet de tu sitio, porque no está haciendo peticiones.
Frente a la palabra de tu empresa de hosting
“El servidor está bien” no es una afirmación que alguien pueda comprobar. Esto sí: descarga /.env desde tu propia URL en vivo y te dice qué devolvió. Abre una sesión SMTP real. Emite un token real de Firebase. Hace una llamada real a Maps. Cada una de esas cosas es un hecho con fecha y hora, guardado en un archivo que puedes exportar y enviarle a quien te dijo que estaba bien.
Y te dice cuándo no sabe
Una herramienta que siempre tiene una respuesta está adivinando en algún lado. Esta nombra las filas que no pudo medir y las saca del puntaje.
¿Ya usas SixPanel?
¿Ya usas SixPanel? Ya tienes esto
En cPanel, aaPanel, CloudPanel o un VPS vacío, SixPreflight es para ti
Tú eres dueño del servidor web, PHP, la configuración de la base de datos, cron y el certificado, así que cada bloque para pegar y cada comando son tuyos para usar.
En un servidor con SixPanel ya está ahí
SixPanel monta SixPreflight dentro de la tienda y lo muestra como la propia página de Revisión de la tienda del panel. No descargas nada, y los ajustes que administra el panel se señalan a la página del panel que es dueña de ellos, en vez de a un bloque para pegar que el siguiente despliegue sobrescribiría.
Ver SixPanelUna nota honesta más para ese modo: en una máquina con SixPanel, los ajustes propios de la aplicación — pagos, correo, SMS, Firebase, mapas, zona horaria, moneda — se dejan fuera del puntaje del servidor y se listan aparte, porque son tarea del dueño de la tienda y no del servidor. El veredicto en lenguaje claro de arriba sigue hablando por todo el negocio.
Requisitos y cómo ejecutarlo
Requisitos, cómo ejecutarlo, y qué va a cambiar
Qué necesita la herramienta en sí
| Requisito | Qué necesita |
|---|---|
| PHP | 8.2 o más nuevo para correr la herramienta |
| Servidor web | Cualquiera que sirva el directorio public/ de tu sitio |
| Permiso de escritura | preflight/config.php (o pegar un hash de contraseña a mano) y preflight/history/ |
| Aplicación | No hace falta ninguna. Corre en un servidor vacío |
| Paneles que reconoce | cPanel · aaPanel · CloudPanel · DirectAdmin · Plesk · CWP · servidor común |
Con qué compara y califica tu servidor
| Recurso | Mínimo | Qué elegir |
|---|---|---|
| vCPU | 2 | 4 |
| RAM | 4 GB | 8 GB |
| Disco libre | 20 GB en la página de requisitos — pero la comprobación de disco en sí aprueba con 20 GB, advierte entre 10 y 20, y solo falla por debajo de 10 | 40 GB+ |
| Tipo de almacenamiento | SSD | NVMe |
| Tipo de hosting | VPS o dedicado | VPS con root |
La fila de disco libre de verdad se contradice a sí misma, y lo vas a ver en pantalla
Requirements::platform() tiene fijo “hacen falta 20 GB, elige 40 GB+”, mientras que la comprobación de hardware califica contra min_free_disk_gb = 10 de config.php — así que un servidor con 12 GB libres es una falla de requisitos en una tabla y una advertencia ámbar en otra, en la misma página.
En un navegador — la forma normal
Sube la carpeta
Sube la carpeta preflight/ completa al directorio public/ de tu sitio.
Pon una contraseña en la primera pantalla
Abre https://your-domain/preflight/ y pon una contraseña. No arranca sin una, y quien la abra primero es quien la fija — así que haz esto apenas termine la subida. Mínimo ocho caracteres. Si config.php no se puede escribir, la página lo dice y te da el comando de una línea con password_hash() para pegar en su lugar.
Presiona un botón
Revisar ahora toma alrededor de un segundo. Revisión profunda agrega las pruebas hacia afuera.
Borra la carpeta cuando termines
Está protegida, pero reporta detalles internos del servidor y no tiene razón para quedarse en un sitio en vivo.
Opcional: restringe el acceso por IP con allow_ips en config.php (direcciones sueltas o rangos CIDR, IPv4 e IPv6). Detrás de Cloudflare o de un balanceador de carga, la dirección que ve es la del proxy, así que una lista con tu propia IP te deja fuera — déjala vacía y confía en la contraseña, o restringe en el proxy. Si te dejas fuera, la página 403 imprime la dirección que llegó de verdad y la que el proxy dice que es.
Qué va a cambiar, si se lo pides
El escaneo lee. Cuatro superficies del paquete pueden escribir, y ninguna se dispara sola — cada una necesita un botón o un comando.
La página de Registros de error puede vaciar un log
El botón Limpiar trunca el archivo con ftruncate en vez de borrarlo, porque PHP, MySQL y nginx mantienen esos archivos abiertos y desvincularlos los deja escribiendo en un descriptor sin nombre. Requiere el token CSRF, y si el usuario de PHP no puede escribir el archivo, imprime el comando de shell en vez de actuar. Eso es una escritura sobre los logs de Laravel, los de errores y consultas lentas de MySQL, los de php-fpm y los del servidor web — archivos que la herramienta no posee.
La página de Alerta de pedido de prueba envía un push real
A un dispositivo real de tienda o de repartidor, a través del propio comando artisan de la plataforma. Existe un botón de corrida en seco de “Mostrar qué se enviaría”; no es el que viene por defecto.
El benchmark de base de datos crea y borra su propia tabla
Se llama zz_preflight_bench_<random> con un sufijo aleatorio nuevo en cada corrida — el argumento completo de seguridad está más abajo.
Poner una contraseña reescribe config.php
Y la acción de “guardar perfil” del tablero escribe en el archivo de perfil del servidor las cifras de RAM y vCPU que ingresa el operador. Las dos viven dentro de la carpeta preflight/.
Y aparte, a propósito: bin/setup-6ammart.php aplica cambios cuando lo corres con --apply. Ese es justamente su punto.
Desde la línea de comandos — sin aplicación, sin navegador
Las dos herramientas de comparación son solo de línea de comandos y se niegan a responder por HTTP.
php preflight/server-compare.php # medir esta máquinaphp preflight/server-compare.php --save=box-a.jsonphp preflight/server-compare.php --compare=box-a.json,box-b.jsonphp preflight/detect-size.php # registrar RAM y vCPUNo son los únicos archivos con ese guard. Once archivos del paquete se niegan a correr fuera de la línea de comandos — esos dos, ocho arneses de prueba incluido tests/smoke.php, y bin/setup-6ammart.php. tests/smoke.php es la razón por la que ese guard importa: dejado alcanzable por la web y sin contraseña, que es como se entregó alguna vez, un solo GET anónimo costaba once segundos de CPU, un sondeo completo de la base de datos de la aplicación, diez peticiones que el servidor se hacía a su propia URL pública, y llamadas hacia afuera a Google Maps, al host SMTP configurado y a Firebase, repetibles tantas veces como quisiera cualquiera. Ahora el escaneo busca exactamente ese archivo en tu servidor, porque una carpeta como esta se copia entre máquinas durante años.
server-compare.php es autónomo y no tiene ninguna dependencia — no necesita ninguna aplicación, que es lo que lo hace la herramienta correcta para comparar dos servidores que estás pensando alquilar, antes de comprometerte con alguno.
Cómo leer los puntajes del benchmark
Los dos puntajes están normalizados para que signifiquen lo mismo en cualquier nivel de dificultad — solo la máquina los cambia, y más alto es más rápido. Una vCPU de nube actual marca alrededor de 100. Córrelo dos o tres veces a distintas horas: una instancia con ráfagas cae bruscamente cuando se le acaban los créditos, y eso no se ve en una sola corrida. La máquina de referencia detrás de ese 100 es una vCPU AMD EPYC 7713 con NVMe local, PHP 8.3, OPcache encendido.
En el puntaje de base de datos, mira en particular los INSERT/seg de una sola fila: con innodb_flush_log_at_trx_commit=1 cada uno espera una sincronización a disco, así que ese número es en realidad la latencia de fsync de tu almacenamiento. Es la diferencia más clara entre proveedores.
Aplica primero el my.cnf sugerido, y después compara dos servidores — si no, estás comparando configuraciones, no máquinas.
Qué instalar realmente
La recomendación del propio SixPreflight, para una instalación nativa sin contenedores:
- Ubuntu 26.04 LTS
- PHP 8.5
- MariaDB 11.8
PHP 8.5
El que traiga el propio archivo de tu release — 8.5 en Ubuntu 26.04, 8.4 en Debian 13, 8.3 en Ubuntu 24.04. Se dudó de 8.5 porque phpspreadsheet, vía maatwebsite/excel, declara php <8.5; eso es una declaración en composer.json y no una medición, la comprobación de plataforma de composer está desactivada, y correr el código en 8.5.4 produjo una exportación de hoja de cálculo idéntica byte a byte tanto en el árbol puro de CodeCanyon como en nuestro propio fork. Todos corren a efectos prácticos a la misma velocidad, así que esto no es una decisión de velocidad — toma el que tu release parchea por ti.
MariaDB 11.8 o 10.11
Cualquiera, la que traiga tu release — medido en la misma tienda, 11.8 frente a 10.11 es un empate. Lo que no es un empate es el sabor: ambas versiones de MySQL necesitan cambios de código antes de que 6amMart corra en ellas, porque la búsqueda de artículos activa un flag del optimizador propio de MariaDB y dos migraciones de índices leen un catálogo del servidor en un caso que MySQL no devuelve, dejando el esquema aplicado a medias.
Ubuntu 26.04
A la par con Ubuntu 24.04 y Debian 13 en velocidad — las diferencias medidas fueron menores que la discrepancia de una máquina consigo misma. Lo que los separa es la ventana de soporte: abril de 2031 para 26.04, frente a mayo de 2029 para 24.04 y agosto de 2028 para Debian 13. Esta es una decisión de ventana de soporte, no de velocidad.
Qué cubren esas cifras de motores Vienen de una máquina y un conjunto de datos — el volcado de una tienda real con 66,701 pedidos — con cada motor migrado primero y los conjuntos de índices resultantes comparados hasta 460 índices, idénticos en los cinco, así que la comparación es entre motores y no entre índices faltantes. Comparan los cinco motores entre sí en esa única máquina. No son una afirmación sobre qué tan rápido es 6amMart en general.
Nada de esto dice que un sistema operativo sea más rápido que otro: las diferencias medidas entre sistemas operativos fueron menores que la variación de una sola máquina consigo misma.
Cómo se ejecuta
Nada en el paquete revisa una licencia, una cuenta ni una fecha de vencimiento, y nada en él le reporta nada a AllsWeb. Las llamadas hacia afuera que hace son todas a lugares con los que ya tratas — tu propio sitio, tu propio host SMTP, los endpoints de tokens y de geocodificación de Google — más un servicio público de eco de IP para descubrir tu propia dirección.
La razón honesta por la que existen estas comprobaciones: salieron de construir y arreglar estos servidores, y cada una es una pregunta que igual tendríamos que hacerte. Un dueño de tienda que las puede responder antes de escribirnos ahorra un día; uno que no puede obtiene un informe que le puede enviar a su hosting.
Límites honestos
Lee esto antes de confiar en el número
No puede ver lo que el servidor no le muestra
Las comprobaciones que necesitan shell_exec o /proc bajan a “no medido” en vez de adivinar. Los paneles administrados desactivan cosas distintas, así que algunas filas quedan vacías en un hosting y llenas en otro.
En un panel administrado, siete comprobaciones no tienen respuesta
open_basedir confina PHP al directorio del sitio. Eso es correcto y vale la pena conservarlo. Las filas lo dicen y quedan excluidas del puntaje.
Un “Revisar ahora” no puede ver seis de las filas del servidor web, y una de ellas es un bloqueador
La compresión, la caché de estáticos, el keep-alive en vivo, el banner del servidor, HSTS y el vencimiento del certificado se leen de una respuesta real, así que solo aparecen en una Revisión profunda — y cert_expiry está en la lista de bloqueadores. Corre la Revisión profunda antes de confiar en un resultado verde.
La herramienta se contradice sobre el disco libre
La tabla de requisitos dice que necesitas 20 GB libres; la comprobación de disco llama a 10–20 GB una advertencia y solo falla por debajo de 10. Dos respuestas a una pregunta, en la misma página.
Reporta con qué dice el servidor que está configurado
Si un panel aplica configuración en una capa que esta herramienta no puede ver, confía en la interfaz del propio panel antes que en esto. cPanel y aaPanel administran la configuración de PHP y MySQL desde su propia interfaz y pueden sobrescribir archivos editados a mano; CloudPanel y un servidor común dejan que manden los archivos de configuración. Si un ajuste se sigue revirtiendo después de un reinicio, es el panel reescribiéndolo — cámbialo desde el panel.
Los benchmarks miden esta máquina en este momento
Un vecino ruidoso hace pesimista cada número — mira la fila de carga promedio antes de sacar conclusiones.
El paso de exposición no es una prueba de penetración
Descarga una lista fija de direcciones conocidas por riesgosas desde tu propia URL y reporta qué devolvió. No busca vulnerabilidades desconocidas y no es una auditoría de código.
Una cosa de verdad no se puede probar desde un servidor
La clave de cliente de Google Maps está restringida por el referrer del navegador, así que la herramienta te puede decir que falta, o que es peligrosamente idéntica a tu clave de servidor — pero no puede verificar desde el lado del servidor una que esté correctamente restringida, y lo dice en vez de darla por aprobada.
Los conteos de filas de la tabla de tamaños son estimaciones
Vienen de information_schema. Los conteos exactos significarían un escaneo completo de cada tabla en un sitio en vivo.
Una subida enterrada más de cinco directorios por debajo de artisan recibe el modo autónomo
En silencio — la búsqueda de la raíz de la aplicación se detiene a los cinco niveles.
Ante todo es un verificador
El escaneo en sí no cambia nada. Cuatro superficies del paquete escriben cuando presionas su botón, y bin/setup-6ammart.php aplica cambios cuando lo corres con --apply. Las cinco están listadas arriba.
¿Es seguro en una tienda en vivo?
Sí, y esta es exactamente la razón.
Los sondeos sobre datos reales son de solo lectura por diseño
Cada sondeo pasa por un único método query() que rechaza todo lo que no empiece con SELECT, EXPLAIN, SHOW o WITH — y no hay ningún camino de código en esa clase que pueda emitir INSERT, UPDATE, DELETE, ALTER, CREATE o DROP, que es la garantía que de verdad sostiene la promesa. La sesión se pone en TRANSACTION READ ONLY donde el servidor lo soporta, así que hasta un error sería rechazado por la base de datos y no por este código. Cada sentencia lleva un límite de 15 segundos del lado del servidor, así que un sondeo contra una tabla inesperadamente enorme no se puede quedar reteniendo recursos — y un sondeo que lo supera se reporta como “demasiado lento”, que en sí mismo es el hallazgo. Verificado: los conteos de filas y SUM(order_amount) son idénticos antes y después.
El benchmark de base de datos nunca toca una tabla de la aplicación
Cada objeto que crea se llama zz_preflight_bench_<random> con un sufijo aleatorio nuevo en cada corrida; comprueba que el nombre esté libre antes de crear nada y aborta en vez de tocar una tabla existente; ninguna sentencia suya puede nombrar una tabla que no haya creado; la limpieza está condicionada a que la tabla se haya creado de verdad, corre en un bloque finally y en un manejador de apagado, y confirma en lotes chicos para que nada retenga un bloqueo largo. Verificado: los conteos de filas de pedidos y de artículos son idénticos antes y después, y ninguna tabla zz_preflight_ sobrevive a la corrida.
El alcance es la tabla, no la base de datos, y esa diferencia es toda la promesa
Nunca lee ni escribe en ninguna tabla de la aplicación — esa es la redacción del propio README y es la correcta. El benchmark crea y borra una tabla propia dentro de la base de datos de la aplicación, con un nombre que él genera, y la vuelve a eliminar; nada más en esa base de datos se toca.
Dentro de su propia carpeta escribe una sola cosa
preflight/history/, un archivo por escaneo guardado. Esos archivos describen en detalle las debilidades del servidor, así que cada uno se llama .json.php y empieza con una sentencia exit de PHP — pedido por HTTP, el servidor web lo ejecuta, se detiene de inmediato, y no devuelve nada. Eso también se sostiene en nginx, que ignora .htaccess.
¿Tienes una lista en rojo y no tienes tiempo?
Envíanos el informe exportado. Instalamos, configuramos y te entregamos 6amMart en tu propio servidor, con un ingeniero senior aprobando la entrega.
¿Servidor listo y la tienda sigue lenta?
SixPreflight te dice si el servidor está listo. Si la que está lenta es la tienda, eso es la aplicación y no el servidor — y es lo que el servicio de instalación de 6amMart ahora entrega encima de la última versión de 6amMart: la build de 6amMart optimizada por AllsWeb midió de 10× a 22× más rápido — 90–95% más rápido — en todas las pantallas que ve el cliente, medido en el servidor en vivo, con el CDN evitado.
Preguntas frecuentes
Preguntas que la gente hace de verdad
¿Cómo sé si mi servidor está listo para 6amMart?
Corre SixPreflight en él. Tiene 163 comprobaciones sobre hardware, PHP, la aplicación, .env, permisos, el servidor web, la caché, la base de datos, la exposición pública y cada servicio externo. Una Revisión profunda en una instalación de 6amMart corre todo el conjunto disponible para ella — 160 comprobaciones distintas, y no más de 157 filas en una máquina real que corre un solo servidor web; un “Revisar ahora” rápido corre 123, no más de 120 en esa misma máquina, saltándose las 12 comprobaciones de exposición, las 21 de servicios y las seis filas del servidor web que necesitan una respuesta en vivo. En cualquier caso termina en una sola frase, una calificación con letra A–F, y una lista ordenada de qué corregir primero.
¿SixPreflight cambia algo en mi servidor?
El escaneo no. Nunca lee ni escribe una tabla de la aplicación, y nunca envía correo ni SMS a nadie. Cuatro superficies sí escriben cuando presionas su botón: la página de Registros de error puede truncar un archivo de log, la página de Alerta de pedido de prueba envía un push real a un dispositivo real, el benchmark opcional de base de datos crea y borra su propia tabla, y poner una contraseña reescribe el config.php de la propia herramienta. El paquete también trae bin/setup-6ammart.php, que aplica cambios a propósito cuando lo corres con --apply.
¿Es seguro correrlo en una tienda en vivo que está recibiendo pedidos?
Sí. Los sondeos de base de datos son de solo lectura por diseño — el método query() rechaza todo lo que no empiece con SELECT, EXPLAIN, SHOW o WITH, no hay ningún camino de código en esa clase que pueda emitir una escritura, y la sesión corre en TRANSACTION READ ONLY donde se soporta. El benchmark opcional trabaja solo sobre una tabla que él mismo crea con un nombre aleatorio, y la elimina en un bloque finally y en un manejador de apagado. Los dos se verificaron comparando los conteos de filas y SUM(order_amount) antes y después.
¿Necesito 6amMart para usarlo?
No. Detecta qué está mirando. En un servidor común sin ninguna aplicación igual revisa el hardware, PHP, el servidor de base de datos, el servidor web, los permisos y la exposición — aunque las 14 comprobaciones de .env, las 12 de la aplicación Laravel, las 9 de la plataforma 6amMart y las 5 de tiempo real no tienen nada que leer, dejando solo la fila de perfil del paso de la aplicación. En cualquier aplicación Laravel, todo lo relativo al servidor sigue aplicando y las comprobaciones específicas de 6amMart se saltan en vez de adivinarse. En 6amMart, corre cada comprobación que puede correr.
¿Qué puntaje necesito antes de salir en vivo?
90 o más es una A — listo para producción. Por debajo de eso, lee primero los bloqueadores: un solo bloqueador limita el puntaje a 74 por muy bien que esté todo lo demás, dos lo limitan a 54, tres o más a 34. Incluso sin bloqueadores, una fila roja te limita a 88. Los bloqueadores son las cosas que impiden que la tienda venda — ningún método de pago utilizable, el correo fallando, la base de datos inalcanzable, .env legible por la web, un certificado que vence dentro de 14 días. Corre una Revisión profunda antes de confiar en el número: esa última, y otras cinco filas del servidor web, no se miden en absoluto en una revisión rápida.
¿Por qué algunas filas dicen “no se puede leer desde aquí”?
Porque tu panel de hosting confina PHP al directorio de tu propio sitio, lo cual es correcto y vale la pena conservar — así que /proc, /etc/os-release, la configuración de nginx y la del pool de php-fpm de verdad no se pueden leer. Siete comprobaciones se quedan entonces sin respuesta. Se reportan con honestidad y quedan excluidas por completo del puntaje, así que un servidor bien cerrado nunca es castigado por estar bien cerrado.
¿Funciona en cPanel, aaPanel, CloudPanel o un VPS común?
Sí — ese es su mercado principal. Reconoce cPanel, aaPanel, CloudPanel, DirectAdmin, Plesk, CWP y un servidor común, y da comandos y rutas de instalación por panel. Vale la pena saberlo: cPanel y aaPanel administran la configuración de PHP y MySQL desde su propia interfaz y pueden sobrescribir archivos editados a mano, así que si un ajuste se sigue revirtiendo después de un reinicio, cámbialo desde el panel.
¿Solo me dice qué está mal, o lo puede corregir?
Las dos cosas, y la mitad que corrige es opcional. El tablero te pide que hagas cada cambio a mano primero, porque quien hace un cambio entiende qué cambió. Cuando eso no es práctico, bin/setup-6ammart.php hace el mismo trabajo desde la línea de comandos: corrida en seco por defecto, --check para reportar, --apply para actuar. Aplica solo las entradas del catálogo marcadas como seguras de automatizar — 40 de las 84 entradas publicadas — y para el resto pregunta o imprime, incluso con --yes.
Uso SixPanel. ¿Necesito descargar esto?
No. SixPanel monta SixPreflight dentro de la tienda y lo muestra como la página de Revisión de la tienda del panel. En ese modo quita los bloques para pegar de todo lo que administra el panel — el servidor web, PHP, la configuración de la base de datos, cron, el worker de la cola, el certificado — y señala la página del panel que es dueña de cada ajuste, porque un valor pegado a mano ahí se pierde en el siguiente despliegue. Conserva todas las comprobaciones a nivel de aplicación.
¿Qué versión de PHP y de base de datos debería instalar realmente?
Ubuntu 26.04 LTS, y después lo que traiga su propio archivo — PHP 8.5 y MariaDB 11.8 — para una instalación nativa. Se dudó de PHP 8.5 porque una dependencia declara un límite por debajo, pero ese límite es una declaración y no una medición: correr el código en 8.5.4 dio una exportación de hoja de cálculo idéntica byte a byte en el árbol puro de CodeCanyon y en nuestro fork. Todas las versiones de PHP y de MariaDB medidas corrieron a efectos prácticos a la misma velocidad, así que nada de esto es una decisión de velocidad. Lo que sí es real es el sabor: ambas versiones de MySQL necesitan cambios de código antes de que 6amMart corra en ellas, porque la búsqueda de artículos activa un flag del optimizador propio de MariaDB y dos migraciones de índices leen un catálogo del servidor en un caso que MySQL no devuelve.
¿Puedo conectar el resultado a mi propio tablero?
Sí. ?api=findings devuelve la última revisión guardada como JSON por HTTP con autenticación Basic, con una versión de contrato estable. Nunca inicia un escaneo, y el contenido lleva run.age_seconds para que tu tablero pueda decir “esta lectura tiene dos semanas” en vez de presentar noticias viejas como actuales.
Sube una carpeta. Ábrela en un navegador. Obtén una respuesta.
Siempre la versión actual, corriendo en tu propio servidor. Primero lee, y te dice qué no pudo medir en vez de adivinar.
Nada en el paquete revisa una licencia, una cuenta ni una fecha de vencimiento, y nada en él le reporta nada a AllsWeb.