DesarrolladoresVolúmenes y tráfico

Volúmenes, almacenamiento y tráfico

Volúmenes persistentes#

Los archivos propios de un contenedor se reemplazan en cada despliegue. Todo lo que tu app deba conservar, como archivos subidos o un archivo SQLite, va en un volumen montado en el contenedor.

hw $API/applications/$APP/storages | jq

hw -X POST $API/applications/$APP/storages -d '{"type": "persistent", "name": "uploads", "mount_path": "/app/uploads"}'
hw -X POST $API/applications/$APP/start   # mounts it
LlamadaQué hace
GET /applications/{uuid}/storages{persistent_storages, file_storages}
POST /applications/{uuid}/storagesAñade un volumen (type: persistent, name, mount_path) o un archivo montado (type: file, mount_path, content)
PATCH /applications/{uuid}/storagesCambia una (por uuid)
DELETE /applications/{uuid}/storages/{storage_uuid}Elimínala junto con sus datos

Los archivos montados colocan un archivo que tú aportas (un archivo de configuración, por ejemplo) en mount_path. Un volumen vive en un solo servidor: con varias copias, cada servidor tiene el suyo. Los datos que deben ver todas las copias van en una base de datos gestionada.

Copias de seguridad de volúmenes#

Haz copias de seguridad de un volumen según una programación y conserva un número de archivos en el servidor:

hw -X PUT $API/applications/$APP/storages/$VOLUME/backups -d '{"frequency": "0 3 * * *", "retention_amount_locally": 7}'
hw -X POST $API/applications/$APP/storages/$VOLUME/backups/run   # one now
hw -X DELETE $API/applications/$APP/storages/$VOLUME/backups     # schedule and archives
  • frequency es una expresión cron o hourly, daily, weekly o monthly.
  • stop_during_backup: true detiene la app mientras se archiva el volumen, para obtener una copia coherente de los archivos en uso.
  • Para guardar también los archivos fuera del servidor, añade un bucket compatible con S3 (POST /s3-storages) y pasa save_s3: true con su s3_storage_uuid.

Volúmenes de almacenamiento#

Cuando el disco propio de un servidor se queda pequeño, añádele un volumen de almacenamiento: de 10 a 1000 GB de almacenamiento en bloque, montado en /mnt/volume-<id> en el servidor y facturado por hora en la suscripción del servidor. Apunta a esa ruta el volumen de una app (host_path) o un volcado de base de datos.

SRV=$(hw $API/hostwolf/servers | jq -r '[.[] | select(.status == "ready")][0].uuid')   # a ready purchased server (app server or VPS)

hw "$API/hostwolf/servers/$SRV/volumes/offer?size_gb=50" | jq    # sizes allowed in its city and the price

# Without "confirm": true nothing is bought; the 422 answer has the price.
hw -X POST $API/hostwolf/servers/$SRV/volumes -H "Idempotency-Key: $(uuidgen)"   -d '{"size_gb": 50, "backups": true, "autogrow_max_gb": 200, "confirm": true}'

hw $API/hostwolf/servers/$SRV/volumes | jq '.[] | {id, status, size_gb, mount_path, monthly_price}'
LlamadaQué hace
GET /hostwolf/servers/{uuid}/volumesLos volúmenes del servidor, con tamaño, uso, copias de seguridad y precio
GET /hostwolf/servers/{uuid}/volumes/offerTamaños permitidos en la ciudad del servidor y el precio de size_gb
POST /hostwolf/servers/{uuid}/volumesAñade uno (size_gb, backups, autogrow_max_gb, confirm)
PATCH /hostwolf/servers/{uuid}/volumes/{id}Amplíalo (size_gb), activa o desactiva las copias de seguridad, fija el límite de crecimiento automático
POST /hostwolf/servers/{uuid}/volumes/{id}/detachDesmóntalo y desvincúlalo del servidor
DELETE /hostwolf/servers/{uuid}/volumes/{id}Elimínalo junto con sus archivos
GET /hostwolf/volumesTodos los volúmenes del equipo; ?status=detached para los desvinculados
POST /hostwolf/volumes/{id}/attachVincula un volumen desvinculado a un servidor de la misma ciudad (server_uuid, confirm)
  • Precio: lo fija el proveedor de la ciudad, a través del catálogo. En las ciudades de Vultr un volumen cuesta 1,24 $ al mes por 10 GB, 3,11 $ por 25 GB y 12,38 $ por 100 GB, facturado por hora (mensual ÷ 730).
  • Confirmación: un volumen nuevo, un tamaño mayor, activar las copias de seguridad y un límite de crecimiento automático aumentan la factura, así que necesitan "confirm": true. Sin él no cambia nada, y la respuesta 422 trae confirm_required: true, un message legible y el precio en quote.
  • La ampliación se hace en línea: el sistema de archivos crece con el volumen y nada se detiene. Los volúmenes no se pueden reducir; en su lugar, añade uno más pequeño y elimina el antiguo.
  • Los cambios en volúmenes están limitados a 10 por minuto, junto con los botones de la consola.

Crecimiento automático#

Fija autogrow_max_gb y el volumen crece solo cuando está lleno al 85 %: un 25 %, al menos 10 GB, hasta tu límite. El sistema de archivos crece en línea y el nuevo tamaño se factura desde ese momento. 0 lo desactiva.

Copias de seguridad#

Las copias de seguridad nocturnas están activadas por defecto. Se cifran, se guardan fuera del servidor en Ámsterdam y se conservan 7 días. Pagas por el espacio que ocupan: 0,23 $ al mes por 10 GB guardados, 2,23 $ por 100 GB.

hw $API/hostwolf/volumes/$VOL/backups | jq                                 # newest first
hw -X POST $API/hostwolf/servers/$SRV/volumes/$VOL/backups                  # one now
hw -X POST $API/hostwolf/servers/$SRV/volumes/$VOL/restore   -d '{"backup_id": "4f1c2a9b", "target": "new", "confirm": true}'
  • target: "same" restaura en el propio volumen: los archivos escritos después de la copia de seguridad se eliminan, y el volumen no está disponible hasta que termina la restauración.
  • target: "new" restaura en un volumen nuevo del mismo tamaño en el mismo servidor, que se factura como cualquier volumen.
  • PATCH … {"backups": false} las desactiva; las copias de seguridad existentes se eliminan pasados 7 días.

Desvincular, vincular y el periodo de gracia de 7 días#

  • Desvincular (POST …/detach) desmonta un volumen y lo quita de su servidor. Conserva sus archivos y se sigue facturando hasta que lo vuelvas a vincular o lo elimines. Antes, detén lo que esté escribiendo en él.
  • Cuando se elimina un servidor, sus volúmenes se desvinculan y se conservan 7 días, sin coste. kept_until muestra la fecha; después, el volumen y sus archivos se eliminan.
  • Vincula un volumen desvinculado a cualquiera de tus servidores listos en la misma ciudad con POST /hostwolf/volumes/{id}/attach. Se monta en la misma ruta en alrededor de un minuto. Un volumen de un servidor eliminado vuelve a facturarse desde ese momento, así que eso necesita "confirm": true.
  • Las copias de seguridad de un volumen desvinculado se pueden restaurar en un volumen nuevo en otro servidor de la misma ciudad: POST /hostwolf/volumes/{id}/restore con backup_id, server_uuid y confirm.
  • DELETE /hostwolf/volumes/{id} elimina ahora mismo un volumen desvinculado.

Tráfico#

Cada servidor incluye 1 TB de tráfico saliente al mes. Por encima de eso, cada GB cuesta 0,01 $, que se añade a la factura de ese servidor. El tráfico entrante es gratis.

hw $API/hostwolf/servers/$SRV/traffic | jq
# {"month": "2026-10", "outbound_bytes": 12400000000, "outbound": "12.4 GB", "included_bytes": 1000000000000,
#  "overage_bytes": 0, "price_per_gb": 0.01, "bill_so_far": 0, "sampled_at": "…"}

hw "$API/hostwolf/traffic?month=2026-09" | jq '.bill_so_far, .servers[].outbound'   # every server, any month

El tráfico se lee cada 10 minutos. La página Analíticas de la consola muestra las peticiones por app.

El puerto 25 (email saliente) está bloqueado en todos los servidores; envía el email mediante la API de un proveedor o por el puerto 587.

¿Atascado, o te falta un endpoint? Escríbenos en app.hostwolf.net/contact o a [email protected].