> ## 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 Flask (host 0.0.0.0)

¿Necesitas **alojar tu aplicación Flask** y configurar el `app.run(host="0.0.0.0")` para aceptar conexiones externas? Esta guía muestra el paso a paso para poner tu app Flask en línea en Square Cloud, con Gunicorn en producción y corriendo 24/7.

## 1. Requisitos previos
* **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 para producción (Gunicorn)

Aunque Flask cuenta con un servidor integrado (`app.run()`), no es adecuado para producción. **Gunicorn** permite que tu aplicación maneje múltiples peticiones simultáneas de forma eficiente.
Para que Square Cloud dirija el tráfico correctamente, Gunicorn debe configurarse para escuchar en la interfaz **0.0.0.0** y en el puerto **80**.

### Ejemplo de la aplicación (`app.py`)
```python
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Flask rodando em produção na Square Cloud!'

if __name__ == '__main__':
    # O app.run só é usado localmente
    app.run(host='0.0.0.0', port=80)
```

---

## 3. Realizando el Deploy

1.  **Compresión:** Crea un archivo `.zip` con tu código fuente y el `requirements.txt`. No incluyas carpetas de caché como `__pycache__` ni entornos virtuales (`venv`). El `requirements.txt` debe estar en la raíz del proyecto y contener al menos:
```text
  flask
  gunicorn
```
2.  **Upload:** En el Dashboard de Square Cloud, haz clic en enviar nueva aplicación.
3.  **Publicación Web:** En el menú de envío, marca la opción **"Publicar en la Web"**.
4.  **Subdominio:** Elige el nombre para tu subdominio gratuito (ej.: `mi-api.squareweb.app`).
5.  **Comando de inicio personalizado:** Para utilizar Gunicorn, debes definir un comando de inicio personalizado en el momento del envío (o en el archivo de configuración `squarecloud.app`). Utiliza el siguiente formato:
```bash
python -m gunicorn --bind 0.0.0.0:80 app:app
```
* **`--bind 0.0.0.0:80`**: Expone la aplicación en el puerto exigido por la plataforma.
* **`app:app`**: Indica que Gunicorn debe buscar el objeto `app` (el segundo "app") dentro del archivo `app.py` (el primer "app").
---

## 4. Dominios personalizados (Plan Standard+)

Los usuarios del plan **Standard o superior** pueden configurar dominios propios:
* Añade tu dominio (ej.: `api.tusitio.com`) en la pestaña **Network**.
* Square Cloud gestiona automáticamente el **SSL/HTTPS**, garantizando que tu comunicación sea cifrada sin costo adicional.

---

## 5. Consejos de optimización

* **Workers:** Si tu aplicación recibe mucho tráfico, puedes ajustar el número de workers en el comando de inicio (ej.: `--workers 3`).
* **Variables de entorno:** Utiliza la pestaña **ENV** en el Dashboard para almacenar `SECRET_KEY`, claves de API y URLs de base de datos.
* **Logs:** Monitorea la terminal del Dashboard para identificar errores de inicialización o excepciones de Python en tiempo real.