📋 Requisitos del Sistema
🔧 API Limbo (Backend)
- PHP 8.2+ con extensiones: gd, intl, pdo_mysql, redis
- MySQL 8.4+ o MySQL 8.0 compatible
- Redis 7+ para caching y colas
- Composer 2.0+ para gestión de dependencias
- Nginx/Apache con mod_rewrite habilitado
🎨 Component-Limbo (Frontend)
- Node.js 18+ para desarrollo/build
- NPM/Yarn/PNPM package manager
- Navegadores: Chrome 90+, Firefox 88+, Safari 14+
- React 19 (incluido en UMD, opcional en ESM)
🔧 Instalación API Limbo
1
Clonar/Descargar Proyecto
bash
git clone git@github.com:Lefebvre-El-Derecho-SA/api-limbo.git
# o #
git clone https://github.com/Lefebvre-El-Derecho-SA/api-limbo.git
2
Instalar Dependencias
bash
composer install
# Para producción: composer install --no-dev --optimize-autoloader
3
Configurar Variables de Entorno
Copia el archivo de ejemplo y configura las variables:
bash
cp .env.example .env
Edita el archivo .env con tus configuraciones:
env
# Database
DATABASE_URL="mysql://user:password@127.0.0.1:3306/limbo?serverVersion=8.4"
# Redis
REDIS_URL="redis://127.0.0.1:6379"
# Storage
LIMBO_STORAGE_PATH="%kernel.project_dir%/var/limbo"
# Security
LIMBO_SIGNING_SECRET="your-super-secret-signing-key"
LIMBO_JWT_HMAC_SECRET="your-jwt-secret-key"
# Atenea Integration
ATENEA_BASE_URL="https://atenea.lefebvre.es"
ATENEA_TOKEN="your-atenea-token"
4
Configurar Base de Datos
bash
# Crear base de datos
php bin/console doctrine:database:create
# Ejecutar migraciones
php bin/console doctrine:migrations:migrate --no-interaction
# Crear usuario administrador inicial
php bin/console app:create-admin-user admin admin
5
Configurar Servidor Web
nginx
server {
listen 80;
server_name ${NGINX_BACKEND_DOMAIN};
root /var/www/lefebvredocker/public;
index index.php index.html index.htm;
# CDN routes - MUST come first, always pass to Symfony
location ~ ^/cdn/.+\.(js|css|map)$ {
try_files /nonexistent /index.php$is_args$args;
}
location / {
# Disable automatic trailing slash redirects
try_files $uri /index.php$is_args$args;
}
# Node modules assets - direct to PHP
location /node_modules/ {
fastcgi_pass php:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~ \.php$ {
# CORS headers removed - handled by Symfony's CorsMiddleware
# This allows dynamic CORS based on Portal configuration
# DO NOT add CORS headers here, they will conflict with Symfony
# try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass php:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~ ^/files/.+\.(css|gif|ico|jpeg|jpg|js|png|webp)$ {
try_files $uri /index.php$is_args$args;
}
# Commented out - this was blocking CDN routes
# location ~* \.(css|gif|ico|jpeg|jpg|js|png|webp)$ {
# expires max;
# log_not_found off;
# }
error_log /dev/stdout info;
access_log /var/log/nginx/project_access.log;
}
apache
<VirtualHost *:80>
ServerName ${NGINX_BACKEND_DOMAIN}
DocumentRoot /var/www/lefebvredocker/public
DirectoryIndex index.php index.html index.htm
# === Logs ===
ErrorLog /dev/stdout
CustomLog /var/log/apache2/project_access.log combined
# === Base Directory Configuration ===
<Directory /var/www/lefebvredocker/public>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
# Desactiva redirección automática de trailing slash
DirectorySlash Off
# Reescrituras Symfony
<IfModule mod_rewrite.c>
RewriteEngine On
# === CDN routes - priorizadas ===
RewriteCond %{REQUEST_URI} ^/cdn/.+\.(js|css|map)$ [NC]
RewriteRule ^.*$ /index.php [QSA,L]
# === Files estáticos en /files/... ===
RewriteCond %{REQUEST_URI} ^/files/.+\.(css|gif|ico|jpeg|jpg|js|png|webp)$ [NC]
RewriteRule ^.*$ /index.php [QSA,L]
# === Node modules: enviar al front controller ===
RewriteCond %{REQUEST_URI} ^/node_modules/ [NC]
RewriteRule ^.*$ /index.php [QSA,L]
# === Symfony front controller ===
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
</IfModule>
</Directory>
# === PHP-FPM Configuration ===
<FilesMatch \.php$>
SetHandler "proxy:fcgi://php:9000"
</FilesMatch>
# === Seguridad ===
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
# === Favicon & Robots ===
<LocationMatch "^/(favicon\.ico|robots\.txt)$">
ErrorDocument 404 "Not Found"
SetEnvIf Request_URI "robots\.txt$" allow_all
<If "%{env:allow_all}">
Require all granted
</If>
CustomLog /dev/null common
</LocationMatch>
</VirtualHost>
🐳 Setup Rápido con Docker
Para desarrollo local, usa Docker Compose:
1
Iniciar Servicios
bash
docker-compose build && docker-compose up -d
2
Configurar Aplicación
bash
# Instalar dependencias
docker-compose exec php composer install
# Configurar base de datos
docker-compose exec php php bin/console doctrine:database:create
docker-compose exec php php bin/console doctrine:migrations:migrate --no-interaction
# Crear usuario admin
docker-compose exec php php bin/console app:create-admin-user admin admin
3
¡Listo!
En principio la API estará disponible en (comprueba el puerto que hayas configurado):
- Frontend: http://localhost
- API Docs: http://localhost/api/doc
- Dashboard: http://localhost/admin
🎨 Instalación Component-Limbo
Elige el método según tu stack tecnológico:
✅ Verificación de Instalación
Comprueba que todo funciona correctamente:
API Limbo
Visita /api/doc y verifica que las API References funcionan correctamente.
Component-Limbo
Crea un HTML simple para verificar que el component carga tras la importacion del js y css:
<div id="limbo-test"></div>
<script>
Limbo.create({
container: "#limbo-test",
mode: "embed"
});
</script>
Base de Datos
Verifica que las tablas se crearon correctamente:
php bin/console doctrine:schema:validate
Redis & Workers
Inicia los workers para procesamiento asíncrono:
php bin/console messenger:consume async_low -vv