Pydio Cells

Aplicaciones 6 de ago. de 2025

¿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

GrupoDescripciónRoles Asociados
ventasEquipo comercialventas_read, ventas_write
soporteEquipo técnicosoporte_read, soporte_write
adminAdministradores del sistemaadmin_full
externosColaboradores externos (solo lectura)externos_read

Roles

RolPermisos clave
ventas_readAcceso de solo lectura al workspace "Ventas"
ventas_writeLectura y escritura en "Ventas"
soporte_readLectura en "Tickets"
soporte_writeLectura y escritura en "Tickets"
admin_fullAcceso completo a toda la plataforma
externos_readSolo 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 usuario
  • cells update user — Modifica atributos de un usuario
  • cells delete user — Elimina un usuario
  • cells create group — Crea un grupo
  • cells delete group — Elimina un grupo
  • cells list users — Lista todos los usuarios
  • cells list groups — Lista todos los grupos

Roles y permisos

  • cells create role — Crea un rol personalizado
  • cells list roles — Muestra los roles existentes
  • cells acl grant-role — Asigna un rol a un usuario o grupo
  • cells acl revoke-role — Revoca un rol

Workspaces y ACLs

  • cells create workspace — Crea un nuevo espacio de trabajo
  • cells list workspaces — Lista los workspaces disponibles
  • cells acl grant — Asigna permisos (read/write/deny) a usuarios o grupos
  • cells acl revoke — Revoca permisos

Auditoría y monitoreo

  • cells list logs — Muestra registros del sistema
  • cells list sessions — Lista sesiones activas
  • cells list activities — Muestra actividad reciente de usuarios

Configuración y sistema

  • cells config show — Muestra la configuración actual
  • cells config set — Modifica parámetros del sistema
  • cells version — Muestra la versión instalada
  • cells 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 binario cells 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 de crear_ppyme.sh y ejecutarlo con bash 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

  1. Exporta métricas desde Cells en formato Prometheus (usando un exporter).
  2. Grafana puede definir alertas como:
    • "Más de 3 accesos en menos de 5 minutos"
    • "Modificación de archivos confidenciales"
  3. 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.

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux