Sitios estáticos (S3 / almacenamiento gestionado)
Qué hace
Sección titulada «Qué hace»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.
Cuándo usarlo
Sección titulada «Cuándo usarlo»- 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.
Orígenes de almacenamiento
Sección titulada «Orígenes de almacenamiento»Un origen se da de alta una vez en tu cuenta y lo reutilizan todas las rutas que sirven desde él.
Compatible con S3
Sección titulada «Compatible con S3»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ón | Descripción |
|---|---|
| Endpoint | URL del servicio (por ejemplo, https://s3.amazonaws.com o el endpoint de R2 o MinIO) |
| Región | Región del bucket (por ejemplo, us-east-1 o auto) |
| Estilo de path | path-style (endpoint/bucket/key) o virtual-hosted (bucket.endpoint/key). Garage y MinIO suelen usar path-style |
| Permitir HTTP | Habilita endpoints sin TLS, solo para almacenamiento en una red interna de confianza |
| Credenciales | Clave de acceso y secreto. Se guardan cifradas y nunca se vuelven a mostrar ni aparecen en registros |
Almacenamiento gestionado
Sección titulada «Almacenamiento gestionado»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.
Opciones de la ruta
Sección titulada «Opciones de la ruta»| Opción | Descripción | Por defecto |
|---|---|---|
| Bucket | Bucket de donde se sirve | — |
| Prefijo | Carpeta dentro del bucket que actúa como raíz del sitio | (raíz) |
| Documento índice | Archivo servido cuando la URL termina en / | index.html |
| Fallback de aplicación de una sola página | Las rutas que no corresponden a un archivo devuelven el índice, para que el enrutador del cliente tome el control | desactivado |
| Documento de error | Página servida ante un 404 (por ejemplo, 404.html) | — |
| Tiempo de vida (TTL) | Cuánto vive un objeto en la caché antes de revalidarse | valor 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-Cacheindica el resultado:HIT,MISS,REVALIDATEDoSTALE.
Cómo publicar
Sección titulada «Cómo publicar»- 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.
Seguridad
Sección titulada «Seguridad»- 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 (
../).
Limitaciones
Sección titulada «Limitaciones»- El sitio debe ser estático. Para lógica del lado del servidor, ver Funciones en el borde o Alojamiento PHP.
- La caché no es una red de distribución global.