01 Brigadista Tecnico de Campo
Actualizado: 17 de marzo de 2026
Ruta de Aprendizaje y Onboarding: Brigadista / Técnico de Campo#
Esta guía es el punto de partida completo para todo nuevo Brigadista y Técnico de Campo en el proyecto SoyDigital / Indotel. Está diseñada para personas sin experiencia previa en tecnología. Al finalizar esta ruta de aprendizaje, estarás capacitado no solo para el despliegue físico del equipamiento ("Kits"), sino que entenderás la arquitectura de software, cómo se comunican las redes, y cómo resolver problemas in situ.
Tiempo estimado de estudio: 20–30 horas (autodirigido)
Prerrequisitos: Saber leer, tener disposición para aprender y acceso a una computadora con internet.
Índice de Contenidos y Mapa de Profundidad#
- Nivel 1 (Junior): Fundamentos Absolutos
- Clase 1.1: Anatomía de una Computadora y Límites Térmicos
- Clase 1.2: OS de Producción: El Kernel, CLI vs GUI
- Clase 1.3: Rol del Servidor Edge y Desincronización de Reloj (CMOS)
- Clase 1.4: Protocolo SSH y Problemas Man-In-The-Middle
- Nivel 2 (Semi-Senior): Ecosistema SoyDigital
- Clase 2.1: Objetivos del Despliegue en Campo
- Clase 2.2: Arquitectura Desacoplada y Fallos Asíncronos
- Clase 2.3: Tolerancia LAN y Estados Off-grid
- Clase 2.4: Composición Topológica del Kit Físico
- Nivel 3 (Senior): Redes LAN & Conectividad
- Clase 3.1: DHCP Roque, IPs Estáticas y ARP
- Clase 3.2: Modulación Wi-Fi e Interferencias Co-Canales
- Clase 3.3: DNS Spoofing para Portales Cautivos Evasivos
- Clase 3.4: Traceroute y Diagnósticos OSI Capa 3
- Nivel 4 (Arquitecto/Experto): Orquestación Contenerizada
- Clase 4.1: Archivos Overlay2 y Fugas de Almacenamiento Docker
- Clase 4.2: Puertos Vinculantes y Proxy Reverso Local
- Clase 4.3: Node Event Loop Memory (OOM) y Restart Policies
- Nivel 5: Mantenimiento VPN y Cierre Sincrónico
- Clase 5.1: Túneles NetBird UDP, P2P NAT Traversal
- Clase 5.2: Accesos de Contingencia Inversa (ngrok)
- Clase 5.3: Transaccionalidad Merge Offline y UUIDs UUIDv4
- Clase 5.4: Renovación de Autoridades de Certificados Locales
- Nivel 6: Pasos Operativos de Despliegue
- Anexo Avanzado: Instalación de Linux Bare-Metal y Edge Cases Globales
Exigencias y Requisitos Técnicos del Rol#
Este rol NO es administrativo. Eres el responsable de que todo funcione en campo, donde no hay nadie más a quien preguntar.
1. Dominio de Linux (OBLIGATORIO)#
Debes ser capaz de navegar por el sistema de archivos, editar archivos de configuración con nano, y gestionar servicios con systemctl. Si no sabes hacer esto, no estás calificado.
Acción: Completa el manual
00-Fundamentos-Linux-Esenciales.mdantes de seguir.
2. Redes Básicas#
Debes saber configurar una IP estática, entender qué es un DHCP, y diagnosticar problemas de conectividad con ping, curl y traceroute. No basta con decir "no hay internet", debes decir "el servidor DNS no responde".
3. Hardware y Montaje#
Debes saber crimpar un cable de red (RJ45), conectar un router, y verificar el estado físico de los servidores (RAM, disco).
4. Docker y Contenedores#
Debes entender qué es un contenedor, cómo ver sus logs (docker logs), y cómo reiniciarlo si se cuelga.
5. Documentación y Checklists#
Debes seguir los procedimientos al pie de la letra. Improvisar en campo causa desastres.
Nivel 1 (Junior) - Fundamentos Absolutos — ¿Qué es una Computadora?#
Antes de hablar de servidores y redes, necesitas entender de qué están hechas las máquinas con las que trabajas. Este nivel es para todos, sin importar tu experiencia previa.
Clase 1.1: Anatomía de una Computadora#
➤ Profundización Técnica / Casos de Borde:
- Degradación Térmica (Thermal Throttling): En República Dominicana, las altas temperaturas pueden hacer que la CPU baje su velocidad de ciclos de reloj para no sobrecalentarse (lento extremo).
- Falsos Contactos por Polvo: El polvo rural o tiza bloquea los pines de la RAM So-DIMM. Aprenderás a reconocer si la board da "3 pitidos" por falta intermitente de memoria, forzando limpiezas de pines in situ.
Una computadora, en su forma más simple, es una máquina que recibe instrucciones, las procesa y produce resultados. Esto aplica igual para tu teléfono celular, una laptop, o el servidor de campo del Kit.
Los 5 componentes fundamentales#
| Componente | Analogía | Función | ¿Qué pasa si falla? |
|---|---|---|---|
| CPU (Procesador) | El cerebro humano | Ejecuta las instrucciones del software, hace los cálculos | La computadora no enciende o se congela |
| RAM (Memoria) | La mesa de trabajo | Almacena datos que se están usando AHORA MISMO. Es temporal: se borra al apagar | El sistema se pone muy lento, las aplicaciones se cierran solas |
| Almacenamiento (SSD/HDD) | El archivero | Guarda datos permanentemente: el sistema operativo, fotos, la base de datos | Se pierden datos, el sistema no arranca |
| Placa Madre (Motherboard) | El sistema nervioso | Conecta todos los componentes entre sí | Nada funciona, la máquina está "muerta" |
| Fuente de Poder (PSU) | El corazón | Convierte la electricidad del enchufe al voltaje que necesita cada componente | No enciende nada |
Componentes de conectividad (críticos para nosotros)#
| Componente | Función | Cómo lo identificas físicamente |
|---|---|---|
| Puerto Ethernet (RJ-45) | Conexión por cable de red. Es el puerto rectangular más grande, usualmente con luces LED verdes/naranjas | Parece un enchufe de teléfono fijo pero más ancho |
| Antena Wi-Fi | Emite o recibe señal inalámbrica | Puede ser interna (no visible) o una antena externa con conector SMA |
| Puerto USB | Conexión de periféricos (teclado, mouse, memoria USB) | Rectangular, suele tener un símbolo de tridente |
| Puerto HDMI/DisplayPort | Conexión para monitor/pantalla | Trapezoidal (HDMI) o rectangular pequeño (DP) |
Los Mini-PCs de nuestros Kits#
En el programa SoyDigital no usamos computadoras de escritorio grandes. Usamos Mini-PCs — computadoras del tamaño de un libro grueso. Específicamente:
- Procesador: Intel de 4 núcleos (suficiente para correr los contenedores)
- RAM: 16 GB (permite múltiples aplicaciones simultáneas)
- Almacenamiento: SSD de 100 GB+ (rápido y sin partes móviles que se dañen por transporte)
- Red: 1 o 2 puertos Ethernet + Wi-Fi integrado
** Dato clave:** Estos Mini-PCs no tienen pantalla, teclado ni mouse conectados permanentemente. Se administran de forma remota por terminal (SSH). Tú como técnico los configurarás desde tu laptop.
Clase 1.2: ¿Qué es un Sistema Operativo?#
➤ Profundización Técnica / Casos de Borde:
- Kernel Panics: Si un M.2 SSD se desenchufa vibrando en la camioneta, el Kernel activa un protocolo de emergencia deteniendo el Mini-PC en pantalla negra total. Se resucita reconectando el M.2.
- OOM Killer (Out Of Memory): El Linux no perdona abusos. Si Next.js absorbe los 16GB, el Out of Memory Killer destruirá procesos vitales súbitamente. Monitorear con
htop.
El sistema operativo (SO) es el software que controla todo el hardware y permite que los programas funcionen. Es el intermediario entre tú (el usuario) y la máquina física.
Los tres sistemas operativos principales#
| SO | Uso principal | ¿Lo usamos en Indotel? |
|---|---|---|
| Windows | PCs de escritorio, oficinas | No en servidores. Los PCs de campo de los facilitadores sí pueden tenerlo |
| macOS | Computadoras Apple | No |
| Linux | Servidores, infraestructura, nube | SÍ — Todos nuestros servidores corren Linux (Ubuntu 24.04) |
¿Por qué Linux y no Windows?#
- Es gratis: No hay licencias que pagar por cada servidor.
- Es estable: Un servidor Linux puede estar encendido meses sin reiniciarse.
- Es ligero: No necesita interfaz gráfica de ventanas, ahorrando RAM y CPU para lo que importa.
- Es seguro: Menos virus, mejor control de permisos.
- Es el estándar: El 96% de los servidores del mundo usan Linux.
La Terminal / Línea de Comandos (CLI)#
A diferencia de Windows donde haces clic en iconos, en Linux controlas TODO escribiendo comandos de texto en una ventana negra llamada Terminal o CLI (Command Line Interface).
¿Por qué no usamos interfaz gráfica? Porque:
- Consume RAM innecesariamente
- Los servidores están en el campo, los administras remotamente — no hay monitor conectado
- Los comandos son más precisos y pueden automatizarse
Los 20 comandos que DEBES memorizar como Técnico#
Navegación y archivos:
| Comando | Qué hace | Ejemplo |
|---|---|---|
pwd | Muestra en qué carpeta estás parado | pwd → /home/critertec |
ls | Lista archivos en la carpeta actual | ls → muestra archivos |
ls -la | Lista TODO incluyendo ocultos, con permisos y tamaños | ls -la → lista detallada |
cd /ruta | Cambia a otra carpeta | cd /home/critertec/dominicana-front |
cd .. | Sube un nivel (carpeta padre) | Si estás en /home/critertec, te lleva a /home |
cat archivo | Muestra el contenido de un archivo de texto | cat .env → muestra variables de entorno |
nano archivo | Abre un editor de texto básico dentro de la terminal | nano .env → editar variables |
cp origen destino | Copia un archivo | cp .env .env.backup |
mv origen destino | Mueve o renombra un archivo | mv old.txt new.txt |
rm archivo | ELIMINA un archivo (¡no va a papelera!) | rm basura.log |
Sistema y monitoreo:
| Comando | Qué hace | Cuándo usarlo |
|---|---|---|
sudo | Ejecuta un comando como administrador (SuperUser DO) | Siempre que necesites instalar algo o cambiar configuraciones del sistema |
htop | Muestra CPU, RAM y procesos en tiempo real (como el Administrador de Tareas) | Cuando el servidor se pone lento |
df -h | Muestra espacio libre en disco | Si sospechas que el disco está lleno |
free -h | Muestra uso de RAM | Si las aplicaciones se cierran solas |
reboot | Reinicia el servidor | Último recurso — solo con aprobación |
systemctl status nombre | Verifica si un servicio está corriendo | systemctl status nginx |
journalctl -u nombre -f | Ve logs en vivo de un servicio | journalctl -u nginx -f |
Red:
| Comando | Qué hace | Cuándo usarlo |
|---|---|---|
ip a | Muestra las direcciones IP de todas las interfaces de red | Para verificar que el servidor tiene IP correcta |
ping 8.8.8.8 | Envía un "¿estás ahí?" al DNS de Google | Para verificar si hay salida a internet |
ping 192.168.0.1 | Ping al router local | Para verificar conexión a la red local |
** Regla de oro:** NUNCA ejecutes un comando con
sudo rm -rf /— esto borra TODO el sistema operativo sin posibilidad de recuperación.
Clase 1.3: ¿Qué es un Servidor?#
➤ Profundización Técnica / Casos de Borde:
- La Trampa de la Pila CMOS (RTC Sync Fallback): Si un Mini-PC pasa semanas apagado y se agota su batería redonda interna CR2032, al prender offline afirmará estar en el año
1980. Esto mata la encriptación y anula todo certificado SSL emitido (ERR_CERT_DATE_INVALID). Si sucede en campo, debes reescribir manualmente la fecha del mundo mediante comando Bash:sudo date -s "2026-03-05 13:00:00".
Un servidor es simplemente una computadora que ofrece servicios a otras computadoras. La diferencia con tu laptop no es el hardware, sino la función:
| Concepto | Tu Laptop | Servidor del Kit |
|---|---|---|
| Quién lo usa | Tú, una persona | Decenas/cientos de dispositivos |
| Está encendido | Cuando tú quieres | 24/7, siempre |
| Tiene pantalla | Sí | No (se administra por terminal remota) |
| Qué hace | Navegar, Office, juegos | Servir páginas web, guardar datos, emitir Wi-Fi |
En nuestro proyecto, el servidor del Kit cumple simultáneamente estas funciones:
- Servidor DNS (dnsmasq): Le dice a los teléfonos a dónde ir cuando escriben una dirección web
- Servidor Web (Nginx + Next.js): Sirve la aplicación educativa
- Servidor de Caché (GCS Proxy): Almacena localmente los videos y recursos para no depender de internet
- Servidor de Base de Datos (PostgreSQL): Guarda las notas, progreso y datos de los estudiantes
- Agente VPN (Netbird): Permite que el equipo de ingeniería lo administre remotamente
Clase 1.4: ¿Qué es SSH? (Acceso Remoto al Servidor)#
➤ Profundización Técnica / Casos de Borde:
- Strict Host Key Checking: Si formatiamos el Servidor Kit-02 recientemente, al intentar tu SSH anterior recibirás un enorme cuadro de error rojo "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" asumiendo un ataque hacker Man-In-The-Middle. Destruirás la huella caducada tecleando
ssh-keygen -R 192.168.0.159.
SSH (Secure Shell) es el protocolo que te permite controlar un servidor desde tu laptop a través de la red, como si estuvieras sentado frente a él.
¿Cómo funciona?#
Conectarte al servidor del Kit desde la misma LAN:#
bashssh critertec@192.168.0.159 # Te pide la contraseña (ver archivo .credentials) # Una vez dentro, cada comando que escribas se ejecuta EN EL SERVIDOR, no en tu laptop
Salir de la sesión SSH:#
bashexit # o presiona Ctrl + D
Tip: Si tu terminal dice
critertec@critertec-svr03:~$, estás conectado al SVR03. Si dice tu nombre de usuario normal, estás en tu laptop.
Nivel 2 (Semi-Senior) - Entendiendo el Proyecto SoyDigital#
Antes de tocar cables, necesitas entender qué hace la plataforma y para quién es.
Clase 2.1: Misión del Programa#
SoyDigital / Indotel es un programa del gobierno de República Dominicana para capacitar digitalmente a ciudadanos en zonas rurales y urbanas. Los ciudadanos:
- Se registran con su cédula dominicana (mínimo 16 años)
- Toman un diagnóstico que evalúa su nivel de conocimiento digital (resultado: nivel 1 al 4)
- Se les asigna un nivel (1 = más básico, 4 = más avanzado)
- Avanzan por módulos, actividades y recursos (videos, simuladores, PDFs, HTML)
- Al completar el 100% de recursos del nivel, aprueban un examen final
- Para niveles 2, 3 y 4, deben completar un mini-curso adicional
- Reciben un certificado digital emitido oficialmente
¿Dónde ocurre la capacitación?#
- En línea: Los ciudadanos con internet acceden desde su casa
- En ferias/brigadas: Equipos desplegados en campo llevan Kits a comunidades rurales donde no hay internet confiable
** Tu rol como Brigadista/Técnico:** Eres responsable de que el Kit funcione perfectamente en campo para que los ciudadanos puedan capacitarse sin depender de internet.
Clase 2.2: El Ecosistema de Aplicaciones#
➤ Profundización Técnica / Casos de Borde:
- Arquitectura Desacoplada Resiliente: Si el API backend (puerto 7000) falla temporalmente y arroja un Error HTTP
502 Bad Gateway, el Nginx seguirá levantado despachando elGCS Proxy(puerto 9000), permitiendo que los videos sigan reproduciéndose sin problemas de cara al ciudadano que ya está dentro. Cada bloque resiste apagones de los vecinos.
El sistema no es "una sola app". Son 14 repositorios que trabajan juntos:
| Aplicación | ¿Qué es? | ¿Quién la usa? | ¿Dónde corre? |
|---|---|---|---|
| dominicana-front | La app donde estudian los ciudadanos (Next.js, puerto 7011) | Ciudadanos (estudiantes) | En los servidores del Kit + en la nube (Vercel) |
| dominicana-api | El "cerebro" API (NestJS, puerto 7000) | Las otras apps la consultan | En la nube (Google Cloud Run) |
| dominicana-admin-front | Panel de administración (Next.js, puerto 7001) | Administradores de Indotel | En la nube (GCP) |
| brigades | Sistema de operación territorial (Next.js + GraphQL, puerto 23000) | Coordinadores de brigada | En la nube |
| dominicana-brigades-analitics | Dashboard de analítica (Next.js + Chart.js, puerto 3001) | Supervisores de brigadas | Embebido dentro de brigades vía iframe |
| gcs-proxy-cache | Caché de videos y recursos (Nginx, puerto 9000) | Invisible para el usuario | En cada servidor del Kit |
| crm-indotel | CRM de comunicaciones (Next.js + Twilio, puerto 3000) | Equipo de recontacto | En la nube |
| dominicana-simulator | Simuladores interactivos (HTML/CSS/JS estático) | Ciudadanos en los cursos | Google Cloud Storage / caché local |
| dominicana-landing-api | API de soporte landing (NestJS) | Landing pública | En la nube |
| landing-page-dominicana | Sitio público de captación (HTML + Bootstrap) | Público general | En la nube |
| analisis-usuarios-certificados | ETL + Dashboard (Python + Streamlit) | Directivos de Indotel | Local |
| docs-architecture | Documentación técnica (Markdown) | El equipo técnico | Este repositorio |
| docs-brigade | Portal web de documentación (Next.js) | Todo el equipo | En la nube |
| utils | Scripts de QA y soporte (Bash + Python) | Desarrolladores | Local |
El flujo completo en una feria#
Clase 2.3: La Jerarquía Educativa y Reglas Clave#
➤ Profundización Técnica / Casos de Borde:
- Race Conditions de Progreso: Si un alumno hace "Back" rápido y abre un módulo doble vez generándose "múltiples llamadas" de progreso, la persistencia local en DB intercepta colisiones asignando "Last Write Wins" u ordenamiento condicional asegurando que nunca haya progresos falsos.
El contenido está organizado jerárquicamente:
Reglas de negocio que debes conocer como técnico:
| Regla | Descripción | ¿Por qué te importa? |
|---|---|---|
| Anti-Downgrade | Si un ciudadano ya tiene nivel 3, un nuevo diagnóstico no lo puede bajar a nivel 2 | Si un ciudadano se queja de que "perdió su nivel", tranquilízalo: es imposible |
| Avance irreversible | El progreso nunca retrocede. Puede revisitar contenido anterior sin perder su posición | Los ciudadanos pueden releer sin miedo |
| Tolerancia LAN (≤3 recursos) | Si faltan hasta 3 recursos por ver pero aprobó el examen final, se permite certificar | Cubre fallas de red. Si faltan más de 3, hay un problema real de progreso |
| Mini-curso obligatorio | Niveles 2, 3 y 4 requieren al menos un mini-curso completado antes de certificar | Si un ciudadano dice "terminé todo pero no me da certificado", verificar si completó un mini-curso |
| Triple Click Bypass | Triple clic rápido en contenido salta el temporizador de lectura | Esto es SOLO para pruebas de campo, no se lo enseñes a los ciudadanos |
| Regla del Árbol de Manzanas | Al completar cualquier nivel troncal (2, 3 o 4), se desbloquea la exploración libre de todos los niveles | El ciudadano puede navegar libremente, pero certificar sigue requiriendo 100% |
Clase 2.4: ¿Qué es un "Kit" de Campo?#
Un Kit es el paquete completo de equipamiento que se despliega en cada sede:
| Equipo | Modelo | Función |
|---|---|---|
| Router | TP-Link ER7206 | Administra la red local, asigna IPs por DHCP, conecta a internet |
| Servidor | Mini-PC Ubuntu 24.04, 4 cores, 16GB RAM, 100GB SSD | Corre toda la plataforma educativa localmente |
| Access Point (AP) | TP-Link EAP610-Outdoor | Emite Wi-Fi "SoyDigital-2.4" y "SoyDigital-5" a 25 dBm |
| PCs de Campo | HP ProBook | Laptops para facilitadores y técnicos |
| Internet principal | Starlink | ~150 Mbps down / 20 Mbps up |
| Internet respaldo | LTE 4G | ~30 Mbps down / 10 Mbps up (failover automático) |
Configuración estándar de red en cada Kit#
Nivel 3 (Senior) - Redes y Conectividad Local (LAN)#
Clase 3.1: Conceptos de Red que Debes Dominar#
➤ �� Profundización Técnica / Casos de Borde:
- Rogue DHCP Injections: Si en una comunidad te conectan equivocadamente un router secundario de Claro al mismo Switch del LAN del Kit, ese router nuevo empezará a gritar y regalar sus propias IPs (DHCP Conflict). Las tablets se conectarán allí y no verán el simulador (Servidor .159). Debes aislar por completo la topología de la escuela del router de brigadas.
¿Qué es una IP?#
Es el número identificador de cada dispositivo en la red. Es como un número de teléfono.
- IP Privada (LAN): Solo funciona dentro de la red local. Ejemplos:
192.168.0.1,10.0.0.5 - IP Pública (WAN): Es la dirección que te identifica en internet. La asigna tu proveedor (Claro, Altice, Starlink)
En nuestro Kit, todas las IPs internas son privadas (192.168.0.x).
¿Qué es DHCP?#
Dynamic Host Configuration Protocol — Es el servicio que asigna IPs automáticamente. Sin DHCP, tendrías que configurar manualmente la IP de cada teléfono.
- ¿Quién lo da? El Router ER7206
- Rango:
192.168.0.100al.199(hasta 100 dispositivos) - DNS que entrega:
192.168.0.159(nuestro servidor) +8.8.8.8(Google como fallback) - Reserva por MAC: La MAC del servidor (
78-55-36-00-32-12Kit1,78-55-36-00-32-1BKit2) siempre recibe.159
¿Qué es DNS?#
Domain Name System — La "guía telefónica" de internet. Convierte nombres (google.com) en IPs.
En nuestro Kit usamos dnsmasq como DNS local. Miente deliberadamente: cuando un teléfono pregunta "¿dónde está capacitaciones.critertec.cloud?", responde 192.168.0.159 — nuestro propio servidor.
¿Qué es un Gateway?#
La "puerta de salida" de la LAN hacia internet. En nuestro caso: el Router (192.168.0.1).
¿Qué es una Máscara de Subred?#
Define cuántos dispositivos caben. Nuestra máscara es /24 = 254 dispositivos posibles (.1 al .254).
Clase 3.2: ¿Cómo Funciona el Wi-Fi en el Kit?#
➤ Profundización Técnica / Casos de Borde:
- Solapamiento y Espectro (Co-channel Interference): Con 200 alumnos, dejar el Wi-Fi en 2.4Ghz y
Canal Autoes un desastre arquitectónico. El brigadista ancla el AP manualmente a canales ortogonales secos (1, 6 o 11) con anchos de banda compactos (20MHz) minimizando así el retardo letal de aire (Air-Time latency).
El Access Point emite dos redes:
| Red | Frecuencia | Ventaja | Limitación |
|---|---|---|---|
| SoyDigital-2.4 | 2.4 GHz | Mayor alcance (~80m outdoor), atraviesa paredes | Más lento, más interferencias |
| SoyDigital-5 | 5 GHz | Más rápido, menos interferencias | Menor alcance (~50m) |
Seguridad: WPA-Personal (AES). Potencia: 25 dBm (máximo).
Secuencia completa de conexión de un teléfono#
Clase 3.3: El Portal Cautivo#
Cuando un teléfono se conecta al Wi-Fi, iOS/Android prueban automáticamente si hay internet real:
- Android:
http://connectivitycheck.gstatic.com/generate_204 - iOS:
http://captive.apple.com/hotspot-detect.html
Nuestro servidor intercepta ese ping y responde HTTP 302 Redirect hacia https://capacitaciones.critertec.cloud. El teléfono entiende "hay portal cautivo" y abre una ventana del navegador automáticamente.
Nota sobre iOS: Apple a veces no abre el portal automáticamente. Solución: el estudiante abre Safari manualmente y escribe cualquier URL.
Clase 3.4: Comandos de Diagnóstico de Red#
| Síntoma | Comando | Resultado esperado |
|---|---|---|
| "No sale el Wi-Fi" | Revisar LEDs del AP. Verificar cable Ethernet | LEDs encendidos |
| "Se conectan pero no carga la página" | systemctl status dnsmasq | Active: running |
| "Carga la web pero no los videos" | curl http://localhost:9000 | Respuesta HTTP del proxy |
| "No hay internet real" | ping 8.8.8.8 | 64 bytes from 8.8.8.8: time=Xms |
| "No sé la IP del servidor" | ip a | Busca 192.168.0.159 en enp1s0 |
| "¿Cuántos conectados hay?" | Panel del Router (192.168.0.1) | Lista de clientes DHCP |
Nivel 4 (Arquitecto/Experto) - Contenedores, Docker y PM2#
Clase 4.1: ¿Qué es Docker?#
➤ Profundización Técnica / Casos de Borde:
- Clogging de Overlay2: Docker no borra las imágenes viejas post-actualizaciones. Semanas después, el
/var/lib/docker/overlay2alcanzará los 99GB llenando el disco maestro arrojando "No space left on device" incluso fallando las re-sincronizaciones de base de datos. Se soluciona obligatoriamente mediante limpiezas agresivas:docker system prune -af.
Imagina que necesitas preparar una receta de cocina. Docker es el kit de comida pre-empacado que trae todo listo — solo calientas y funciona. Un contenedor es un paquete que trae una aplicación con TODO lo que necesita, sin importar en qué computadora lo pongas.
| Término | Qué es | Analogía |
|---|---|---|
| Imagen | El plano/receta del software | Un molde de galletas |
| Contenedor | La instancia ejecutándose | Una galleta hecha con el molde |
| Docker Compose | Archivo que define VARIOS contenedores juntos | Un menú completo |
| Volumen | Almacenamiento permanente que sobrevive si el contenedor muere | El archivero externo |
Clase 4.2: Los Servicios del Kit#
| Servicio | Tecnología | Puerto | Función |
|---|---|---|---|
| Frontend | PM2 x4 (Next.js) | 7011 (localhost) | La app que ven los estudiantes |
| Nginx | Nativo | 80 y 443 | Proxy inverso, SSL, redirección |
| GCS Proxy | Nginx | 9000 (localhost) | Caché de videos/recursos (20GB max) |
| PostgreSQL | Nativo | 5432 | Base de datos |
| dnsmasq | Nativo | 53 | DNS local |
| Netbird | Agente | VPN | Red privada de gestión |
| ngrok | Proceso | Variable | Túnel SSH de respaldo |
Clase 4.3: Comandos Esenciales#
➤ Profundización Técnica / Casos de Borde:
- PM2 Zombie Logs: El PM2 guardará logs en
.pm2/logshasta el infinito a menos de ser encapsulado (Log rotation limits). Observar un contenedor "online" pero lagueado pide unpm2 flushlimpiador como primer auxilio de sistema.
Docker:
bashdocker ps # Contenedores corriendo docker ps -a # TODOS (incluyendo detenidos) docker logs nombre_contenedor # Ver logs docker logs -f nombre_contenedor # Logs en tiempo real docker restart nombre_contenedor # Reiniciar docker compose up -d # Levantar todos (Compose) docker compose down # Apagar todos (Compose) docker system df # Espacio usado por Docker
PM2:
bashpm2 status # Estado de las apps (debe decir "online" x4) pm2 logs # Ver logs en vivo pm2 logs --err # Solo errores pm2 restart all # Reiniciar todo pm2 monit # Monitor de uso interactivo
Resultado esperado de pm2 status:
| id | name | mode | status | cpu | memory |
|---|---|---|---|---|---|
| 0 | front | cluster | online | 0% | 180MB |
| 1 | front | cluster | online | 0% | 175MB |
| 2 | front | cluster | online | 0% | 182MB |
| 3 | front | cluster | online | 0% | 178MB |
Nivel 5: VPN, Sincronización y Mantenimiento#
Clase 5.1: NetBird — Red Privada Virtual (VPN)#
➤ Profundización Técnica / Casos de Borde:
- Netbird Split-Brain / MTU Drop: Netbird encapsula paquetes IP nativos. Si navegas por 3G/LTE Claro intermitente, que soporta 1420 bytes, el paquete default (1500 bytes) excederá el límite, quedando destruido transparentemente sin aviso. Los técnicos deben bajar un valor del "MTU de Virtualización" a
1280permitiendo paso forzado por redes ahogadas.
Problema: Servidores en campo a horas de distancia. ¿Enviar técnico cada vez que falla algo?
Solución: NetBird conecta todos los equipos como si estuvieran en la misma oficina.
| Equipo | IP Netbird | Dominio VPN |
|---|---|---|
| SVR03 (Kit 1) | 100.112.210.253 | critertec-svr03.vpn.critertec.cloud |
| SVR04 (Kit 2) | 100.112.129.186 | critertec-svr04.vpn.critertec.cloud |
| PC Campo 1 | 100.112.86.15 | critertec-pc-campo-1.vpn.critertec.cloud |
| PC Campo 2 | 100.112.32.91 | critertec-pc-campo-2.vpn.critertec.cloud |
| PC Campo 3 | 100.112.193.49 | critertec-pc-campo-3.vpn.critertec.cloud |
bash# Verificar estado netbird status # Esperado: Status: Connected | Management: Connected | Signal: Connected # Si dice Disconnected: sudo systemctl restart netbird
Clase 5.2: ngrok — Plan B de Acceso Remoto#
| Equipo | Dirección | Puerto |
|---|---|---|
| SVR03 | 5.tcp.ngrok.io | 21911 |
| SVR04 | 5.tcp.ngrok.io | 21918 |
| PC Campo 1 | 5.tcp.ngrok.io | 26919 |
| PC Campo 2 | 5.tcp.ngrok.io | 27725 |
| PC Campo 3 | 3.tcp.ngrok.io | 20874 |
**** ngrok se ejecuta manualmente y no sobrevive a reinicios.
Clase 5.3: Sincronización Offline → Nube#
Los datos se guardan localmente en PostgreSQL. Cuando hay internet:
- El sistema detecta conectividad
- Empaqueta datos en lotes de 50 registros
- Los envía a la API en la nube con
clientRequestId(UUID) para evitar duplicados - La nube confirma recepción
- Si hay conflictos, gana el dato más reciente (estrategia MERGE por defecto)
Si "las notas no suben": 1)
ping 8.8.8.82)netbird status3)pm2 logs
Clase 5.4: Certificados SSL#
| Dato | Valor |
|---|---|
| Tipo | Let's Encrypt (gratuito, 90 días) |
| Vencimiento | 28 de mayo de 2026 |
| Renovación | Manual (certbot certonly --manual + actualizar TXT en Hostinger) |
**** Sin SSL renovado, los navegadores mostrarán "Sitio no seguro" y los ciudadanos no podrán acceder.
Nivel 6: Paso a Paso de un Despliegue Real#
Fase 1: Preparación#
- Kit completo (Router, Servidor, AP, cables, fuentes)
- Laptop cargada con SSH configurado
- Credenciales a mano (archivo
.credentials) - Cable Ethernet para tu laptop
Fase 2: Montaje Físico#
- Router → fuente de poder. Starlink a WAN2. LTE a WAN/LAN3 (si hay)
- Servidor → fuente de poder + Ethernet a cualquier puerto LAN del Router
- Access Point → Ethernet al Router (PoE: cable = datos + energía)
- Esperar 3-5 minutos
Fase 3: Verificación Wi-Fi#
- Buscar
SoyDigital-2.4oSoyDigital-5en tu teléfono - Conectar → abrir navegador → debe cargar la plataforma
Fase 4: Verificación Técnica#
bashssh critertec@192.168.0.159 pm2 status # 4 instancias "online" systemctl status nginx # Active: running systemctl status dnsmasq # Active: running netbird status # Connected curl -k https://localhost # Debe devolver HTML df -h # Disco no al 100% free -h # Al menos 2GB RAM libres
Fase 5: Entrega#
- Informar a facilitadores que la plataforma está lista
- Estudiantes se conectan a Wi-Fi → abren navegador
- Monitorear periódicamente
Fase 6: Cierre#
- NO apagar nada (sincronización nocturna)
- Verificar NetBird
Connected - Reportar al coordinador: cantidad de estudiantes, incidentes, estado del internet
Guía Rápida de Troubleshooting#
| Problema | Causa Probable | Solución |
|---|---|---|
| No sale el Wi-Fi | AP sin energía/cable | Verificar cable Ethernet y LEDs del AP |
| Wi-Fi pero no carga web | dnsmasq o Nginx caídos | SSH → systemctl restart dnsmasq y systemctl restart nginx |
| Web carga pero sin videos | GCS Proxy caído | curl http://localhost:9000, revisar logs Nginx |
| Se cayó de repente | RAM o disco llenos | free -h, df -h. Si disco >90%: sudo rm -rf /var/cache/nginx/gcs-proxy/* |
| No se puede registrar | Error en app/DB | pm2 logs --err |
| Notas no sincronizan | Sin internet o error de sync | ping 8.8.8.8, pm2 logs |
| Portal no aparece en iPhone | Comportamiento de Apple | Abrir Safari manualmente y escribir cualquier URL |
| NetBird Disconnected | Falla de red/llaves | sudo systemctl restart netbird (esperar 30s) |
| PM2 dice "errored" | Error en la app | pm2 logs --err, luego pm2 restart all |
| Disco lleno al 100% | Logs o caché acumulados | sudo journalctl --vacuum-time=3d y limpiar caché |
Glosario del Técnico de Campo#
| Término | Significado |
|---|---|
| API | Application Programming Interface — el "cerebro" que procesa peticiones y devuelve datos |
| AP (Access Point) | Dispositivo que emite la señal Wi-Fi |
| Cache/Caché | Copia local de datos para no descargarlos cada vez |
| CLI | Command Line Interface — terminal de comandos |
| DHCP | Servicio que asigna IPs automáticamente |
| DNS | Servicio que traduce nombres web a IPs |
| Docker | Software que empaqueta aplicaciones en contenedores aislados |
| Failover | Cambio automático de internet principal a respaldo |
| Firewall | Barrera de seguridad que controla tráfico de red |
| Gateway | Puerta de salida de la red local a internet |
| HTTP/HTTPS | Protocolo web (HTTPS = con cifrado/candado) |
| IP | Dirección numérica de un dispositivo en la red |
| Kit | Conjunto completo de equipos para una sede |
| LAN | Local Area Network — red local |
| Mini-PC | Computadora compacta que funciona como servidor |
| Nginx | Software proxy que recibe tráfico web y lo redirige |
| Offline-First | Diseño donde la app funciona sin internet primero |
| PM2 | Administrador de procesos Node.js |
| PoE | Power over Ethernet — energía por cable de red |
| PostgreSQL | Base de datos relacional |
| S2S | Server-to-Server — comunicación entre servidores |
| SSH | Protocolo de control remoto seguro |
| SSL/TLS | Protocolo de cifrado para HTTPS |
| VPN | Red privada virtual que conecta equipos remotos |
| WAN | Wide Area Network — internet |
Con estas bases teóricas y prácticas, estás listo para operar la infraestructura más crítica del programa, donde la tecnología se encuentra cara a cara con el usuario final.
Tutorial Práctico Avanzado: Despliegue de SO y Preparación de Hardware (Multi-Plataforma)#
En ocasiones, un Mini-PC requiere una reinstalación profunda desde "Bare Metal" debido a discos corruptos o fallos críticos. Todo técnico de campo debe dominar la creación de medios de instalación y la resolución de problemas en sitio.
Paso 1: Creación del USB Booteable (Multi-SO)#
Necesitas un pendrive USB de 8GB+ (se borrará) y la ISO oficial de Ubuntu Server/Desktop (descargada de releases.ubuntu.com).
A. Si usas Windows para prepararlo:#
- Rufus (Herramienta Estándar): Descarga Rufus (rufus.ie).
- Abre Rufus -> Selecciona tu USB -> Selecciona el archivo
.iso. - Esquema de partición: Selecciona GPT (para sistemas UEFI modernos).
- Sistema de destino: UEFI (no CSM).
- Formato: FAT32 o NTFS. Clic en Empezar. Si pide descargar GRUB/Syslinux, dale a "Sí".
- Abre Rufus -> Selecciona tu USB -> Selecciona el archivo
- BalenaEtcher: Más sencillo, sin opciones técnicas. Seleccionar ISO -> Seleccionar USB -> Flash.
B. Si usas macOS para prepararlo:#
- BalenaEtcher: Es el recomendado y ofrece interfaz gráfica directa.
- Vía Terminal (Usuarios Avanzados):
- Ejecuta
diskutil listpara encontrar tu USB (por ejemplo,/dev/disk2). - Desmonta el disco:
diskutil unmountDisk /dev/disk2 - Quema la imagen con permisos root (usa
rdiskpara velocidad cruda):sudo dd if=/Ruta/a/ubuntu.iso of=/dev/rdisk2 bs=1m - Espera a que termine (no arrojará output hasta finalizar).
- Ejecuta
C. Si usas Linux para prepararlo:#
- Herramientas Gráficas: "Startup Disk Creator" (Ubuntu) o Popsicle (Pop!_OS).
- Vía Terminal con
dd:- Detecta la ruta del USB con
lsblk(ej./dev/sdb). - Desmonta si está montado:
sudo umount /dev/sdb1 - Quema:
sudo dd if=/ruta/a/ubuntu.iso of=/dev/sdb bs=4M status=progress && sync - ¡CUIDADO! No sobreescribas tu disco principal (
/dev/sdaonvme0n1).
- Detecta la ruta del USB con
Paso 2: Parametrizaciones de BIOS/UEFI en el Mini-PC#
- Conecta monitor, teclado y el USB al Mini-PC apagado.
- Al encender presiona rápidamente la tecla de la BIOS (
Supr,DEL,F2,F10según el fabricante). - Deshabilitar Secure Boot: Ve a la viñeta "Security" -> "Secure Boot" -> Cámbialo a
Disabled. Evitará bloqueos de certificados para Linux. - Deshabilitar Fast Boot: Ve a "Boot" -> quita "Fast Boot". Ayuda a que lea correctamente el USB.
- Orden de Arranque: Fuerza como Opción "Boot #1" tu USB. Presiona
F10para guardar y salir.
Paso 3: Instalación de Linux paso a paso#
- En pantalla negra (GRUB), selecciona "Try or Install Ubuntu".
- Caso Borde (Pantalla Negra al instalar): Apaga, enciende, en el menú GRUB presiona
e, añade la palabranomodesettras la palabraquiet splashen la línealinux. Presiona F10. Sirve para saltarse problemas de drivers gráficos.
- Caso Borde (Pantalla Negra al instalar): Apaga, enciende, en el menú GRUB presiona
- Avanza con el idioma y disposición de teclado.
- Red: De ser posible, conecta cable Ethernet para bajar módulos extra al instalar.
- Particionado: Escoge "Usar disco completo" (Erase disk / LVM). Apto para sistemas dedicados.
- Detalles de Usuario: Usa el estándar Indotel (ej. Host:
indotel-sv04, Usuario:admin_indotel). - OpenSSH Server: Durante la configuración, marca la casilla con la barra espaciadora para instalar OpenSSH. Sin esto, el equipo quedará aislado para soporte remoto (DevOps).
- Espera, retira el USB cuando lo pida y reinicia. Ejecuta de inmediato
sudo apt update && sudo apt upgrade -ye instaladocker.io,htop,curl,net-tools.
Ruta de Dominio y Escalafón Profesional (Matriz de Habilidades)#
Para garantizar la estabilidad física y perimetral de los sistemas Indotel en el campo, el Brigadista escala desde la logística base hasta la ingeniería de Hardware crítica.
Nivel Junior (Operador de Campo / Hands-on)#
- Infraestructura Física Estándar: Capacidad de realizar terminaciones de cableado estructurado según la Norma T568B. Ensamblado de racks y asegurado de los equipos con manejo electrostático limpio.
- Sistema Operativo Básico: Entendimiento firme del tutorial de flasheo visto anteriormente (Rufus/BalenaEtcher). Sabe instalar Ubuntu con OpenSSH o restaurarlo desde 0.
- Logística Starlink: Instalación mecánica de plato satelital Starlink sin obstrucciones de línea de visión (LoS). Evitar dobleces que fracturen el mallado interno del cable de fibra de vidrio.
Nivel Semi-Senior (Técnico de Conectividad y Resiliencia)#
- Poder y Energía: Dominio total de topologías UPS e Inversores; entender límites de tolerancia (Watts vs VA). Manejo de PoE (Power over Ethernet) vs PoE+, sabiendo diagnosticar caídas por cortocircuitos eléctricos.
- Linux en Consola (Nivel Medio): Capacidad para levantar redes caídas escribiendo configs crudos. Uso de
ip addr,nmcli(NetworkManager) y revisión de tarjetas físicas quemadas mediante los logsdmesg | tail. - Validación de Capa 2 (Switching): Mapeo y re-configuración del Switch de acceso físico. Identificar qué puerto tiene actividad (LED-link) o fue dado de baja localmente por seguridad/Spanning Tree (STP).
Nivel Senior (Analista de Desastres / Hardware Extreme)#
- Extreme Disaster Recovery de Linux: Si el sistema de arranque falla por corrupción severa de un rayo, sabe usar un "Live USB" (Modo Try-Ubuntu), montar y usar
chrootpara regenerar módulos quemados o unGRUBdañado. - Recuperación BIOS "Bare Metal": Frente a contraseñas administrativas olvidadas, el Senior desarma físicamente el hardware y hace "Jumper Reset" o "Clear CMOS" mediante la remoción de las pilas de litio placa madre.
- Bridge-Mode de ISP Locales: Capacidad de tomar módems genéricos de contratistas (Claro, Altice, etc) conectándose por cable serie o consola, reconfigurar la tabla NAT interna, destripar rutas y poner el equipo del ISP en pasarela pura (Bridge mode) entregando la IP Pública al EdgeRouter/Mini-PC para evasión limpia de doble-NAT.
Escenarios Críticos y Troubleshooting Exhaustivo (Edge Cases)#
1. Tormenta Eléctrica incinera el Puerto Ethernet (Daño Físico M.2/Motherboard)
- Síntoma: El Mini-PC enciende pero
ip ano muestraeth0o la marca muerta (NO-CARRIER), el LED interno RJ45 parpadea en naranja y rojo intermitente. - Protocolo de Acción del Brigadista:
- Utilizar un Dongle Convertidor USB a Gigabit Ethernet de respaldo (llevar siempre 1 en mochila).
- Al conectarlo, lanzar en la terminal
dmesg | grep -i usbolsusbpara verificar que el bridge RTL8153 fue reconocido. - Ejecutar
ip apara obtener el nombre alfanumérico largo (ej.enx001e...). - Entrar al archivo de red usando editor de terminal:
sudo nano /etc/netplan/00-installer-config.yamly sustituir la tarjeta quemada por la nueva. Guardar, presionarCtrl + O,Enter,Ctrl + Xy aplicar:sudo netplan apply.
2. Sistema en Read-Only (Loop Ininfinito por Falla Electromagnética)
- Síntoma: Archivos protegidos, Docker en crash loop, bases de datos cerradas con
I/O lock. - Protocolo de Acción: El SSD (M.2) bloquea sus sectores físicos ante daño inminente. El brigadista debe reiniciar. Presionar
Shift / ESCen arranque -> Entrar aAdvanced Optionsde Ubuntu -> Modo Recovery -> Seleccionarfscky confirmar. Si no funciona: Cambio completo y físico de módulo M.2 NVMe usando el tutorial principal.
3. Apagones repetitivos gatillan un "Factory Reset" Satelital (Caso Starlink Gen2)
- Síntoma: El sistema Starlink interpreta cortes de 1-segundo (flickering de energía rural) como un intento del usuario por resetear el Router del Starlink, regresándolo a su nombre por defecto ("STINKY") quitando "Bypass Mode".
- Protocolo de Acción: En el Mini-PC, cambiar temporalmente la interfaz cableada a IP de fábrica:
sudo ip address add 192.168.1.99/24 dev eth0, acceder con una Tablet o Celular al router192.168.1.1u App oficial y configurar "Estación Satelital" de nuevo para pasarlo a modo Bypass (Bridge). Reiniciar y conectar el router/firewall a continuación.