Untitled static subpage: Thursday, 25 June 2026, 20:18
Date: 2026-06-25 00:00 Title: Manual Técnico — Repositorios GitHub Type: page Description: Documentación técnica de los repositorios del ecosistema KontrolesERP en GitHub
Manual Técnico — Repositorios GitHub
Organización: github.com/kontroleserp
Última actualización: 25 de junio de 2026
Visión general del ecosistema
KontrolesERP es una plataforma ERP para El Salvador construida sobre ADempiere, extendida con módulos propios de facturación electrónica (DTE) y aplicaciones PWA móviles. Todo el ecosistema corre en Docker sobre un servidor local en la red del cliente.
Internet
│
▼
Nginx Proxy Manager (NPM) ← puerto 80/443
│
├── host.kontroles.com/ → dte-worker:8080 (admin EMH)
├── host.kontroles.com/portal → kontrolesapi (index.html)
├── host.kontroles.com/monitor → kontrolesapi (monitor.html)
├── host.kontroles.com/webui/ → erp_app (ADempiere ZK, puerto 8888)
├── host.kontroles.com/rta/ → kontrolesrta_pwa (nginx)
├── host.kontroles.com/pos/ → kontrolespos_pwa (nginx)
├── host.kontroles.com/api → kontrolesapi (PHP)
├── host.kontroles.com/admin/ → dte-worker:8080
├── host.kontroles.com/files → filebrowser
├── host.kontroles.com/gerencia→ kontrolesapi (ia-gerencial.html)
├── tools.kontroles.com/ → kontrolesweb:80 (docs técnicos)
└── wiki.kontroles.com/ → kontrolesweb_user:80 (docs usuario)
Repositorios
1. kontroleserp
Propósito: Código fuente completo de ADempiere personalizado para El Salvador.
Tecnologías: Java, ZK Framework, PostgreSQL, Gradle
Tamaño: ~15,884 archivos fuente
Imagen Docker: rocarsadecv/inrocardevsuite:latest
Contenedor: erp_app (puertos 4444 y 8888)
Estructura principal:
base/ ← núcleo de ADempiere
zkwebui/ ← interfaz web ZK
migration/ ← migraciones SQL de ADempiere
JasperReports/ ← reportes .jrxml
extend/ ← personalizaciones Kontroles
docs/ ← manuales técnicos y de usuario
Qué se excluye del repo:
- Compilados (target/, *.class, *.jar, *.war)
- Secretos (*.properties, .env)
- Workflows CI/CD del upstream (.github/)
2. kontrolesapi
Propósito: Backend PHP unificado que sirve a todas las PWAs y al portal/monitor.
Tecnologías: PHP 8, Apache, JWT, PostgreSQL
Imagen Docker: rocarsadecv/kontrolesapi:latest
Contenedor: kontrolesapi (interno puerto 80, expuesto 8090)
Estructura principal:
api/router.php ← enrutador principal
modules/ ← módulos por funcionalidad
auth/handler.php
socios/handler.php
ventas/handler.php
cobros/handler.php
entregas/handler.php
inventario/handler.php
liquidaciones/handler.php
remesas/handler.php
sync/handler.php
facturacion/handler.php
monitor/handler.php
ia_gerencial/handler.php
archivos/handler.php
devices/handler.php
bancos/handler.php
caja/handler.php
catalogo/handler.php
helpers/
jwt.php
response.php
config/database.php ← excluido (credenciales)
nginx/server_proxy.conf ← routing de todas las rutas
index.html ← portal de acceso (/portal)
monitor.html ← monitor de servidores (/monitor)
ia-gerencial.html ← dashboard IA (/gerencia)
erp-gate.html ← control de dispositivos ERP
JWT: kontroles_jwt_2024 (variable de entorno JWT_SECRET)
Clave monitor: kontroles_monitor_2024
3. firmadorDtes
Propósito: Firma y envío de Documentos Tributarios Electrónicos (DTE) al Ministerio de Hacienda de El Salvador.
Tecnologías: Java, Spring Boot, Maven/Ant, PostgreSQL
Imagen Docker: rocarsadecv/dte-worker:latest
Contenedor: dte-worker (puertos 8080 admin, 8585 API)
Tipos de DTE soportados:
| Código | Tipo | Estado |
|---|---|---|
| 01 | Factura (FAC) | Certificado ✓ |
| 03 | Comprobante Crédito Fiscal (CCF) | Certificado ✓ |
| 04 | Nota de Remisión | Implementado |
| 05 | Nota de Débito (ND) | Implementado |
| 06 | Nota de Crédito (NC) | Implementado |
| 11 | Factura de Exportación (FEX) | Certificado ✓ |
| 14 | Factura de Sujeto Excluido (FSE) | Implementado |
Flujo de emisión:
ADempiere (ERP) → genera DTE en PostgreSQL
↓
firmadorDtes → firma con certificado .p12
↓
MH API → recibe, valida y retorna sello
↓
firmadorDtes → guarda JSON autorizado + genera PDF
↓
Email → envía al receptor
Qué se excluye del repo:
- crtsMH/ — manuales y catálogos del Ministerio de Hacienda (309 MB)
- pdfs/ — PDFs y JSONs generados en producción
- *.properties — credenciales y configuración del cliente
- target/ — compilados Java
4. kontrolesrta
Propósito: PWA para ruteadores de ventas (distribución, cobros, entregas).
Tecnologías: HTML5, CSS3, JavaScript vanilla, Service Worker, IndexedDB, WebUSB
Contenedor: kontrolesrta_pwa (nginx, puerto 3000)
Acceso: host.kontroles.com/rta/
Módulos:
| Módulo | Descripción |
|---|---|
| pedidos | Toma de pedidos offline con sincronización |
| cobros | Registro de cobros y recibos |
| entregas | Control de entregas y remesas |
| clientes | Consulta y alta de clientes |
| liquidaciones | Liquidaciones de rutas |
| dashboard | Resumen del día |
Arquitectura PWA:
- Backend: kontrolesapi (migrado desde backend propio)
- Proxy nginx: /api/ → kontrolesapi:8090 con header X-App-Source: rta
- Offline: IndexedDB + cola de sincronización
- Impresión: WebUSB para impresoras térmicas
5. kontrolespos
Propósito: PWA para punto de venta (POS).
Tecnologías: HTML5, CSS3, JavaScript vanilla, Service Worker
Contenedor: kontrolespos_pwa (nginx, puerto 3001)
Acceso: host.kontroles.com/pos/
Estado en GitHub: rama review/inicial — pendiente limpieza de credenciales
6. kontrolesweb
Propósito: CMS flat-file para la documentación técnica y de usuario del ecosistema KontrolesERP.
Tecnologías: HTMLy v3 (PHP 8.2, Apache), Markdown, tema Doks
Imagen Docker: rocarsadecv/kontrolesweb:latest
Dos instancias del mismo contenedor:
| Contenedor | Puerto | Dominio | Audiencia |
|---|---|---|---|
kontrolesweb |
8099 | tools.kontroles.com |
Equipo técnico — todos los manuales |
kontrolesweb_user |
8100 | wiki.kontroles.com |
Usuarios finales — solo manuales de usuario |
Volumen compartido: content/static/ es el mismo directorio montado en ambos contenedores. Editar un manual actualiza ambos sitios.
Estructura del repositorio:
content/
static/ ← volumen compartido entre ambos contenedores
ecosistema.md ← página padre "Ecosistema"
ecosistema/
repositorios.md ← este manual
dte.md
dte/
firmadordtes-tecnico.md
firmadordtes-usuario.md
portal.md
portal/
portal-monitor-tecnico.md
portal-monitor-usuario.md
distribucion.md
distribucion/
distribucion-usuario.md
dispositivos.md
dispositivos/
control-dispositivos-tecnico.md
control-dispositivos-usuario.md
despliegue.md
despliegue/
guia-despliegue.md
data/
tools/frontpage/frontpage.md ← portada técnica (tools.kontroles.com)
wiki/frontpage/frontpage.md ← portada usuario (wiki.kontroles.com)
config/
tools.ini ← site_url: tools.kontroles.com
wiki.ini ← site_url: wiki.kontroles.com
users/ ← EXCLUIDO (credenciales de HTMLy)
cache/
tools/ ← caché del contenedor técnico
wiki/ ← caché del contenedor usuario
Restricción en wiki.kontroles.com (nginx bloquea con 403):
- /ecosistema/ — arquitectura y repositorios
- /despliegue/ — guía de instalación
- /dte/firmadordtes-tecnico — detalles técnicos del firmador
- /dispositivos/control-dispositivos-tecnico — API de dispositivos
- /portal/portal-monitor-tecnico — configuración del monitor
Qué se excluye del repo: config/users/, cache/**
7. despliegue_cliente
Propósito: Scripts, SQL y docker-compose para desplegar el ecosistema en servidores de clientes.
Contenido:
docker-compose.yml ← orquestación completa del cliente
kontrolesrta/ ← frontend + nginx.conf del cliente
kontrolespos/ ← frontend + nginx.conf del cliente
kontrolesweb/ ← contenido y config del cliente
reports/ ← reportes .jrxml por cliente
sql/ ← migraciones SQL por cliente
scripts/ ← build y deploy scripts
update_dte.sh ← actualiza firmadorDtes en producción
Qué se excluye:
- *.properties, .env — credenciales del cliente
- *.p12, *.pfx — certificados digitales
- *.dmp, *.dump — dumps de base de datos
- *.jar, *.war, *.tar.gz — binarios
Infraestructura del servidor
Host: 192.168.1.99
OS: Linux (Docker Engine)
Red Docker principal: postgresql_default
Red proxy: erp-docker_erp_proxy_net
Contenedores en producción
| Contenedor | Imagen | Puerto expuesto | Propósito |
|---|---|---|---|
nginx_proxy |
jc21/nginx-proxy-manager | 80, 81, 443 | Proxy inverso + SSL |
erp_app |
rocarsadecv/inrocardevsuite | 8888 | ADempiere ERP |
kontroleserp_db |
postgres:14-alpine | 5432 | Base de datos |
kontrolesapi |
rocarsadecv/kontrolesapi | 8090 | Backend PHP + portal |
dte-worker |
rocarsadecv/dte-worker | 8080, 8585 | Firmador DTE |
kontrolesrta_pwa |
nginx:alpine | 3000 | PWA Distribución |
kontrolespos_pwa |
nginx:alpine | 3001 | PWA Punto de Venta |
kontrolesweb |
rocarsadecv/kontrolesweb | 8099 | CMS Docs técnicos (tools.kontroles.com) |
kontrolesweb_user |
rocarsadecv/kontrolesweb | 8100 | CMS Docs usuario (wiki.kontroles.com) |
filebrowser |
filebrowser/filebrowser | — | Gestor de archivos |
docs_1000000 |
filebrowser/filebrowser | 8082 | Docs por empresa |
ollama |
ollama/ollama | 11434 | IA local (llama3.2) |
syncthing |
linuxserver/syncthing | 8384 | Sync de archivos |
Configuración de dominios (NPM)
| Dominio | Destino |
|---|---|
host.kontroles.com |
dte-worker:8080 → rutas múltiples vía server_proxy.conf |
tools.kontroles.com |
kontrolesweb:80 (documentación técnica completa) |
wiki.kontroles.com |
kontrolesweb_user:80 (manuales de usuario, páginas técnicas bloqueadas) |
rocarsadecv.kontroles.com |
erp_app:8888 (ADempiere ROCARSADECV) |
minegociosadecv.kontroles.com |
erp_app:8888 (ADempiere MINEGOCIOSADECV) |
Criterio de versionado en GitHub
Se incluye en git:
- Código fuente (.java, .php, .js, .css, .html)
- Recursos necesarios para compilar (.png, .jpg, .svg usados en UI)
- Configuraciones de despliegue (Dockerfile, docker-compose.yml, .conf, .ini)
- Manuales técnicos y de usuario (.md)
Se excluye de git:
- Compilados (target/, *.class, *.jar, *.war, dist/)
- Archivos generados en runtime (PDFs de DTE, JSONs autorizados, logs)
- Credenciales (*.properties, .env, config/users/, *.p12)
- Dependencias (vendor/, node_modules/)
- Documentación externa descargada (crtsMH/)