Requisitos de Software
PHP
PHP 8.2 o superior es obligatorio. Laravel 12 requiere PHP 8.2+.
# Verificar versión de PHP
php -v
# PHP 8.2.0 o superior
Extensiones PHP requeridas:
sudo apt install php8.2-cli php8.2-fpm php8.2-mysql \
php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip \
php8.2-gd php8.2-intl php8.2-bcmath php8.2-soap
Extensiones críticas para SUNAT:
php-soap - Comunicación SOAP con SUNAT
php-xml - Generación de XML UBL 2.1
php-zip - Procesamiento de archivos CDR
php-curl - API REST GRE
php-openssl - Firma digital de XMLs
Composer
# Verificar Composer
composer --version
# Composer version 2.0.0 o superior
Si no tienes Composer instalado:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
Node.js y npm
Node.js 18 o superior requerido para Vite 7 y React 19.
# Verificar versiones
node -v # v18.0.0 o superior
npm -v # 9.0.0 o superior
Instalar Node.js:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
Base de Datos
MySQL 8.0 o superior
# Verificar MySQL
mysql --version
# mysql Ver 8.0.x
El sistema está diseñado para MySQL. SQLite se usa solo para testing.
Instalar MySQL:
sudo apt update
sudo apt install mysql-server mysql-client
sudo mysql_secure_installation
Configuración MySQL recomendada:
[mysqld]
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_allowed_packet=64M
innodb_buffer_pool_size=256M
Git
git --version
# git version 2.x.x
Dependencias PHP (composer.json)
Dependencias de Producción
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/sanctum": "^4.2",
"laravel/tinker": "^2.10.1",
// Integración SUNAT
"greenter/lite": "*",
"greenter/xmldsig": "*",
"greenter/gre-api": "^1.0",
// Generación de documentos
"mpdf/mpdf": "^8.2",
"phpoffice/phpspreadsheet": "1.29",
"chillerlan/php-qrcode": "^5.0"
}
}
Descripción de paquetes clave:
- greenter/lite: Biblioteca PHP para generación XML UBL 2.1 (facturas, boletas, notas)
- greenter/xmldsig: Firma digital de XMLs con certificado
- greenter/gre-api: Cliente API REST para Guías de Remisión Electrónica (GRE)
- mpdf/mpdf: Generación de PDFs (facturas, reportes) con soporte UTF-8
- phpoffice/phpspreadsheet: Exportación a Excel (reportes financieros, inventarios)
- chillerlan/php-qrcode: Códigos QR en facturas (enlace a SUNAT)
- laravel/framework: Framework Laravel 12
- laravel/sanctum: Autenticación API con tokens Bearer
- laravel/tinker: REPL para interactuar con la aplicación
Dependencias de Desarrollo
{
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
"laravel/pint": "^1.24",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpunit/phpunit": "^11.5.3"
}
}
Dependencias JavaScript (package.json)
{
"devDependencies": {
"vite": "^7.0.7",
"laravel-vite-plugin": "^2.0.0",
"@vitejs/plugin-react": "^5.1.1",
"tailwindcss": "^4.0.0",
"@tailwindcss/vite": "^4.0.0",
"axios": "^1.11.0",
"concurrently": "^9.0.1"
}
}
Dependencias React
{
"dependencies": {
// Core
"react": "^19.2.0",
"react-dom": "^19.2.0",
// Data Management
"@tanstack/react-query": "^5.90.21",
"@tanstack/react-table": "^8.21.3",
"zustand": "^5.0.11",
// UI Components
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-select": "^2.2.6",
"lucide-react": "^0.554.0",
// Utilities
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"tailwind-merge": "^3.4.0",
// Features
"recharts": "^3.7.0",
"sweetalert2": "^11.26.17",
"quill": "^2.0.3",
"html2canvas": "^1.4.1",
"jspdf": "^4.0.0"
}
}
Descripción de librerías:
- React 19: Última versión con mejoras de performance
- TanStack Query: Data fetching, caching, sincronización con backend
- Zustand: State management ligero
- Radix UI: Componentes primitivos accesibles (Dialog, Select, Dropdown)
- Lucide React: Sistema de iconos modernos
- Tailwind CSS 4: Utility-first CSS con JIT compiler
- TanStack Table: DataTables con sorting, filtering, pagination
- Recharts: Gráficos para dashboard (ventas, utilidades)
- SweetAlert2: Modales de confirmación
- Quill: Editor WYSIWYG para notas
- jsPDF + html2canvas: Generación PDF client-side
Requisitos de Hardware
Desarrollo
Mínimo
- CPU: 2 cores
- RAM: 4 GB
- Disco: 10 GB SSD
- Sistema: Linux/macOS/Windows
Recomendado
- CPU: 4 cores
- RAM: 8 GB
- Disco: 20 GB SSD
- Sistema: Ubuntu 22.04 LTS
Producción
Mínimo
- CPU: 2 cores @ 2.4 GHz
- RAM: 4 GB
- Disco: 50 GB SSD
- Ancho de banda: 10 Mbps
Recomendado
- CPU: 4 cores @ 3.0 GHz
- RAM: 8 GB
- Disco: 100 GB SSD
- Ancho de banda: 50 Mbps
El espacio en disco debe considerar:
- XML de comprobantes (~5 KB cada uno)
- CDR de SUNAT (~2 KB cada uno)
- PDFs generados
- Backups de base de datos
- Logs del sistema
Requisitos de Red
Puertos Requeridos
# Desarrollo
8000 # Laravel serve
5173 # Vite HMR
3306 # MySQL
# Producción
80 # HTTP
443 # HTTPS
3306 # MySQL (solo localhost, no expuesto)
Acceso a Endpoints SUNAT
El servidor debe poder acceder a:
https://e-beta.sunat.gob.pe
https://api-seguridad-test.sunat.gob.pe
https://api-cpe-test.sunat.gob.pe
https://e-factura.sunat.gob.pe
https://e-guiaremision.sunat.gob.pe
https://api-seguridad.sunat.gob.pe
https://api-cpe.sunat.gob.pe
Asegúrate que el firewall permite conexiones HTTPS salientes a dominios de SUNAT.
Requisitos SUNAT
Certificado Digital
Obtener certificado
Debes obtener un certificado digital de una entidad certificadora autorizada por SUNAT:
- eCert (Gobierno Digital)
- Certicamara
- Digicert
Formato requerido
El certificado debe estar en formato PEM:-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Convertir desde PFX
Si tienes un archivo .pfx/.p12:# Extraer certificado
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out cert.pem
# Extraer clave privada
openssl pkcs12 -in certificado.pfx -nocerts -nodes -out key.pem
# Combinar en un solo archivo
cat cert.pem key.pem > certificado-completo.pem
Credenciales SOL
Para producción, necesitas:
- RUC de la empresa
- Usuario SOL (formato:
{RUC}{usuario} ej: 20123456789ADMINPE)
- Clave SOL
Estas credenciales se obtienen en SUNAT Operaciones en Línea.
Credenciales GRE (Guías)
Para emitir guías de remisión electrónicas:
- Client ID OAuth2
- Client Secret OAuth2
Se configuran en el portal de SUNAT → Guía de Remisión Electrónica.
Verificar Instalación
Usa este script para verificar requisitos:
#!/bin/bash
echo "=== Verificación de Requisitos ==="
# PHP
echo -n "PHP 8.2+: "
php -v | grep -q "PHP 8.2" && echo "✅" || echo "❌"
# Composer
echo -n "Composer: "
composer --version &>/dev/null && echo "✅" || echo "❌"
# Node.js
echo -n "Node.js 18+: "
node -v | grep -qE "v(1[8-9]|[2-9][0-9])" && echo "✅" || echo "❌"
# MySQL
echo -n "MySQL 8.0+: "
mysql --version | grep -q "8.0" && echo "✅" || echo "❌"
# Extensiones PHP
echo "\nExtensiones PHP:"
for ext in soap xml zip curl openssl mbstring; do
echo -n " php-$ext: "
php -m | grep -qi $ext && echo "✅" || echo "❌"
done
Ejecuta:
chmod +x check-requirements.sh
./check-requirements.sh
Próximos Pasos
Configuración
Configurar archivo .env y parámetros de la aplicación
Base de Datos
Setup de MySQL, migraciones y seeders
Certificados SUNAT
Configurar certificados digitales y credenciales SOL
Inicio Rápido
Instalación rápida con composer setup