Ctrl K
ComunidadGuías…
cloudserver
✓ ficha editorial verificadaJavaScriptartescaaws-s3cloudcloud-native

Zenko CloudServer — Almacenamiento S3-compatible Open Source

Zenko CloudServer es un servidor de almacenamiento de objetos open source compatible con Amazon S3, implementado en Node.js. Proporciona una interfaz única AWS S3 API para acceder a múltiples sistemas de almacenamiento backend tanto on-premise como en la nube pública (AWS S3, Azure Blob Storage, Google Cloud Storage). Diseñado para evitar vendor lock-in y permitir desarrollo de aplicaciones S3 sin cambios de código. Disponible bajo licencia Apache 2.0 con despliegue nativo o Docker.

Zenko CloudServer

Zenko CloudServer (anteriormente Scality S3 Server) es un servidor de almacenamiento de objetos open source que implementa el protocolo Amazon S3 en Node.js. Proporciona una interfaz única AWS S3 API para acceder a múltiples sistemas de almacenamiento backend tanto on-premise como en la nube pública.

¿Qué es y para quién?

Zenko CloudServer es un proyecto open source bajo licencia Apache 2.0, parte de , el controlador de datos multi-nube de código abierto de Scality. Está diseñado para:

  • Desarrolladores que necesitan compatibilidad S3 sin cambios de código
  • Organizaciones que requieren almacenamiento on-premise o en múltiples nubes
  • Proyectos que buscan evitar vendor lock-in con proveedores cloud
  • Aplicaciones de backup, archivado y colaboración basadas en S3

Casos de uso

  • Desarrollo local: Crear aplicaciones S3 para pruebas sin depender de AWS
  • Auto-alojado: Desplegar almacenamiento compatible con S3 en infraestructura propia
  • Multi-cloud: Mover datos entre AWS, Azure y Google Cloud Storage sin reescribir código
  • Backup/Archivado: Soluciones de backup compatibles con SDKs de S3 existentes
  • CI/CD: Almacenamiento para pipelines de integración continua

Arquitectura

Zenko CloudServer utiliza una arquitectura modular basada en backends intercambiables:

  • Frontend: Implementación completa del protocolo S3 en Node.js
  • Backend: Soporte para múltiples sistemas de almacenamiento (memoria, archivos, Scality RING, Docker)
  • Vault: Gestión de usuarios y autenticación opcional con HashiCorp Vault
  • Endpoints: Soporte para path-style y virtual-hosted-style buckets

La arquitectura permite añadir nuevos backends mediante módulos, facilitando la extensión del sistema.

Requisitos reales

  • Node.js: 10.x o superior (recomendado: versión actualizada desde Nodesource)
  • yarn: v1.17.x o superior
  • Docker: Para despliegue en contenedores (imagen oficial disponible en Docker Hub)
  • Vault (opcional): HashiCorp Vault para gestión de autenticación
  • Redis (opcional): Para caché local en pruebas funcionales

Instalación y despliegue

Método nativo (Node.js + Yarn)

git clone https://github.com/scality/cloudserver.git
cd cloudserver
yarn install
yarn start

Esto inicia CloudServer en el puerto 8000. Los puertos internos 9990 y 9991 se usan para transferencia de metadatos y datos.

Docker (Producción)

docker pull scality/cloudserver
docker run -d \
  --name cloudserver \
  -p 8000:8000 \
  -v /ruta/persistencia:/usr/src/app/localData \
  -e S3DATA=/usr/src/app/localData \
  scality/cloudserver

Docker Compose (Ejemplo)

version: '3'
services:
  cloudserver:
    image: scality/cloudserver
    ports:
      - "8000:8000"
    volumes:
      - ./data:/usr/src/app/localData
    environment:
      - S3DATA=/usr/src/app/localData
    healthcheck:
      test: ["CMD", "node", "-e", "require('http').get('http://localhost:8000', (r) => process.exit(r.statusCode === 200 ? 0 : 1)]

Backend de memoria (Desarrollo)

yarn run mem_backend

Persistencia

En producción, los datos deben persistir fuera del contenedor:

  • localData: Directorio para archivos de objetos (volumen mount)
  • localMetadata: Directorio para metadatos (volumen mount)
  • Configuración: Especificar rutas absolutas en S3DATAPATH y S3METADATAPATH
mkdir -m 700 /myFavoriteDataPath
export S3DATAPATH="/myFavoriteDataPath"
yarn start

Red y puertos

Puerto Protocolo Uso
8000HTTP/HTTPSAPI S3 principal
9990HTTPTransferencia de metadatos (interno)
9991HTTPTransferencia de datos (interno)

Endpoints configurables

Soporta ambos estilos de endpoints:

  • Path-style: http://myhostname.com/mybucket
  • Virtual-hosted: http://mybucket.myhostname.com
  • IP Address: Requiere path-style (s3ForcePathStyle: true)

Seguridad

Credenciales

Configurar credenciales en conf/authdata.json o mediante variables de entorno:

export SCALITY_ACCESS_KEY_ID="nuevaClave"
export SCALITY_SECRET_ACCESS_KEY="nuevoSecret"

SSL/HTTPS

Para habilitar HTTPS, configurar certificados en config.json:

{"certFilePaths": {"key": "./test.key", "cert": "./test.crt", "ca": "./ca.crt"}}

Vault (Opcional)

Para gestión avanzada de autenticación:

export S3VAULT=vault
yarn start

Actualización y backup

Actualizar

git pull origin development/9.5
yarn install
docker restart cloudserver

Copias de seguridad

  • Backup de localData/ y localMetadata/
  • Exportar credenciales de conf/authdata.json
  • Guardar configuración en config.json y locationConfig.json

Ventajas

  • Código abierto: Licencia Apache 2.0, modificable y extensible
  • Multi-cloud: Acceso unificado a AWS S3, Azure Blob, Google Cloud Storage
  • Sin vendor lock-in: Datos accesibles en cualquier cloud sin post-tratamiento
  • Fácil despliegue: Contenedor Docker listo para producción en minutos
  • Ecosistema S3: Compatible con todos los SDKs y herramientas existentes

Limitaciones

  • No incluye replicación automática entre backends (requiere configuración manual)
  • Vault es propietario y debe gestionarse externamente
  • Algunos backends requieren configuración adicional de endpoints
  • No soporta todas las características avanzadas de AWS S3 (ej. lifecycle rules complejos)

Alternativas reales

  • AWS S3: Servicio cloud nativo, pero con vendor lock-in
  • Ceph RGW: Solución open source alternativa para almacenamiento S3-compatible
  • MinIO: Implementación de alto rendimiento compatible con S3
  • OpenStack Swift: Protocolo similar, pero no totalmente compatible con S3

FAQ

¿CloudServer es compatible con AWS SDKs?

Sí. Todos los SDKs de S3 (JavaScript, Python, Java, etc.) funcionan sin cambios.

¿Puedo usarlo en producción?

Sí, pero requiere configuración de persistencia, SSL y credenciales seguras.

¿Qué backends soporta?

In-memory, archivos locales, Scality RING, Docker, AWS S3, Azure Blob Storage y Google Cloud Storage.

¿Requiere Redis?

No es obligatorio, pero recomendado para caché en pruebas funcionales.

Relacionado en HostingByte

Alternativas y comparativas · Guías de HostingByte

Fuentes verificadas

Fuentes y verificación
Quality gate 100/100 · información trazable para SEO/GEO
Fuente 1 ↗Fuente 2 ↗Fuente 3 ↗Fuente 4 ↗Fuente 5 ↗Fuente 6 ↗Fuente 7 ↗Fuente 8 ↗Fuente 9 ↗Fuente 10 ↗
Citación para IA y agentes
Resumen citable, canonical y fuentes verificadas en texto plano.
llms.txt de esta ficha →