Pydio Cells
¿Es Pydio Cells un sustituto o alternativa a SharePoint?
Pydio Cells la podemos usar como una alternativa gratuita a la gestión y compartición de ficheros de SharePoint.
Aunque no tiene ese gran conjunto de herramientas e integraciones de las que dispone el ecosistema de Microsoft.
Está diseñada para Equipos de trabajo, permite compartir y colaborar simplificando y acelerando el acceso, es Segura para las Organizaciones e incluye incluso una Auditoría, esta optimizado para IT es fácil de desplegar y configurar, tiene un mantenimiento y administración de la herramienta muy bajo a pesar de sus altas prestaciones y cumple con la GDPR.
Instalación
Se puede instalar y usar de forma gratuita y on-premise.
Puedes instalarlo a partir de un fichero zip de la web oficial: https://www.pydio.com/en/download
Sin, embargo, la forma muy sencilla es usando docker, mediante un fichero docker-compose.yml, en menos de 5 minutos lo tienes instalado, configurado y funcionando.
Ejemplo de fichero básico de docker-compose.yml:
services:
cells:
image: pydio/cells:latest
restart: unless-stopped
ports: ["8080:8080"]
environment:
- CELLS_INSTALL_YAML=/pydio/config/install.yml
volumes:
- cellsdir:/var/cells
- ./install-conf.yml:/pydio/config/install.yml:ro
mysql:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ChangeMe!
MYSQL_DATABASE: cells
MYSQL_USER: pydio
MYSQL_PASSWORD: ChangeMe!
volumes:
- mysqldir:/var/lib/mysql
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
volumes:
cellsdir: {}
mysqldir: {}
En la mismo directorio en el que tengas este fichero, tienes que crear uno básico para su inicio, al que tienes que poner como nombre: install-conf.yml:
# This is the minimal configuration to directly start a pre-configured server in sandbox mode.
# Simply run 'docker compose up -d', you can log in with admin/admin at https://localhost:8080
# After accepting the self-signed certificate
# Adapt to your convenience and refer to the documentation to explore further possibilities.
# WebUI Admin definition
frontendlogin: admin
frontendpassword: admin
# DB connection
dbconnectiontype: tcp
dbtcphostname: mysql
dbtcpport: 3306
dbtcpname: cells
dbtcpuser: pydio
dbtcppassword: ChangeMe!Iniciar el Servicio
Para iniciar el servicio de la aplicacion y la base de datos tan solo tienes que escribir:
docker compose up -dSe crearán 2 contenedores: pydiocells-cells-n y pydiocells-mysql-n
Para poder ejecutar comando cell en el contenedor de Pydio Cell deberás escribir lo siguiente:
docker exec -ti pydiocells-cells-1 cell <opcion> <parametros>Acceso vía Web
Para acceder vía web a la aplicacion tan solo abre en tu navegador la URL: https://localhost:8080/

Si quieres una configuración más avanzada, o incluso incluir tu propio certificado, puedes verlo en la documentación oficial: https://www.pydio.com/en/docs/administration-guides
Configuración
Esta quizás se la parte más compleja de Pydio Cells, así que en SoloConLinux te la vamos a explicar paso a paso.

Crear roles, grupos y usuarios, y gestionar permisos avanzados puede parecer intimidante, pero con esta guía, se volverá más sencillo.
Comencemos a verlo de forma detallada:
1. Crear usuarios y grupos
- Ve al panel de administración: Cells Console > People
- Para crear un usuario:
- Haz clic en Users > + User
- Define nombre, correo, contraseña y grupo (si aplica)
- Para crear un grupo:
- Ve a Groups > + Group
- Asigna un nombre y, opcionalmente, un grupo padre para jerarquías
Los grupos permiten aplicar permisos colectivos, lo que simplifica la administración.
2. Crear roles personalizados
- Dirígete a Cells Console > Roles
- Haz clic en + Role
- Configura:
- Workspaces Accesses: define si el rol puede leer, escribir o está denegado en cada workspace
- Application Pages: controla qué páginas de la app puede ver el usuario
- Application Parameters: desactiva acciones o plugins específicos
- Per-workspace Parameters: personaliza parámetros por workspace
Los roles son acumulativos: si un usuario tiene varios roles, se combinan y el último en la cadena sobrescribe los anteriores.
3. Asignar roles a usuarios y grupos
- Ve a Users > selecciona un usuario > pestaña Roles
- Haz clic en + Role y selecciona el rol deseado
- Lo mismo aplica para grupos: los roles asignados al grupo se heredan por sus miembros
El orden de aplicación es: roles de grupo padre → grupo hijo → roles definidos por el admin → rol del usuario.
4. Gestionar visibilidad entre usuarios y grupos
- Usa los Access Control Lists (ACLs) en los Workspaces:
- Ve a Cells Console > Workspaces
- Edita un workspace y ajusta los permisos por grupo o usuario
- Puedes definir acceso Read, Write, o Deny
- Para ocultar contenido entre grupos:
- Crea workspaces separados
- Asigna permisos exclusivos a cada grupo
- Usa roles para reforzar restricciones
En la página Quick Admin Tour - Pydio Documentation explica cómo se calculan los los permisos al combinar roles, grupos y ACLs, y también puede ver cómo crear workspaces con acceso restringido.
Consejo avanzado
Si necesitas que un usuario vea solo su carpeta personal y no la de otros, asegúrate de:
- Asignarle solo el workspace Personal
- Denegar acceso al workspace Common Files
- No incluirlo en grupos con acceso compartido
Para ver como se haría, vamos a realizar la configuración de usuarios, grupos y roles en Pydio Cells para una empresa ficticia que vamos a llamar "Pequeña Pyme".
Para mayor facilidad, vamos a automatizarlo vía script desde la línea de comando usando su propia herramienta:cells
Tambien vamos a ver como realizarlo usando la API REST que tiene disponible la aplicación.
Ejemplo de plantilla de configuración: “Pequeña Pyme”
Estructura/Organización de la Pyme
| Grupo | Descripción | Roles Asociados |
|---|---|---|
ventas | Equipo comercial | ventas_read, ventas_write |
soporte | Equipo técnico | soporte_read, soporte_write |
admin | Administradores del sistema | admin_full |
externos | Colaboradores externos (solo lectura) | externos_read |
Roles
| Rol | Permisos clave |
|---|---|
ventas_read | Acceso de solo lectura al workspace "Ventas" |
ventas_write | Lectura y escritura en "Ventas" |
soporte_read | Lectura en "Tickets" |
soporte_write | Lectura y escritura en "Tickets" |
admin_full | Acceso completo a toda la plataforma |
externos_read | Solo lectura en “Documentación Compartida” (Por ejemplo para algunos clientes) |
Automatización mediante CLI (Script en Bash)
Puedes usar el CLI cells para automatizar la creación de usuarios, grupos y asignación de roles.
Ejemplo de automatizacion:
#!/bin/bash
# Crear grupos
cells create group ventas
cells create group soporte
cells create group admin
cells create group externos
# Crear usuarios
cells create user --login juan --password "ventas123" --email juan@ppyme.com --group ventas
cells create user --login maria --password "soporte123" --email maria@ppyme.com --group soporte
cells create user --login carlos --password "admin123" --email carlos@ppyme.com --group admin
cells create user --login laura --password "externos123" --email laura@ppyme.com --group externos
# Asignar roles
cells acl grant-role ventas_read --subject-user juan
cells acl grant-role soporte_write --subject-user maria
cells acl grant-role admin_full --subject-user carlos
cells acl grant-role externos_read --subject-user laura
Este script puede ejecutarse desde la consola donde esté instalado cells o mediante una llamada al contenedor que lo contiene.
Automatización vía API REST
La API permite hacer todo esto, pero con llamadas HTTP.
Un ejemplo para crear un usuario:
Crear usuario vía API
curl -X POST https://your.cells.server/auth/user \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"Login": "juan",
"Email": "juan@ppyme.com",
"Password": "ventas123",
"GroupPath": "ventas"
}'
Asignar rol vía API
curl -X POST https://your.cells.server/acl/grant \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"Role": "ventas_read",
"SubjectType": "USER",
"SubjectValue": "juan"
}'
Se puede generar el token de acceso en la consola de administración o con una llamada al login (/auth/login).
El comando cells permite una gran cantidad de operaciones que permiten administrar usuarios, grupos, roles, workspaces, ACLs y mucho más desde la terminal.
Una lista organizada de los comandos más útiles sería:
Comandos comunes del CLI cells
Usuarios y grupos
cells create user— Crea un nuevo usuariocells update user— Modifica atributos de un usuariocells delete user— Elimina un usuariocells create group— Crea un grupocells delete group— Elimina un grupocells list users— Lista todos los usuarioscells list groups— Lista todos los grupos
Roles y permisos
cells create role— Crea un rol personalizadocells list roles— Muestra los roles existentescells acl grant-role— Asigna un rol a un usuario o grupocells acl revoke-role— Revoca un rol
Workspaces y ACLs
cells create workspace— Crea un nuevo espacio de trabajocells list workspaces— Lista los workspaces disponiblescells acl grant— Asigna permisos (read/write/deny) a usuarios o gruposcells acl revoke— Revoca permisos
Auditoría y monitoreo
cells list logs— Muestra registros del sistemacells list sessions— Lista sesiones activascells list activities— Muestra actividad reciente de usuarios
Configuración y sistema
cells config show— Muestra la configuración actualcells config set— Modifica parámetros del sistemacells version— Muestra la versión instaladacells status— Verifica el estado del servicio
Truco Extra
Puedes usar cells help o cells <comando> --help para ver detalles y ejemplos de uso de cada comando.
También puedes combinar comandos en scripts para automatizar tareas administrativas.
Script para Crear y Configurar una Instancia
Podemos incluso desde un simple script montar desde cero una instancia de Pydio Cells, para la empresa ficticia "Pequeña Pyme".
Parte 1: Script completo para inicialización personalizada
Este script configura:
- Grupos: ventas, soporte, admin, externos
- Roles: ventas_read, ventas_write, etc.
- Usuarios con contraseña
- Asignación de roles y creación de workspaces
Nota: Hay que tener el binariocellsinstalado y la sesión iniciada como admin (cells login)
#!/bin/bash
# Crear grupos
cells create group ventas
cells create group soporte
cells create group admin
cells create group externos
# Crear roles con permisos básicos
cells create role ventas_read
cells create role ventas_write
cells create role soporte_read
cells create role soporte_write
cells create role admin_full
cells create role externos_read
# Crear workspaces personalizados
cells create workspace Ventas --group ventas --label "Área de Ventas"
cells create workspace Soporte --group soporte --label "Tickets y Atención"
cells create workspace DocumentacionCompartida --group externos --label "Docs compartidas"
# Crear usuarios con sus grupos
cells create user --login juan --password "ventas123" --email juan@ppyme.com --group ventas
cells create user --login maria --password "soporte123" --email maria@ppyme.com --group soporte
cells create user --login carlos --password "admin123" --email carlos@ppyme.com --group admin
cells create user --login laura --password "externos123" --email laura@ppyme.com --group externos
# Asignar roles a usuarios
cells acl grant-role ventas_write --subject-user juan
cells acl grant-role soporte_write --subject-user maria
cells acl grant-role admin_full --subject-user carlos
cells acl grant-role externos_read --subject-user laura
# Asignar permisos (ACLs) directos en workspaces
cells acl grant --workspace Ventas --subject-group ventas --rights read write
cells acl grant --workspace Soporte --subject-group soporte --rights read write
cells acl grant --workspace DocumentacionCompartida --subject-group externos --rights read
Nota: Puedes guardar este script con el nombre decrear_ppyme.shy ejecutarlo conbash crear_ppyme.sh
Activación y uso de auditoría en Pydio Cells
Pydio Cells incluye un potente sistema de registros y seguimiento.
¿Qué puedes auditar?
- Login de usuarios
- Acceso y edición de archivos
- Creación y modificación de workspaces
- Errores del sistema y fallos de seguridad
- Actividades sospechosas
Activar el módulo de auditoría
El sistema de auditoría está activo por defecto, pero puedes verificarlo:
cells config show audit
Puedes ajustar el nivel de detalle o activar auditoría extendida:
cells config set audit.level=debug
cells config set audit.store=internal
Consultar la Auditoría desde la línea de comandos
# Ver registros de acceso
cells list logs --scope auth
# Filtrar por usuario específico
cells list logs --scope auth --user juan
# Ver actividad reciente (archivos, workspaces)
cells list activities
# Exportar a archivo JSON para análisis externo
cells list logs > auditoria_ppyme.json
Consultar la Auditoría vía web
- Ve al panel de administración → Audit Console
- Puedes filtrar por:
- Fecha
- Usuario
- Tipo de acción (login, acceso, edición)
- Workspace o archivo afectado

Además puedes crear una política de auditoría por grupo o usuario.
También se puede integrar con Grafana, Prometheus.
Incluso se pueden preparar alertas personalizadas para gestionar esta aplicación a nivel experto.
Nivel avanzado: Alerta personalizada para accesos fuera de horario
Objetivo
Detectar si un usuario accede fuera del horario laboral (por ejemplo, después de las 20:00).
Paso 1: Exportar logs de auditoría
cells list logs --scope auth --format json > acceso_logs.json
Esto genera un archivo JSON con los accesos recientes.
Paso 2: Script en Python para detectar accesos fuera de horario
import json
from datetime import datetime
# Cargar logs
with open("acceso_logs.json") as f:
logs = json.load(f)
# Definir hora límite (20:00)
hora_limite = 20
# Recorrer eventos y detectar conexiones fuera del "tiesto"
for evento in logs:
if evento["Action"] == "login":
hora_evento = datetime.fromisoformat(evento["Timestamp"]).hour
usuario = evento["User"]
if hora_evento >= hora_limite:
print(f"Alerta: {usuario} accedió a las {hora_evento}:00 fuera del horario permitido.")
Paso 3 (opcional): Enviar alerta
Puedes integrar el script con smtplib para enviar emails o incluso con requests para mandar mensajes a Slack vía webhook o con cualquier otro método.
Alternativa/Mejora: Usar Grafana + Prometheus
- Exporta métricas desde Cells en formato Prometheus (usando un exporter).
- Grafana puede definir alertas como:
- "Más de 3 accesos en menos de 5 minutos"
- "Modificación de archivos confidenciales"
- Programa envío automático de alertas a:
- Correo electrónico
- Slack / Teams
- Webhooks HTTP
Clientes Moviles y de Escritorio
Si tienes el servicio publicado en Internet incluso dispones de un cliente para usarlo desde un móvil IOS o Android.
Incluso tienes aplicación de escritorio para Linux, Windows y MacOS.
La versión Community es gratuita e incluye:
- Almacenamiento: Sistema de archivos, compatible con S3
- Potentes funciones para compartir
- Directorio de usuarios integrado
- Vista previa en línea de documentos
- API REST, SDK, WebDAV
- Sincronización entre dispositivos móviles y de escritorio
- Binarios preconfigurados
Algunas opciones no están disponibles, revisa los detalles en la web oficial: https://www.pydio.com/
Como has podido ver, Pydio Cells es una gran aplicación a la que puedes sacar mucho rendimiento si "rascas" un poco en ella.