Skip to main content

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:
my.cnf
[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

composer.json
{
  "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)

Dependencias de Desarrollo

composer.json
{
  "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)

Build Tools

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

package.json
{
  "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

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
Asegúrate que el firewall permite conexiones HTTPS salientes a dominios de SUNAT.

Requisitos SUNAT

Certificado Digital

1

Obtener certificado

Debes obtener un certificado digital de una entidad certificadora autorizada por SUNAT:
  • eCert (Gobierno Digital)
  • Certicamara
  • Digicert
2

Formato requerido

El certificado debe estar en formato PEM:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
3

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:
check-requirements.sh
#!/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

Build docs developers (and LLMs) love