Antes de comenzar
Liteleaf está destinado a personas autenticadas y de confianza. Se requiere Docker Engine con Compose v2. Antes de invitar a otras personas, prepare un nombre DNS, un proxy inverso HTTPS, almacenamiento persistente y un destino para las copias de seguridad. El compilador LaTeX aplica límites y funciona con privilegios reducidos, pero no constituye un entorno seguro para documentos hostiles.
Elegir un perfil de implementación
Standalone
Utilice docker-compose.standalone.yml para pruebas o para un grupo muy pequeño
y de confianza. Este perfil ejecuta una réplica, SQLite y TeX Live en un solo
contenedor. No proporciona alta disponibilidad, colaboración entre réplicas ni
el aislamiento del compilador que ofrece el perfil de producción. Inícielo con
docker compose -f docker-compose.standalone.yml up -d. Utilice volúmenes con
nombre gestionados por Docker para los datos persistentes; el volumen de datos
de la aplicación debe permitir escritura al UID/GID 65532.
Producción
Utilice docker-compose.prod.yml para departamentos e instituciones. Este
perfil separa la aplicación, el compilador, PostgreSQL y Redis. Utilice
volúmenes con nombre gestionados por Docker para PostgreSQL, Redis, los datos de
la aplicación y las copias de seguridad, en lugar de rutas del host. Configure
una URL HTTPS pública, contraseñas para la base de datos y Redis, y un token del
compilador con al menos 32 caracteres aleatorios. Inicie la pila, compruebe
/health/ready localmente y dirija el proxy HTTPS al puerto HTTP configurado.
La primera cuenta creada desde el navegador será la administradora.
Variables del entorno de producción
Cree un archivo .env junto a docker-compose.prod.yml y no lo incluya en el
repositorio. Genere los secretos necesarios con:
openssl rand -base64 36
openssl rand -hex 32
openssl rand -base64 32 # TOTP key: exactly 32 decoded bytes
Utilice valores distintos para POSTGRES_PASSWORD, REDIS_PASSWORD y
LITELEAF_COMPILER_TOKEN. Configure LITELEAF_TOTP_ENCRYPTION_KEY únicamente
con el resultado base64 del último comando y consérvela de forma segura: si la
cambia, los secretos TOTP existentes dejarán de ser legibles.
| Grupo | Variables | Finalidad y punto de partida seguro |
|---|---|---|
| Obligatorias | LITELEAF_PUBLIC_URL, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, REDIS_PASSWORD, LITELEAF_COMPILER_TOKEN |
Origen HTTPS público, identidad de la base de datos, secretos aleatorios diferentes y token del compilador compartido únicamente entre la aplicación y el compilador. |
| Imágenes y puerto | LITELEAF_VERSION, LITELEAF_APP_IMAGE, LITELEAF_COMPILER_IMAGE, LITELEAF_PULL_POLICY, LITELEAF_HTTP_PORT |
Seleccionan la versión, las imágenes y el puerto del host. Mantenga fijada la etiqueta publicada para controlar las actualizaciones. |
| Conexiones | LITELEAF_DATABASE_MAX_CONNS, LITELEAF_REDIS_POOL_SIZE, LITELEAF_REDIS_PREFIX, LITELEAF_RELAY_INTERVAL, LITELEAF_RECONCILE_AFTER |
Ajuste estos valores solo después de observar la capacidad; los valores predeterminados son adecuados para una réplica de la aplicación. El prefijo aísla instalaciones compartidas de Redis. |
| Sesión e inicio de sesión | LITELEAF_SESSION_TTL, LITELEAF_LOGIN_RATE_WINDOW, LITELEAF_LOGIN_MAX_ATTEMPTS, LITELEAF_FALLBACK_LOCALE |
Controlan la duración de las sesiones, la limitación de solicitudes y el idioma predeterminado de la interfaz. |
| Compilador | LITELEAF_COMPILE_TIMEOUT, LITELEAF_COMPILER_CONCURRENCY |
El valor predeterminado es de 180 segundos y un trabajo simultáneo; auméntelo solo después de dimensionar CPU, memoria y controles contra abusos. |
| Almacenamiento y límites | LITELEAF_BLOB_ROOT, LITELEAF_BACKUP_ROOT, LITELEAF_BACKUP_MAX_UPLOAD, LITELEAF_PROJECT_ARCHIVE_COMPRESSED_MAX, LITELEAF_PROJECT_ARCHIVE_EXPANDED_MAX |
Rutas dentro de los contenedores y límites de cargas y archivos. Mantenga las raíces en volúmenes con nombre y adapte los límites al almacenamiento disponible. |
| Retención y proyectos | LITELEAF_MAX_PROJECTS_PER_USER, LITELEAF_MAX_ACTIVE_COMPILATIONS_PER_USER, LITELEAF_COMPILATION_RETENTION, LITELEAF_TRASH_RETENTION, LITELEAF_JOB_RETENTION, LITELEAF_RETENTION_INTERVAL, LITELEAF_EDITOR_AUTOSAVE_INTERVAL, LITELEAF_AUTO_COMPILE_ON_SAVE |
Cuotas, periodos de limpieza, guardado automático y comportamiento de compilación. 0 puede significar ilimitado cuando así lo documente la aplicación. |
| Integraciones opcionales | LITELEAF_OLLAMA_URL, LITELEAF_OLLAMA_MODEL, LITELEAF_OLLAMA_GENERATION_TIMEOUT, LITELEAF_OLLAMA_KEEP_ALIVE, LITELEAF_MAX_ASSISTANT_REQUESTS, LITELEAF_ASSISTANT_RATE_WINDOW, LITELEAF_GIT_ENABLED |
Habilite únicamente servicios aprobados y accesibles; deje vacía la URL de Ollama para desactivar la IA y utilice false en Git para ocultar la copia de seguridad Git. |
| Identidad y correo | LITELEAF_OIDC_ISSUER_URL, LITELEAF_OIDC_CLIENT_ID, LITELEAF_OIDC_CLIENT_SECRET, LITELEAF_OIDC_DISPLAY_NAME, LITELEAF_SMTP_ADDR, LITELEAF_SMTP_FROM, LITELEAF_SMTP_USERNAME, LITELEAF_SMTP_PASSWORD |
Inicio de sesión único y envío de recuperación de contraseña opcionales. No exponga los secretos de cliente ni de SMTP en los registros. |
| Proxy y observabilidad | LITELEAF_TRUSTED_PROXIES, LITELEAF_METRICS_TOKEN, LITELEAF_BACKGROUND_WORKERS, LITELEAF_TOTP_ENCRYPTION_KEY |
Confíe solo en direcciones de proxy bajo su control, proteja las métricas con un token y mantenga activos los procesos en segundo plano de la instancia principal. |
Valide y opere la pila con estos comandos:
docker compose -f docker-compose.prod.yml config
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f app compiler
curl --fail http://127.0.0.1:8080/health/ready
docker volume ls
Cuando la definición de Compose utiliza volúmenes con nombre, Docker los crea
durante el primer arranque. Examínelos con docker volume inspect <nombre> y
respalde los datos mediante el flujo de copias de seguridad verificado de la
aplicación, en lugar de editar directamente los archivos del volumen.
Configurar la instancia
La consola administrativa está disponible en /admin solo para administradores
globales. Utilícela para revisar el estado, las colas, el almacenamiento y la
versión instalada, así como para gestionar usuarios, roles, bloqueos, sesiones,
cuotas, proyectos, plantillas, registros de auditoría y copias de seguridad. Las
listas de usuarios están paginadas y permiten búsquedas. Una cuota heredada del
valor global utiliza NULL; el valor 0 significa que no existe límite. Las
cuotas individuales prevalecen sobre las globales, mientras que los valores de
Docker actúan como alternativa cuando no hay una configuración guardada.
Configure primero el inicio de sesión local. OIDC es opcional: registre la URL
de retorno https://your-host/auth/oidc/callback y configure el emisor, el ID
de cliente, el secreto y el nombre visible. TOTP, los códigos de recuperación,
la revocación de sesiones y el bloqueo de cuentas ofrecen protección adicional.
Mantenga los secretos en variables de entorno o en el almacén de secretos de la
instalación; la consola nunca vuelve a mostrarlos.
Integraciones y corrección
Ollama es una integración externa y opcional. Configure un endpoint HTTP(S) accesible desde el contenedor de la aplicación, elija un modelo instalado y defina las instrucciones en la configuración administrativa de IA. La administración puede probar la integración; el modelo y las instrucciones guardados prevalecen sobre los valores predeterminados del entorno. Informe a las personas usuarias de dónde se envía el texto seleccionado, de acuerdo con la política institucional.
La corrección ortográfica interactiva utiliza diccionarios de Aspell para inglés, portugués de Brasil y español. Propone reemplazos, permite añadir palabras al diccionario del proyecto y subraya los posibles errores en el editor. Asegúrese de que los tres diccionarios estén presentes en la imagen instalada. El tiempo de espera predeterminado del compilador es de 180 segundos y solo debe modificarse teniendo en cuenta la capacidad y el riesgo de abuso.
Copias de seguridad, recuperación y actualizaciones
Cree y verifique copias de seguridad antes de cada actualización. Compruebe que el servicio está preparado, inicie sesión con una cuenta no administrativa, compile un proyecto de prueba e inspeccione la auditoría. No revierta el esquema después de ejecutar las migraciones. Realice periódicamente un ensayo de restauración con datos desechables de PostgreSQL y del almacenamiento de objetos.
Los proyectos conservan revisiones manuales atribuidas y puntos de control
automáticos consolidados durante los periodos de inactividad. Las personas
pueden restaurar un estado conocido del proyecto. Cada proyecto también puede
ofrecer un origen Git autenticado y de solo lectura para un espejo en Forgejo o
Gitea; el servicio remoto programa la sincronización y Liteleaf nunca almacena
sus credenciales. Configure LITELEAF_GIT_ENABLED=false para desactivar esta
función y sus rutas.