Qué cambia la versión v1.17.0 para uso de agencias
AnythingLLM soporta el modo multiusuario desde varias versiones. La v1.17.0 (1 de octubre de 2026) refina este sistema introduciendo un tercer rol — Manager — que puede crear espacios de trabajo, invitar usuarios y gestionar documentos sin acceder a los ajustes del sistema como claves API o configuración del LLM. Para una agencia, este rol permite delegar la administración de un cliente a un gestor de proyecto sin exponer toda la infraestructura. La diarización de reuniones ahora se apoya en Nemotron 3 para el reconocimiento del hablante y en Parakeet Redux para la transcripción — dos modelos ejecutables localmente en un VPS con GPU, o delegables a una API de Nvidia. Google Vertex AI ya estaba disponible desde la v1.16.2 (22 de septiembre de 2026) como proveedor de LLM configurable directamente desde la interfaz, sin parchear manualmente el archivo de configuración. Estas incorporaciones recientes hacen de la combinación v1.16.2 + v1.17.0 la configuración más completa para un uso multicliente estructurado.
Requisitos previos antes de empezar
- VPS con al menos 4 GB de RAM — 2 vCPU / 4 GB para APIs cloud, 4 vCPU / 8 GB si usas un modelo de embedding local o Parakeet Redux
- 20 GB de disco SSD — los vectores de LanceDB y la caché de documentos crecen con el corpus; deja margen
- Docker y Docker Compose v2 — verifica con
docker compose version(sin guion); la v1 (con guion) no soporta todos los healthchecks - Un subdominio dedicado — por ejemplo
chat.your-domain.com; el puerto 3001 no debe exponerse directamente al público - Un proxy inverso activo — Nginx o Caddy para TLS con Let's Encrypt y límites de tamaño de subida de documentos
- Una clave API de LLM — OpenAI, Anthropic, Vertex AI o un Ollama local ya en ejecución en el VPS
- El puerto 3001 libre — AnythingLLM lo usa por defecto; comprueba con
ss -tlnp | grep 3001antes de lanzar
Desplegar AnythingLLM v1.17.0 con Docker Compose
Crear la estructura de directorios y ajustar permisos
Conéctate por SSH y crea el directorio de trabajo con
mkdir -p /opt/anythingllm/storage. AnythingLLM ejecuta con UID 1000 dentro del contenedor; sin corregir permisos, el volumen rechaza escrituras en el primer arranque. Aplicachown -R 1000:1000 /opt/anythingllm/storage. Si usastechmod -R 777, funciona pero amplía el acceso innecesariamente — prefiere elchownespecífico.Redactar el archivo docker-compose.yml
Crea
/opt/anythingllm/docker-compose.ymlcon el siguiente contenido. El servicio se llamaanythingllm, imagenmintplexlabs/anythingllm:latest,restart: unless-stopped. Volúmenes:./storage:/app/server/storage. Puertos:3001:3001(ciérralo en el firewall, solo el proxy inverso accede). Variables de entorno en la secciónenv_file: .env. Red: crea una redproxycompartida con tu proxy inverso para evitar exponer el puerto 3001 en la interfaz pública.Redactar el archivo .env
Crea
/opt/anythingllm/.envcon al menos estas tres variables.JWT_SECRET: una cadena aleatoria de al menos 32 caracteres, generada conopenssl rand -hex 32— no la cambies nunca tras el primer arranque, todos los tokens de sesión quedarán invalidados.STORAGE_DIR:/app/server/storage(debe coincidir con la ruta objetivo del volumen).SERVER_PORT:3001. Añade después las variables de tu proveedor LLM, por ejemploLLM_PROVIDER=openaiyOPEN_AI_KEY=sk-...para OpenAI, oLLM_PROVIDER=geminiyGEMINI_API_KEY=...para Vertex AI mediante el adaptador Gemini.Arrancar el contenedor y verificar los logs
Desde
/opt/anythingllm, ejecutadocker compose up -d. Espera 30 segundos y verifica que el servicio escucha condocker compose logs --tail=50. Debes ver la líneaServer started on port 3001. Si el log muestraEACCES: permission denied, mkdir '/app/server/storage/...', elchowndel paso 1 no se aplicó a la ruta correcta — repite el paso 1 y luegodocker compose restart.Configurar el proxy inverso y obtener el certificado TLS
Con Nginx, crea un vhost que proxy
https://chat.your-domain.comhaciahttp://127.0.0.1:3001. Añadeclient_max_body_size 100men el bloqueserverpara permitir subir PDFs grandes. Solicita el certificado concertbot --nginx -d chat.your-domain.com. Con Caddy, la directivareverse_proxy localhost:3001es suficiente, el TLS es automático.Crear la cuenta de administrador en el primer acceso
Abre
https://chat.your-domain.comen un navegador. La interfaz te pide crear la primera cuenta de administrador — esta cuenta es la única que puede modificar las claves API, el proveedor LLM y los ajustes del sistema. Elige una contraseña segura; AnythingLLM no ofrece restablecimiento de contraseña por email en modo autoalojado sin configuración SMTP adicional.Activar el modo multiusuario e invitar a un segundo usuario
En la interfaz Admin, ve a Settings → Security → activa Multi-user mode. Aparece un botón Invite User en el menú de usuarios. Introduce el email, elige el rol (Default o Manager) y copia el enlace de invitación generado. El rol Manager puede gestionar espacios de trabajo y documentos; el rol Default solo accede a los espacios de trabajo asignados.
Crear un espacio de trabajo aislado y asignarlo a un usuario
Desde el panel, haz clic en New Workspace y nómbralo (por ejemplo
Client Dupont). Arrastra tus PDFs al espacio de trabajo y haz clic en Save & Embed para iniciar la vectorización. Una vez completado el embedding, ve a los ajustes del espacio → Manage Users y añade solo los usuarios autorizados. Los usuarios no asignados no verán este espacio de trabajo.Configurar Google Vertex AI como proveedor LLM
En Settings → LLM Provider, selecciona Google Gemini (que usa la API de Vertex AI bajo el capó mediante el adaptador nativo disponible desde la v1.16.2). Introduce tu clave de API de Google (
GEMINI_API_KEY) y elige el modelo. Si prefieres autenticación con cuenta de servicio de GCP, exportaGOOGLE_APPLICATION_CREDENTIALShacia la ruta del archivo JSON en tu.envy reinicia el contenedor condocker compose restart.Actualizar sin perder datos
Para actualizar a una versión superior, detén el contenedor con
docker compose down, modifica la etiqueta de la imagen endocker-compose.yml(ejemplo:mintplexlabs/anythingllm:v1.17.0), luego ejecutadocker compose pull && docker compose up -d. Tus datos están en./storagemontado como volumen: sobreviven a la actualización. Revisa los logs tras el reinicio para confirmar que ninguna migración de esquema ha fallado.
Fija una etiqueta de versión específica en tu docker-compose.yml en lugar de usar la etiqueta latest. El comando docker image ls mintplexlabs/anythingllm te muestra la versión descargada actualmente. Así, una actualización solo se aplica cuando tú lo decides, y puedes hacer rollback cambiando únicamente la etiqueta y ejecutando docker compose up -d de nuevo.
Gestión de espacios de trabajo y roles en la práctica
Una vez activado el modo multiusuario, la interfaz Admin expone tres vistas distintas: Users (lista de cuentas, roles, estado activo), Workspaces (lista global con recuento de documentos y conversaciones) e Invites (enlaces de invitación pendientes). Para una agencia que gestiona diez clientes, la buena práctica es crear un workspace por cliente, asignar un usuario con rol Manager por cliente, y mantener a los colaboradores en rol Default con acceso limitado a los espacios de trabajo que les correspondan. El rol Manager no puede ver las claves API ni cambiar el proveedor LLM: este aislamiento evita que un cliente observe la configuración de otro. Las conversaciones permanecen en el workspace — no migran al mover un documento entre workspaces. Nombra tus workspaces de forma explícita desde el principio: renombrar un workspace no cambia las rutas de almacenamiento internas.
Hacer copias de seguridad y restaurar la instancia
Todo el estado de AnythingLLM cabe en el volumen ./storage: la base de datos vectorial LanceDB, los metadatos de los documentos, la configuración de la instancia y el historial de conversaciones. Una copia de seguridad consiste en archivar esta carpeta mientras el contenedor está detenido, o usar rsync hacia un almacenamiento remoto mientras el contenedor sigue en ejecución — LanceDB tolera las lecturas concurrentes. Para copias programáticas, añade un servicio cron en tu compose que ejecute tar -czf /backup/anythingllm-$(date +%Y%m%d).tar.gz /opt/anythingllm/storage. La restauración sigue el camino inverso: copia el archivo en ./storage respetando los permisos 1000:1000, luego docker compose up -d. El .env contiene el JWT_SECRET: guarda una copia por separado y cifrada, ya que perderlo invalida todas las sesiones activas y los tokens de API.
Resolución de errores: problemas reales en el montaje
Estos son los cinco errores más frecuentes y documentados al desplegar AnythingLLM v1.17.0 en un VPS, con el mensaje exacto y la corrección aplicada. Primer error: EACCES: permission denied, mkdir '/app/server/storage/vector-cache' al arrancar el contenedor. Causa: la carpeta storage pertenece a root pero el contenedor ejecuta con UID 1000. Corrección: chown -R 1000:1000 /opt/anythingllm/storage y luego docker compose restart. Segundo error: address already in use :::3001 en los logs. Causa: otro servicio ocupa el puerto. Corrección: ss -tlnp | grep 3001 para identificar el proceso conflictivo, luego detenerlo o cambiar SERVER_PORT en .env. Tercer error: Invalid JWT secret — all sessions invalidated tras un reinicio. Causa: se modificó JWT_SECRET. Corrección: restaura el valor original o pide a los usuarios que vuelvan a iniciar sesión. Cuarto error: subidas de PDF bloqueadas a 1 MB pese a la configuración. Causa: client_max_body_size definido en el bloque http de Nginx pero no en el bloque server del vhost — gana el más específico. Verifica con nginx -T | grep client_max_body_size. Quinto error: el workspace no devuelve respuestas con fuentes tras el embedding. Causa: el modelo de embedding de la ingesta difiere del activo. Corrección: elimina los documentos, cambia el modelo de embedding y vuelve a ingerir.
AnythingLLM frente a alternativas RAG autoalojadas
Desplace la tabla
| Criterio | AnythingLLM v1.17.0 | Open WebUI | LibreChat | PrivateGPT |
|---|---|---|---|---|
| RAG documental integrado | Sí — PDF, Word, URL, Notion, GitHub | Importación básica sin pipeline RAG | Via plugin RAG (config manual) | Sí — optimizado para documentos confidenciales |
| Modo multiusuario | Admin / Manager / Default — soportado de forma nativa, rol Manager refinado en v1.17.0 | Gestión de usuarios básica | Sí con roles por conversación | No — monousuario por defecto |
| Espacios de trabajo aislados por cliente | Sí — aislamiento nativo por workspace | No — conversaciones compartidas | Limitado — por conversación únicamente | No |
| Proveedores LLM soportados | Más de 20 (Ollama, OpenAI, Vertex AI, Anthropic…) | Ollama + compatibles OpenAI | OpenAI, Azure, Anthropic, Ollama… | Ollama y compatibles con OpenAI |
| Diarización de reuniones | Sí — Nemotron 3 + Parakeet Redux (v1.17.0) | No | No | No |
| RAM mínima (API cloud) | ~512 MB | ~256 MB | ~384 MB | ~512 MB |
| Constructor de agentes IA sin código | Sí | No | No | No |
| Licencia | MIT | MIT | MIT | Apache 2.0 |
Para ir más lejos con tu infraestructura IA
AnythingLLM v1.17.0 cubre el caso de uso RAG multicliente en un solo VPS. Si tu corpus supera varios millones de vectores, considera externalizar la base vectorial a Qdrant en un contenedor vecino — AnythingLLM lo soporta de forma nativa desde los ajustes de la instancia. Para equipos que quieren comparar interfaces antes de decidir, el artículo sobre Open WebUI, LibreChat y Dify detalla los criterios de selección según el perfil de uso. Si tus documentos están sujetos a requisitos estrictos de confidencialidad, el artículo sobre PrivateGPT explica cómo trabajar en modo completamente local sin ninguna llamada de red saliente.