---
title: Despliega
description: Lleva tu Hollware a tu cuenta de Cloudflare con un solo comando y luego crea tu sitio en la base de datos remota.
section: start
order: 4
---

# Despliega

Hollware se despliega en tu propia cuenta de Cloudflare como un Worker, con una base de datos D1, un namespace de KV, dos colas y un bucket de R2 para las [imágenes](/docs/images/) de tus sitios. El plan gratuito de Workers alcanza para empezar.

## Inicia sesión y despliega

```sh
npx wrangler login
npm run deploy
```

`npm run deploy` ejecuta `hollware deploy`, que:

1. despliega el Worker con wrangler. La primera vez, wrangler crea la base de datos, el namespace, las colas y el bucket que nombra `wrangler.jsonc`;
2. configura `HOLLWARE_PUBLIC_URL` en `wrangler.jsonc` con la URL del Worker, y despliega de nuevo con ella;
3. crea `HOLLWARE_SECRET`, que sella los secretos que crea Hollware, cuando el Worker no lo tiene;
4. aplica las migraciones a la base de datos remota.

Después haz commit de `wrangler.jsonc`: ahora contiene la URL pública. En local, `npx hollware dev` sigue sirviendo en `http://localhost:5199`, sea cual sea la URL que escribió el deploy.

## Crea tu sitio

La base de datos remota parte vacía. Crea en ella tu sitio y su dueño; el sitio parte de una plantilla, a la que das forma en el admin:

```sh
npx hollware init --site my-site --remote
```

Imprime un token para tus agentes y un enlace para configurar tu passkey en el admin desplegado.

## Tu propio dominio

Para servir Hollware en un dominio tuyo, en una zona de la misma cuenta de Cloudflare, despliega con él como URL pública:

```sh
npx hollware deploy --url https://cms.example.com
```

Escribe la URL en `HOLLWARE_PUBLIC_URL` y una ruta para su host en `wrangler.jsonc`, y Cloudflare crea el registro DNS y el certificado. El primer deploy ya puede recibirla: `npm run deploy -- --url https://cms.example.com`.

`HOLLWARE_PUBLIC_URL` importa: Hollware responde solo a las solicitudes para ese host y rechaza todas las demás. Es su protección contra el DNS rebinding.

## Revísalo

```sh
npx hollware doctor --remote
```

Revisa los flags, los bindings, el bucket de imágenes, las migraciones y el dueño, y dice qué corregir.

Tu Hollware no está hecho para que lo encuentren: cada respuesta lleva `X-Robots-Tag: noindex, nofollow` y su `/robots.txt` lo prohíbe todo. Los buscadores indexan tus sitios, nunca el CMS.

::callout{type="note"}
Actualizar Hollware es actualizar sus paquetes y desplegar: `hollware deploy` aplica primero las migraciones nuevas y después despliega el Worker nuevo. Antes de aplicar algo a una base de datos que ya tiene datos, toma un bookmark de Time Travel y lo imprime. Ver [Actualizar Hollware](/docs/upgrade/).
::

## Respaldos

Cada día después de las 03:00 UTC, el cron de tu Hollware escribe un respaldo de cada sitio en su bucket de R2: un archivo JSON con la definición del sitio y cada entrada, su último Markdown y el que está publicado. Guarda solo el contenido, nunca las imágenes: ya están en el bucket y nunca cambian. Cada respaldo se guarda 30 días, salvo que el sitio diga otra cosa: en el admin, en **Sitio**, en **Respaldos**, o en `backups` de su definición con `update_site`, un dueño los guarda de 1 a 365 días, o los desactiva:

```json
"backups": { "enabled": true, "retentionDays": 30 }
```

Con los respaldos desactivados no se hace ninguno nuevo, y los guardados se eliminan cuando pasa su plazo. El admin los lista en **Sitio**, en **Respaldos**, donde un dueño descarga uno; `list_backups` los lista por MCP, y `hollware backup get` convierte uno en archivos.

## Restaurar

Tres formas de volver atrás, para tres tipos de pérdida:

- **Toda la base de datos, a un momento.** D1 guarda 30 días de Time Travel: `npx wrangler d1 time-travel restore <base de datos> --timestamp <hora ISO>` deja la base de datos como estaba en ese momento, o `--bookmark <id>` la deja en el bookmark que `hollware migrate --remote` imprimió antes de migrar. Todo lo posterior a ese momento se pierde, así que revisa primero qué perderás con `npx wrangler d1 time-travel info <base de datos> --timestamp <hora ISO>`.
- **Tu contenido, de un día.** `hollware backup get <fecha> ./restore --url <la URL de tu Hollware> --token-file <archivo>` escribe el respaldo de ese día como archivos Markdown, y `hollware import ./restore` los recupera como borradores. Llega al contenido de un sitio sin tocar el resto de la base de datos.
- **Tu contenido, desde archivos.** `hollware export ./backup --url <la URL de tu Hollware> --token-file <archivo>` escribe cada entrada como Markdown; `hollware import ./backup` las recupera como borradores, sin cambios, que luego publicas. Guarda una exportación en otro lugar que no sea Cloudflare, con una frecuencia que tú definas: es la copia que sobrevive si pierdes la cuenta.
