Documentación

Manual de administración

Despliegue, proteja, configure y opere Liteleaf en modo standalone o en producción.

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.