DéveloppeursVolumes et trafic

Volumes, stockage et trafic

Volumes persistants#

Les fichiers propres d’un conteneur sont remplacés à chaque déploiement. Tout ce que votre app doit conserver, comme les fichiers envoyés ou un fichier SQLite, va sur un volume monté dans le conteneur.

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
AppelCe que fait l’appel
GET /applications/{uuid}/storages{persistent_storages, file_storages}
POST /applications/{uuid}/storagesAjouter un volume (type: persistent, name, mount_path) ou un fichier monté (type: file, mount_path, content)
PATCH /applications/{uuid}/storagesEn modifier une (par uuid)
DELETE /applications/{uuid}/storages/{storage_uuid}La supprimer avec ses données

Les fichiers montés placent un fichier que vous fournissez (un fichier de configuration, par exemple) à mount_path. Un volume se trouve sur un seul serveur : avec plusieurs copies, chaque serveur a le sien. Les données que toutes les copies doivent voir ont leur place dans une base de données managée.

Sauvegardes de volumes#

Sauvegardez un volume selon un planning, en conservant un certain nombre d’archives sur le serveur :

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 est une expression cron ou hourly, daily, weekly ou monthly.
  • stop_during_backup: true arrête l’app pendant l’archivage du volume, pour une copie cohérente des fichiers en cours d’utilisation.
  • Pour conserver aussi les archives hors du serveur, ajoutez un bucket compatible S3 (POST /s3-storages) et passez save_s3: true avec son s3_storage_uuid.

Volumes de stockage#

Quand le disque propre d’un serveur est trop petit, ajoutez-lui un volume de stockage : de 10 à 1000 Go de stockage en bloc, monté sur /mnt/volume-<id> sur le serveur, facturé à l’heure sur l’abonnement du serveur. Faites pointer le volume d’une app (host_path) ou un dump de base de données vers ce chemin.

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}'
AppelCe que fait l’appel
GET /hostwolf/servers/{uuid}/volumesLes volumes du serveur, avec taille, utilisation, sauvegardes et prix
GET /hostwolf/servers/{uuid}/volumes/offerLes tailles autorisées dans la ville du serveur et le prix de size_gb
POST /hostwolf/servers/{uuid}/volumesEn ajouter un (size_gb, backups, autogrow_max_gb, confirm)
PATCH /hostwolf/servers/{uuid}/volumes/{id}L’agrandir (size_gb), activer ou désactiver les sauvegardes, régler la limite de croissance automatique
POST /hostwolf/servers/{uuid}/volumes/{id}/detachLe démonter et le détacher du serveur
DELETE /hostwolf/servers/{uuid}/volumes/{id}Le supprimer avec ses fichiers
GET /hostwolf/volumesTous les volumes de l’équipe ; ?status=detached pour les volumes détachés
POST /hostwolf/volumes/{id}/attachRattacher un volume détaché à un serveur de la même ville (server_uuid, confirm)
  • Prix : fixé par le fournisseur de la ville, via le catalogue. Dans les villes Vultr, un volume coûte 1,24 $ par mois pour 10 Go, 3,11 $ pour 25 Go et 12,38 $ pour 100 Go, facturé à l’heure (prix mensuel ÷ 730).
  • Confirmation : un nouveau volume, une taille plus grande, l’activation des sauvegardes et une limite de croissance automatique augmentent la facture ; ils nécessitent donc "confirm": true. Sans cela rien ne change, et la réponse 422 contient confirm_required: true, un message lisible et le prix dans quote.
  • L’agrandissement se fait à chaud : le système de fichiers grandit avec le volume et rien ne s’arrête. Les volumes ne peuvent pas rétrécir ; ajoutez-en plutôt un plus petit et supprimez l’ancien.
  • Les modifications de volumes sont limitées à 10 par minute, boutons de la console compris.

Croissance automatique#

Définissez autogrow_max_gb et le volume grandit tout seul quand il est plein à 85 % : de 25 %, au moins 10 Go, jusqu’à votre limite. Le système de fichiers grandit à chaud et la nouvelle taille est facturée à partir de ce moment. 0 la désactive.

Sauvegardes#

Les sauvegardes nocturnes sont activées par défaut. Elles sont chiffrées, stockées hors site à Amsterdam et conservées 7 jours. Vous payez l’espace qu’elles occupent : 0,23 $ par mois pour 10 Go stockés, 2,23 $ pour 100 Go.

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" restaure dans le volume lui-même : les fichiers écrits après la sauvegarde sont supprimés, et le volume est indisponible jusqu’à la fin de la restauration.
  • target: "new" restaure dans un nouveau volume de même taille sur le même serveur, facturé comme n’importe quel volume.
  • PATCH … {"backups": false} les désactive ; les sauvegardes existantes sont supprimées au bout de 7 jours.

Détacher, rattacher et le délai de grâce de 7 jours#

  • Détacher (POST …/detach) démonte un volume et le retire de son serveur. Il conserve ses fichiers et reste facturé jusqu’à ce que vous le rattachiez ou le supprimiez. Arrêtez d’abord tout ce qui écrit dessus.
  • Quand un serveur est supprimé, ses volumes sont détachés et conservés gratuitement pendant 7 jours. kept_until indique la date ; passé ce délai, le volume et ses fichiers sont supprimés.
  • Rattachez un volume détaché à l’un de vos serveurs prêts dans la même ville avec POST /hostwolf/volumes/{id}/attach. Il est monté au même chemin en une minute environ. Le volume d’un serveur supprimé est de nouveau facturé à partir de ce moment, il faut donc "confirm": true.
  • Les sauvegardes d’un volume détaché peuvent être restaurées dans un nouveau volume sur un autre serveur de la même ville : POST /hostwolf/volumes/{id}/restore avec backup_id, server_uuid et confirm.
  • DELETE /hostwolf/volumes/{id} supprime désormais immédiatement un volume détaché.

Trafic#

Chaque serveur inclut 1 To de trafic sortant par mois. Au-delà, chaque Go coûte 0,01 $, ajouté à la facture de ce serveur. Le trafic entrant est gratuit.

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

Le trafic est relevé toutes les 10 minutes. La page Statistiques de la console affiche les requêtes par app.

Le port 25 (e-mail sortant) est bloqué sur tous les serveurs ; envoyez vos e-mails via l’API d’un fournisseur ou le port 587.

Bloqué, ou il vous manque un endpoint ? Dites-le-nous sur app.hostwolf.net/contact ou à [email protected].