# 🚀 Cómo armé mi propio laboratorio DevOps: stack completo con monitoreo incluido

Hace tiempo vengo buscando una forma práctica y didáctica de enseñar DevOps sin depender de servicios pagos, con todo corriendo localmente, y que además sea realista. Así nació [**roxs-devops-stack**](https://github.com/roxsross/roxs-devops-stack), un laboratorio educativo con FastAPI, PostgreSQL, Nginx, Docker Compose y todo un stack de monitoreo con Prometheus y Grafana... ¡sí, todo en tu compu! 🧠💻

---

## 📦 Pre-requisitos técnicos

Para correr este laboratorio necesitás:

🔹 **Docker Desktop** instalado y corriendo  
🔹 **Docker Compose** v2.34 o superior \* ya viene incluido en el docker desktop  
🔹 **Make** (opcional, pero súper útil)  
🔹 Sistema operativo: Linux, macOS o Windows con WSL2  
🔹 Al menos **4 GB de RAM** (recomendado 8 GB)  
🔹 Mínimo **5 GB libres** en disco  
🔹 Conexión a internet para descargar imágenes la primera vez

Verificá si ya tenés todo listo:

```bash
docker version
Client:
 Version:           28.0.4
 API version:       1.48
 Go version:        go1.23.7
 Git commit:        b8034c0
 Built:             Tue Mar 25 15:06:09 2025
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

docker compose version

Docker Compose version v2.34.0-desktop.1

make --version # (opcional)
```

> 💡 Si estás en Windows, asegurate de tener **WSL2 activado** y Docker corriendo correctamente.

Podes completar el setup con mi blog anterior [https://blog.295devops.com/crea-tu-laboratorio-devops-local-sin-gastar-un-peso](https://blog.295devops.com/crea-tu-laboratorio-devops-local-sin-gastar-un-peso)

---

## 🎯 ¿Qué vas a encontrar en este proyecto?

La idea es que puedas aprender y practicar DevOps sin vueltas. El stack incluye:

* **Frontend con Nginx** y HTML/CSS/JS vanilla
    
* **Backend con FastAPI** y PostgreSQL
    
* **Docker y Docker Compose** para orquestar todo
    
* **Prometheus + Grafana** para monitoreo real
    
* **Node Exporter** para métricas de sistema
    
* Un **Makefile** lleno de comandos útiles
    
* Dashboards visuales listos para usar
    

> 💡 Ideal para quienes quieren aprender DevOps desde cero o armar su propio laboratorio para practicar CI/CD, monitoreo, troubleshooting y más.

---

## 🧱 Arquitectura simple pero poderosa

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1748203822050/628ab900-7b9e-4edc-bd50-c5e14afb0fa3.png align="center")

Todo esto conectado por redes Docker personalizadas (`roxs-devops-network` y `roxs-monitoring-network`), con métricas expuestas en `/metrics` y monitoreo en tiempo real de toda la aplicación. <mark>¡Literalmente podés ver cuántas requests hacés y cómo responde tu app! 🔍📈</mark>

---

## 🧪 ¿Cómo lo usás?

1. **Clonás el repo**:
    

```bash
git clone https://github.com/roxsross/roxs-devops-stack
cd roxs-devops-stack
make install
make all
```

2. Accedé a los servicios:
    

| Servicio | URL |
| --- | --- |
| Frontend | [http://localhost](http://localhost) |
| Backend API | [http://localhost:3000](http://localhost:3000) |
| Docs API (Swagger) | [http://localhost:3000/docs](http://localhost:3000/docs) |
| Prometheus | [http://localhost:9090](http://localhost:9090) |
| Grafana | [http://localhost:3001](http://localhost:3001) [(admin/admin)](http://localhost) |

---

## 🎮 ¿Qué podés hacer?

* Crear, listar, editar y borrar ítems desde el frontend
    
* Ver métricas como requests, latencia, uptime
    
* Ver dashboards en Grafana con performance y estado de todos los servicios
    
* Inspeccionar logs del backend
    
* Ver el estado de salud de cada contenedor
    
* Probar los endpoints con `curl` o Swagger UI
    

---

## 📊 El toque DevOps: métrica, logging y dashboards

Este no es solo un “todo corre en Docker”, sino que **incluye un sistema de monitoreo funcional**, con:

* Dashboards listos en Grafana
    
* Métricas de performance de la API
    
* Estado de la base de datos
    
* Logs estructurados del backend
    
* Health checks, latencia y uptimes
    

> 🎯 ¡Ideal para aprender Prometheus y Grafana sin pelearte con configuraciones!

---

## 🛠️ ¿Qué aprendés armándolo?

* Cómo dockerizar backend y frontend
    
* Cómo conectar servicios con redes personalizadas
    
* Cómo exponer y recolectar métricas con Prometheus
    
* Cómo visualizar todo con Grafana
    
* Cómo automatizar con Makefile
    
* Troubleshooting real con logs y health checks
    

---

## **📸 Screenshots by ROXS**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1748203589880/cc8543b6-d55c-4cce-ad56-53a30b38fbb1.png align="center")

Revisa en: [https://github.com/roxsross/roxs-devops-stack](https://github.com/roxsross/roxs-devops-stack)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1748203620044/1b2f30e2-c444-4a0b-a3b1-3f0a22e2f7ee.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1748203607787/c8fa9992-d26f-4845-a2c8-9703f1f40bf6.png align="center")

---

## 🧪 Casos de uso recomendados

* 🔍 Simular caídas y ver alertas en Prometheus/Grafana
    
* 🧩 Practicar debugging usando métricas y logs
    
* 📈 Agregar nuevas métricas personalizadas a FastAPI
    
* 🔐 Experimentar con escaneos de seguridad (Próximo paso del roadmap)
    
* 📦 Crear tu pipeline CI/CD con GitHub Actions usando este stack como base
    

---

## 📊 Detrás del monitoreo

La app expone métricas en `/metrics` usando Prometheus client for Python. Entre las métricas disponibles:

| [Métrica](https://github.com/prometheus/client_python) | [Sig](https://github.com/prometheus/client_python)nificado |
| --- | --- |
| `http_requests_total` | Requests HTTP totales |
| `http_request_duration_seconds` | Latencia promedio |
| `database_items_total` | Cantidad de ítems en la DB |
| `app_uptime_seconds` | Tiempo que lleva activa la app |
| `database_status` | Estado de conexión a PostgreSQL |

Todo esto es recolectado por **Prometheus**, y luego **Grafana** lo grafica automáticamente. Ya incluye dashboards preconfigurados.

---

## 🧰 Makefile: tu asistente DevOps

El `Makefile` te ahorra escribir comandos largos. Algunos highlights:

```bash
make up                # Levanta la app
make down              # La detiene
make monitoring        # Solo Prometheus + Grafana
make logs              # Ver logs en tiempo real
make health            # Chequeo de salud de servicios
make urls              # Muestra todas las URLs
```

---

### ⚙️ ¿Y si no quiero usar `make`?

Sin drama. Todos los comandos del Makefile también se pueden ejecutar manualmente con Docker Compose. Acá te dejo los pasos:

#### 🔧 Levantar la aplicación sin `make`

```bash
# 1. Cloná el repo
git clone https://github.com/roxsross/roxs-devops-stack
cd roxs-devops-stack

# 2. Levantar la aplicación principal
docker compose -f docker-compose.yml up -d

# 3. Levantar el stack de monitoreo
docker compose -f docker-compose.monitoring.yml up -d
```

#### 📊 Acceder a los servicios

| Servicio | URL |
| --- | --- |
| Frontend | [http://localhost](http://localhost) |
| Backend API | [http://localhost:3000](http://localhost:3000) |
| Swagger Docs | [http://localhost:3000/docs](http://localhost:3000/docs) |
| Prometheus | [http://localhost:9090](http://localhost:9090) |
| Grafana | [http://localhost:3001](http://localhost:3001) (admin/admin) |

#### 🔍 Ver logs

```bash
docker compose logs -f
docker compose -f docker-compose.monitoring.yml logs -f
```

> 💡 Consejo: si no usás `make`, podés revisar el archivo `Makefile` para ver todos los comandos disponibles y adaptarlos a tu estilo.

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Si utilizas una versión de Docker Compose anterior a la v2.34.0 (incluida en Docker Desktop), debes usar el comando <code>docker-compose</code> con guión en lugar de <code>docker compose</code> separado.</div>
</div>

---

## 💡 ¿Cómo personalizar este stack?

Algunas ideas para que lo hagas tuyo:

* Cambiá la base de datos a MySQL o MongoDB
    
* Usá React o Vue como frontend (sirve igual con Nginx)
    
* Agregá tu propio microservicio
    
* Sumá alertas reales con `Alertmanager`
    
* Añadí un `Dockerfile` para testing o CI
    

---

## 🧠 ¿Querés probarlo?

👉 [https://gith](https://github.com/roxsross/roxs-devops-stack)[ub.com/roxsross/](http://localhost/)[roxs-devops-sta](https://github.com/roxsross/roxs-devops-stack)[ck](http://localhost/)

Dale una estrella ⭐ si te gusta, y escribime si querés sumarte a contribuir o tenés ideas.

---

## 🔮 ¿Qué sigue?

Este es solo el comienzo. En el roadmap tengo pensado:

* CI/CD completo con GitHub Actions
    
* Deploy en Kubernetes con Helm y ArgoCD
    
* Configuración de Terraform para IaC
    
* Integración con herramientas de seguridad
    
* Test de performance y Chaos Engineering
    

¡Y todo lo vas a poder practicar con este stack base! 💥

---

## 🎓 Bonus: se viene **"90 Días** **de DevOps by Roxs"** 🚀

¿Querés aprender DevOps en serio, acompañado/a, y con práctica real?

🧑‍💻 Estoy lanzando una experiencia gratuita llamada **90 Días de DevOps by Roxs**, con:

* 🔁 Encuentros **semanales ó quincenales** (según cómo avancemos)
    
* 📦 Proyectos reales como el `roxs-devops-stack`
    
* 💬 Comunidad privada para dudas, feedback y networking
    
* 📈 Desafíos técnicos, guías y tips de carrera
    
* 🤝 Totalmente **GRATIS** (solo cupo limitado)
    

🎯 **Solo para las primeras 200 personas**

![Imagen generada](https://sdmntprwestus3.oaiusercontent.com/files/00000000-c51c-61fd-86ef-5007f762bd57/raw?se=2025-05-25T20%3A57%3A17Z&sp=r&sv=2024-08-04&sr=b&scid=3fc8dd31-3c37-52f9-9852-abc6155f7694&skoid=864daabb-d06a-46b3-a747-d35075313a83&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2025-05-25T00%3A21%3A36Z&ske=2025-05-26T00%3A21%3A36Z&sks=b&skv=2024-08-04&sig=yff0OFuIIdft8KYJayRmBGsmOnBdcXx0HvidLjFsM18%3D align="left")

---

### 👉 ¿Querés participar?

📩 Completá este [formulario de interés](https://forms.gle/iRTeHW8wrxcihbfm9) o escribime por redes y te mando el acceso cuando abramos inscripciones.

> ¡Va a ser una aventura intensa, práctica y transformadora!

---

## ✉️ Contacto

* 🐦 Twitter: [@roxsross](https://twitter.com/roxsross)
    
* 🔗 LinkedIn: [roxsross](https://linkedin.com/in/roxsross)
    
* ▶️ Youtube: [295devops](https://www.youtube.com/@295devops)
    
* 💌 Email: roxs@295devops.com
    

---

### 🤘 ¡Nos vemos en el próximo experimento DevOps!
