Saltearse al contenido

Sitios estáticos (S3 / almacenamiento gestionado)

Sirve un sitio 100% estático (HTML, CSS, JS, imágenes, una aplicación de una sola página compilada) directamente desde un almacenamiento de objetos compatible con S3 o desde el almacenamiento gestionado por Host Admin, sin servidor de origen HTTP. Tero trae cada objeto del almacenamiento, lo guarda en su caché y lo entrega con TLS, WAF, geo-bloqueo y el resto de los controles.

El modelo es el de una distribución de contenido: definís un origen (el almacenamiento) y una o varias rutas que sirven desde él.

  • Páginas de aterrizaje, sitios institucionales y documentación generada estáticamente (Astro, Hugo, Jekyll, etc.).
  • Aplicaciones de una sola página (React, Vue, Svelte, Angular) compiladas a archivos estáticos.
  • El frontend de una aplicación cuya API vive en otro lado. Para servir los dos bajo el mismo dominio, ver Dominios combinados.

Un origen se da de alta una vez en tu cuenta y lo reutilizan todas las rutas que sirven desde él.

Cualquier almacenamiento de objetos que hable el protocolo S3: Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, Garage, MinIO o Ceph, entre otros.

OpciónDescripción
EndpointURL del servicio (por ejemplo, https://s3.amazonaws.com o el endpoint de R2 o MinIO)
RegiónRegión del bucket (por ejemplo, us-east-1 o auto)
Estilo de pathpath-style (endpoint/bucket/key) o virtual-hosted (bucket.endpoint/key). Garage y MinIO suelen usar path-style
Permitir HTTPHabilita endpoints sin TLS, solo para almacenamiento en una red interna de confianza
CredencialesClave de acceso y secreto. Se guardan cifradas y nunca se vuelven a mostrar ni aparecen en registros

Espacio provisto por Host Admin, sin credenciales ni endpoint que configurar: cada bucket es una carpeta dentro de tu espacio. Pensado para sitios y landings sin dependencias externas.

OpciónDescripciónPor defecto
BucketBucket de donde se sirve—
PrefijoCarpeta dentro del bucket que actúa como raíz del sitio(raíz)
Documento índiceArchivo servido cuando la URL termina en /index.html
Fallback de aplicación de una sola páginaLas rutas que no corresponden a un archivo devuelven el índice, para que el enrutador del cliente tome el controldesactivado
Documento de errorPágina servida ante un 404 (por ejemplo, 404.html)—
Tiempo de vida (TTL)Cuánto vive un objeto en la caché antes de revalidarsevalor del servicio

Para agregar encabezados propios a las respuestas (Content-Security-Policy, CORS, etc.) usá las reglas de borde.

  • Dos niveles: los objetos chicos se sirven desde memoria; los grandes, desde disco.
  • Compresión Brotli para el contenido comprimible (texto, JS, JSON, SVG, WASM), respetando Accept-Encoding: br. Los binarios se sirven tal cual.
  • Revalidación por ETag: al vencer el TTL, Tero pregunta al almacenamiento si el objeto cambió; si no cambió, renueva la caché sin volver a transferirlo.
  • Contenido vencido ante error: si el almacenamiento no responde, se sigue sirviendo la última copia válida en lugar de devolver un error.
  • El encabezado X-Cache indica el resultado: HIT, MISS, REVALIDATED o STALE.
  • Subís los archivos al bucket o, en el almacenamiento gestionado, con el gestor de archivos del sitio.
  • Al vencer el TTL, el borde toma la versión nueva. Para verla de inmediato, purgá paths puntuales (/index.html, /assets/app.js) o la ruta entera.
  • El versionado por hash en el nombre de los archivos evita esperas y purgas.
  • La entrega al visitante usa la misma postura TLS que el resto de las rutas.
  • El bucket puede ser privado, y es lo recomendado: Tero accede con sus credenciales y los visitantes nunca acceden al bucket directamente.
  • El mapeo de path a objeto rechaza el recorrido de directorios (../).