> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Cómo alojar una aplicación Fastify (Node.js)

¿Ya tienes **Fastify instalado** (`npm i fastify`) y quieres **poner tu API Fastify en línea**? Esta guía muestra cómo alojar una aplicación Fastify en Square Cloud — configurando el `host` en `0.0.0.0` y el puerto correcto para correr 24/7.

## 1. Requisitos previos

Antes de subir tu aplicación Fastify, verifica que tengas:
* **Cuenta en Square Cloud:** Crea tu cuenta vía [Página de Registro](https://squarecloud.app/pt-br/signup) (correo o GitHub).
* **Plan Activo:** Es necesario un plan de pago para alojar. Consulta los [precios aquí](https://squarecloud.app/pt-br/pricing).

---

## 2. Configuración técnica del webserver

Para que tu aplicación Fastify reciba peticiones externas en Square Cloud, debes configurar el servidor para escuchar en el puerto **80** y, crucialmente, en la interfaz de red **0.0.0.0**.

### Ejemplo de código (Fastify v4+)
A diferencia de otros frameworks, Fastify exige que el `host` se especifique explícitamente para aceptar conexiones desde fuera del contenedor/nube.

```javascript
const fastify = require('fastify')({ logger: true });

const start = async () => {
  try {
    // Configuração vital para a Square Cloud
    await fastify.listen({ 
      port: 80, 
      host: '0.0.0.0' 
    });
    
    console.log("Webserver Fastify online na porta 80");
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

fastify.get('/', async (request, reply) => {
  return { status: 'online', framework: 'Fastify' };
});

start();
```

---

## 3. Proceso de Deploy

Sigue estos pasos para poner tu aplicación en línea:

1.  **Limpieza y compresión:** Crea un archivo `.zip` que contenga tu código fuente y el `package.json`. **No incluyas la carpeta `node_modules`**, pues Square Cloud instalará las dependencias automáticamente durante el build.
2.  **Upload:** En el Dashboard, haz clic en enviar nueva aplicación y selecciona tu archivo.
3.  **Publicación Web:** En el menú de envío, localiza y marca la opción **"Publicar en la Web"**.
4.  **Definición de subdominio:** Elige el nombre para tu subdominio gratuito. El enlace final seguirá el patrón `tusubdominio.squareweb.app`.

---

## 4. Dominios personalizados (Plan Standard+)

Si utilizas el plan **Standard o superior**, puedes elevar el nivel de tu proyecto utilizando un dominio propio (ej.: `api.tusitio.com`).

* La configuración se hace en la pestaña **Network** de la aplicación en el Dashboard.
* El certificado SSL (HTTPS) es generado y renovado automáticamente por Square Cloud, garantizando seguridad total sin costos adicionales ni configuraciones manuales de certificados.

---

## 5. Consejos de optimización

* **Logger en producción:** Fastify cuenta con un logger integrado (Pino). En producción, asegúrate de configurar el nivel de log adecuadamente para no sobrecargar el almacenamiento de logs innecesariamente.
* **Variables de entorno:** Almacena claves de API y conexiones de base de datos en el sistema de **ENVs** de Square Cloud.
* **Schema Validation:** Aprovecha el sistema de validación de JSON Schema de Fastify para aumentar el rendimiento de la serialización de datos en tu API alojada.