---
title: Object Storage (S3, Ceph RGW)
description: Venda almacenamiento S3 de pago por uso en su clúster Ceph: requisitos de RGW, usuario admin, caps y cómo conectar el backend a una zona en NexCMP.
url: https://nexcmp.com/es/docs/infrastructure/s3/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Object Storage (S3, Ceph RGW) {#object-storage-s3-ceph-rgw}

> **En el panel de administración:** Infrastructure › Cloud provider › Ceph S3 (RGW) (`/infra/s3`). Cuentas: Services › Object Storage › S3 accounts (`/s3`). Precios: Services › Object Storage › PAYG pricing (`/s3/policy`). Active el módulo en System › Admin › License & updates.

## Qué hace {#what-it-does}

Los clientes crean cuentas S3 desde el portal y obtienen claves de acceso. NexCMP crea y elimina los usuarios correspondientes en **su Ceph RADOS Gateway (RGW)** mediante la RGW Admin Ops API, lee el uso para la facturación y factura según el modelo de pago por uso: el almacenamiento que supere el nivel gratuito por GB al mes (cobrado por horas) y el tráfico de descarga por GB. Las subidas son gratuitas.

Utilícelo si gestiona un clúster Ceph con RGW y desea revender Object Storage.

## Requisitos {#requirements}

| Elemento | Requisito |
|---|---|
| Ceph | Un clúster con al menos un demonio RGW y la **Admin Ops API** habilitada (el valor predeterminado `rgw_enable_apis` incluye `admin`). |
| Usuario administrador | Un usuario RGW para NexCMP con las capacidades que se indican a continuación. No utilice un usuario que contenga datos de clientes. |
| Endpoints | El endpoint S3 que utilizan los clientes y el endpoint Admin Ops. Ambos se introducen como `https://host` **sin ruta, solo en el puerto 443**, y deben resolver a una dirección **pública**: se rechazan las direcciones loopback, link-local, multicast, privadas y unique-local. |
| Certificado | Un certificado válido para el host del endpoint. |
| Registro de uso | Registro de uso de RGW habilitado (`rgw_enable_usage_log = true`) para que la API de uso pueda reportar el tráfico. |
| Zona | Una zona maestra con el servicio **Object Storage (S3)** marcado. Consulte [Zonas](https://nexcmp.com/es/docs/infrastructure/zones/). |
| Almacenamiento | Capacidad en Ceph para las cuotas que comercialice. |
| Depende de | El módulo **Object Storage**. El tráfico de descarga también cuenta para [Bandwidth](https://nexcmp.com/es/docs/catalog/bandwidth/). |

## Preparar la infraestructura {#prepare-the-infrastructure}

En un nodo de administración de Ceph:

1. Cree el usuario administrador y asígnele las capacidades de Admin Ops que necesita:

   ```bash
   radosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin"
   radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read"
   radosgw-admin user info --uid=nexcmp-admin
   ```

   Copie `access_key` y `secret_key` del resultado. Corresponden a **Admin access key** y **Admin secret key** en NexCMP.

2. Active el registro de uso y reinicie los gateways:

   ```bash
   ceph config set client.rgw rgw_enable_usage_log true
   ```

3. Configure los gateways tras HTTPS en el puerto 443 (un proxy inverso o el propio TLS de RGW), publique el nombre DNS y realice una prueba desde el servidor del panel:

   ```bash
   curl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/
   ```

   Debería recibir una respuesta XML de S3 (HTTP 200 o 403), no un tiempo de espera agotado.


## Conectar en NexCMP {#connect-in-nexcmp}

1. **Asigne el servicio S3 a una zona.** Abra **Infrastructure › Datacenter › Zone**, edite la zona y marque **Object Storage (S3)**. Solo las zonas maestras con el servicio S3 aparecen en el formulario del backend.


2. Abra **Infrastructure › Cloud provider › Ceph S3 (RGW)** y haga clic en **Add backend**:

   | Campo | Valor de ejemplo |
   |---|---|
   | Nombre del backend | `Ceph RGW 1` |
   | Zona | la zona del paso 1 |
   | Endpoint de RGW Admin Ops | `https://s3.example.com` |
   | Endpoint S3 del cliente | `https://s3.example.com` |
   | Región de firma S3 | `default` |
   | Clave de acceso de administrador | `XXXX` |
   | Clave secreta de administrador | `XXXX` |
   | Activo | activado |
   | Enable sales (requiere probar la conexión primero) | **desactivado** por ahora |
   | Motivo del cambio | `initial setup` |

      ![Diálogo de backend S3 con endpoints de ejemplo, región y claves enmascaradas](https://nexcmp.com/es/docs/images/infrastructure/s3-02-backend-dialog.webp)

3. Haga clic en **OK** (guardar) y luego en **Check** en la fila. NexCMP llama a la Admin Ops API con la clave de administrador. **Ceph connection successful** y la etiqueta **Verified** indican que funciona.


4. Haga clic en **Edit**, active **Enable sales** y guarde. NexCMP no permitirá abrir las ventas hasta que una comprobación se haya completado con éxito.
5. Abra **Services › Object Storage › PAYG pricing** y establezca los precios:

   | Campo | Significado |
   |---|---|
   | Almacenamiento por encima del nivel gratuito (VND/GB/mes) | Precio del almacenamiento; se factura por hora como el precio mensual dividido entre 730. |
   | Descarga (VND/GB) | Precio del tráfico saliente. |
   | Subida (VND/GB) | Siempre 0. |
   | Nivel gratuito con Running VM (GB) | Fijado en 100 GB por cuenta mientras el cliente tenga al menos una VM en ejecución, compartido entre sus cuentas de S3 por tamaño. |
   | Límite de deuda (VND) | Cuánto uso impago está permitido. |
   | Umbral de facturación (VND) | El uso se acumula en una sola factura una vez que supera este importe. |
   | Saldo mínimo para crear S3 (VND) | Saldo en el monedero necesario para crear una cuenta. |
   | Máximo de cuentas S3 por cliente, cuota técnica predeterminada (GB) | Límites para nuevas cuentas. |

      ![Formulario de precios PAYG de S3](https://nexcmp.com/es/docs/images/infrastructure/s3-04-pricing.webp)

   Los precios de S3 se introducen en VND. Se convierten para su visualización y para los cargos al monedero al tipo de cambio vigente; consulte [Divisas y tipos de cambio](https://nexcmp.com/es/docs/catalog/currency-and-exchange-rates/).

## Verificación {#verify}

1. **Check** devuelve "Ceph connection successful".
2. Como cliente (o con una cuenta de prueba), cree una cuenta de S3. En Ceph, `radosgw-admin user list` muestra un nuevo usuario y **S3 accounts** la enumera.
3. Cree un bucket con cualquier cliente de S3 utilizando las claves del cliente con el endpoint de cliente. Suba un archivo.
4. Tras el siguiente ciclo de facturación por hora, **S3 accounts** muestra el uso.

## Límites y notas {#limits-and-notes}

- Un backend que ya tiene cuentas asociadas conserva su **zona, endpoint y región**; para cambiarlos, cree un nuevo backend.
- Una zona puede tener su propio backend; las cuentas y los backends quedan vinculados a una zona de forma definitiva.
- El nivel gratuito y «las subidas son gratuitas» son reglas fijas, no opciones.
- Las claves se almacenan cifradas; la consola solo muestra el campo «leave blank to keep the current key». Los pares de claves siempre se introducen juntos.
- Las claves secretas de los clientes se muestran una sola vez al crearse, nunca más. Si se pierde una clave, se reemplaza rotándola.

## Resolución de problemas {#troubleshooting}

| Síntoma | Causa | Solución |
|---|---|---|
| "Endpoint requires HTTPS" | El endpoint utiliza HTTP sin cifrar | Publique HTTPS en el puerto 443. |
| "Puerto de endpoint no permitido" | Un puerto distinto del 443 | Utilice el puerto HTTPS estándar. |
| "Dirección del endpoint no permitida" | El nombre se resuelve en una dirección privada, loopback, link-local o unique-local | Utilice una dirección pública. |
| "El endpoint solo debe contener el protocolo y el host" | La URL contiene una ruta, consulta o información de usuario | Utilice únicamente `https://host`. |
| "Error al resolver el endpoint" | El DNS no resuelve desde el servidor del panel | Corrija el DNS. |
| "Error al conectar con Ceph" | Error de firewall o TLS | Pruebe con `curl` desde el servidor del panel. |
| "Ceph devolvió HTTP 403 AccessDenied" | Claves incorrectas o falta de capabilities | Compruebe las claves y vuelva a ejecutar `radosgw-admin caps add`. |
| "Respuesta de Ceph no válida" | El endpoint no es una API de Admin Ops de RGW | Apúntelo al RGW, no a una página web. |
| "La prueba de conexión debe completarse con éxito antes de habilitar las ventas" | Activó las ventas antes de un **Check** exitoso | Ejecute **Check** y luego habilite las ventas. |
| "Se requieren todas las claves nuevas para el endpoint" | Se cambió el endpoint sin proporcionar ambas claves | Introduzca la clave de acceso y la clave secreta juntas. |
| "El backend ya tiene recursos asociados; cree un nuevo backend para cambiar la zona o el endpoint" | Existen cuentas en este backend | Cree un nuevo backend. |
| "Seleccione la zona maestra con servicio S3" | La zona no es una zona maestra o no tiene el servicio S3 | Marque **Object Storage (S3)** en la zona. |
| "Región no válida" | La región contiene caracteres distintos de letras, dígitos, `-` y `_` | Utilice `default` o el nombre de su zonegroup de RGW. |
| "Falta el resumen de uso de Ceph; no facturado" | Registro de uso deshabilitado | Habilite `rgw_enable_usage_log`. |
