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 -d
Se 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 binariocells
instalado 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.sh
y 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.