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.md antes 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#

ComponenteAnalogíaFunción¿Qué pasa si falla?
CPU (Procesador)El cerebro humanoEjecuta las instrucciones del software, hace los cálculosLa computadora no enciende o se congela
RAM (Memoria)La mesa de trabajoAlmacena datos que se están usando AHORA MISMO. Es temporal: se borra al apagarEl sistema se pone muy lento, las aplicaciones se cierran solas
Almacenamiento (SSD/HDD)El archiveroGuarda datos permanentemente: el sistema operativo, fotos, la base de datosSe pierden datos, el sistema no arranca
Placa Madre (Motherboard)El sistema nerviosoConecta todos los componentes entre síNada funciona, la máquina está "muerta"
Fuente de Poder (PSU)El corazónConvierte la electricidad del enchufe al voltaje que necesita cada componenteNo enciende nada

Componentes de conectividad (críticos para nosotros)#

ComponenteFunciónCó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/naranjasParece un enchufe de teléfono fijo pero más ancho
Antena Wi-FiEmite o recibe señal inalámbricaPuede ser interna (no visible) o una antena externa con conector SMA
Puerto USBConexión de periféricos (teclado, mouse, memoria USB)Rectangular, suele tener un símbolo de tridente
Puerto HDMI/DisplayPortConexión para monitor/pantallaTrapezoidal (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#

SOUso principal¿Lo usamos en Indotel?
WindowsPCs de escritorio, oficinasNo en servidores. Los PCs de campo de los facilitadores sí pueden tenerlo
macOSComputadoras AppleNo
LinuxServidores, infraestructura, nubeSÍ — Todos nuestros servidores corren Linux (Ubuntu 24.04)

¿Por qué Linux y no Windows?#

  1. Es gratis: No hay licencias que pagar por cada servidor.
  2. Es estable: Un servidor Linux puede estar encendido meses sin reiniciarse.
  3. Es ligero: No necesita interfaz gráfica de ventanas, ahorrando RAM y CPU para lo que importa.
  4. Es seguro: Menos virus, mejor control de permisos.
  5. 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:

ComandoQué haceEjemplo
pwdMuestra en qué carpeta estás paradopwd/home/critertec
lsLista archivos en la carpeta actualls → muestra archivos
ls -laLista TODO incluyendo ocultos, con permisos y tamañosls -la → lista detallada
cd /rutaCambia a otra carpetacd /home/critertec/dominicana-front
cd ..Sube un nivel (carpeta padre)Si estás en /home/critertec, te lleva a /home
cat archivoMuestra el contenido de un archivo de textocat .env → muestra variables de entorno
nano archivoAbre un editor de texto básico dentro de la terminalnano .env → editar variables
cp origen destinoCopia un archivocp .env .env.backup
mv origen destinoMueve o renombra un archivomv old.txt new.txt
rm archivoELIMINA un archivo (¡no va a papelera!)rm basura.log

Sistema y monitoreo:

ComandoQué haceCuándo usarlo
sudoEjecuta un comando como administrador (SuperUser DO)Siempre que necesites instalar algo o cambiar configuraciones del sistema
htopMuestra CPU, RAM y procesos en tiempo real (como el Administrador de Tareas)Cuando el servidor se pone lento
df -hMuestra espacio libre en discoSi sospechas que el disco está lleno
free -hMuestra uso de RAMSi las aplicaciones se cierran solas
rebootReinicia el servidorÚltimo recurso — solo con aprobación
systemctl status nombreVerifica si un servicio está corriendosystemctl status nginx
journalctl -u nombre -fVe logs en vivo de un serviciojournalctl -u nginx -f

Red:

ComandoQué haceCuándo usarlo
ip aMuestra las direcciones IP de todas las interfaces de redPara verificar que el servidor tiene IP correcta
ping 8.8.8.8Envía un "¿estás ahí?" al DNS de GooglePara verificar si hay salida a internet
ping 192.168.0.1Ping al router localPara 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:

ConceptoTu LaptopServidor del Kit
Quién lo usaTú, una personaDecenas/cientos de dispositivos
Está encendidoCuando tú quieres24/7, siempre
Tiene pantallaNo (se administra por terminal remota)
Qué haceNavegar, Office, juegosServir páginas web, guardar datos, emitir Wi-Fi

En nuestro proyecto, el servidor del Kit cumple simultáneamente estas funciones:

  1. Servidor DNS (dnsmasq): Le dice a los teléfonos a dónde ir cuando escriben una dirección web
  2. Servidor Web (Nginx + Next.js): Sirve la aplicación educativa
  3. Servidor de Caché (GCS Proxy): Almacena localmente los videos y recursos para no depender de internet
  4. Servidor de Base de Datos (PostgreSQL): Guarda las notas, progreso y datos de los estudiantes
  5. 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?#

Ctrl+Scroll=Zoom · Arrastrar=Mover

Conectarte al servidor del Kit desde la misma LAN:#

bash
ssh 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:#

bash
exit
# 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:

  1. Se registran con su cédula dominicana (mínimo 16 años)
  2. Toman un diagnóstico que evalúa su nivel de conocimiento digital (resultado: nivel 1 al 4)
  3. Se les asigna un nivel (1 = más básico, 4 = más avanzado)
  4. Avanzan por módulos, actividades y recursos (videos, simuladores, PDFs, HTML)
  5. Al completar el 100% de recursos del nivel, aprueban un examen final
  6. Para niveles 2, 3 y 4, deben completar un mini-curso adicional
  7. 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 el GCS 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-frontLa app donde estudian los ciudadanos (Next.js, puerto 7011)Ciudadanos (estudiantes)En los servidores del Kit + en la nube (Vercel)
dominicana-apiEl "cerebro" API (NestJS, puerto 7000)Las otras apps la consultanEn la nube (Google Cloud Run)
dominicana-admin-frontPanel de administración (Next.js, puerto 7001)Administradores de IndotelEn la nube (GCP)
brigadesSistema de operación territorial (Next.js + GraphQL, puerto 23000)Coordinadores de brigadaEn la nube
dominicana-brigades-analiticsDashboard de analítica (Next.js + Chart.js, puerto 3001)Supervisores de brigadasEmbebido dentro de brigades vía iframe
gcs-proxy-cacheCaché de videos y recursos (Nginx, puerto 9000)Invisible para el usuarioEn cada servidor del Kit
crm-indotelCRM de comunicaciones (Next.js + Twilio, puerto 3000)Equipo de recontactoEn la nube
dominicana-simulatorSimuladores interactivos (HTML/CSS/JS estático)Ciudadanos en los cursosGoogle Cloud Storage / caché local
dominicana-landing-apiAPI de soporte landing (NestJS)Landing públicaEn la nube
landing-page-dominicanaSitio público de captación (HTML + Bootstrap)Público generalEn la nube
analisis-usuarios-certificadosETL + Dashboard (Python + Streamlit)Directivos de IndotelLocal
docs-architectureDocumentación técnica (Markdown)El equipo técnicoEste repositorio
docs-brigadePortal web de documentación (Next.js)Todo el equipoEn la nube
utilsScripts de QA y soporte (Bash + Python)DesarrolladoresLocal

El flujo completo en una feria#

Ctrl+Scroll=Zoom · Arrastrar=Mover

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:

Ctrl+Scroll=Zoom · Arrastrar=Mover

Reglas de negocio que debes conocer como técnico:

ReglaDescripción¿Por qué te importa?
Anti-DowngradeSi un ciudadano ya tiene nivel 3, un nuevo diagnóstico no lo puede bajar a nivel 2Si un ciudadano se queja de que "perdió su nivel", tranquilízalo: es imposible
Avance irreversibleEl progreso nunca retrocede. Puede revisitar contenido anterior sin perder su posiciónLos ciudadanos pueden releer sin miedo
Tolerancia LAN (≤3 recursos)Si faltan hasta 3 recursos por ver pero aprobó el examen final, se permite certificarCubre fallas de red. Si faltan más de 3, hay un problema real de progreso
Mini-curso obligatorioNiveles 2, 3 y 4 requieren al menos un mini-curso completado antes de certificarSi un ciudadano dice "terminé todo pero no me da certificado", verificar si completó un mini-curso
Triple Click BypassTriple clic rápido en contenido salta el temporizador de lecturaEsto es SOLO para pruebas de campo, no se lo enseñes a los ciudadanos
Regla del Árbol de ManzanasAl completar cualquier nivel troncal (2, 3 o 4), se desbloquea la exploración libre de todos los nivelesEl 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:

EquipoModeloFunción
RouterTP-Link ER7206Administra la red local, asigna IPs por DHCP, conecta a internet
ServidorMini-PC Ubuntu 24.04, 4 cores, 16GB RAM, 100GB SSDCorre toda la plataforma educativa localmente
Access Point (AP)TP-Link EAP610-OutdoorEmite Wi-Fi "SoyDigital-2.4" y "SoyDigital-5" a 25 dBm
PCs de CampoHP ProBookLaptops para facilitadores y técnicos
Internet principalStarlink~150 Mbps down / 20 Mbps up
Internet respaldoLTE 4G~30 Mbps down / 10 Mbps up (failover automático)

Configuración estándar de red en cada Kit#

Ctrl+Scroll=Zoom · Arrastrar=Mover

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.100 al .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-12 Kit1, 78-55-36-00-32-1B Kit2) 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 Auto es 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:

RedFrecuenciaVentajaLimitación
SoyDigital-2.42.4 GHzMayor alcance (~80m outdoor), atraviesa paredesMás lento, más interferencias
SoyDigital-55 GHzMás rápido, menos interferenciasMenor alcance (~50m)

Seguridad: WPA-Personal (AES). Potencia: 25 dBm (máximo).

Secuencia completa de conexión de un teléfono#

Ctrl+Scroll=Zoom · Arrastrar=Mover

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íntomaComandoResultado esperado
"No sale el Wi-Fi"Revisar LEDs del AP. Verificar cable EthernetLEDs encendidos
"Se conectan pero no carga la página"systemctl status dnsmasqActive: running
"Carga la web pero no los videos"curl http://localhost:9000Respuesta HTTP del proxy
"No hay internet real"ping 8.8.8.864 bytes from 8.8.8.8: time=Xms
"No sé la IP del servidor"ip aBusca 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/overlay2 alcanzará 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érminoQué esAnalogía
ImagenEl plano/receta del softwareUn molde de galletas
ContenedorLa instancia ejecutándoseUna galleta hecha con el molde
Docker ComposeArchivo que define VARIOS contenedores juntosUn menú completo
VolumenAlmacenamiento permanente que sobrevive si el contenedor muereEl archivero externo

Clase 4.2: Los Servicios del Kit#

ServicioTecnologíaPuertoFunción
FrontendPM2 x4 (Next.js)7011 (localhost)La app que ven los estudiantes
NginxNativo80 y 443Proxy inverso, SSL, redirección
GCS ProxyNginx9000 (localhost)Caché de videos/recursos (20GB max)
PostgreSQLNativo5432Base de datos
dnsmasqNativo53DNS local
NetbirdAgenteVPNRed privada de gestión
ngrokProcesoVariableTú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/logs hasta el infinito a menos de ser encapsulado (Log rotation limits). Observar un contenedor "online" pero lagueado pide un pm2 flush limpiador como primer auxilio de sistema.

Docker:

bash
docker 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:

bash
pm2 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:

idnamemodestatuscpumemory
0frontclusteronline0%180MB
1frontclusteronline0%175MB
2frontclusteronline0%182MB
3frontclusteronline0%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 1280 permitiendo 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.

EquipoIP NetbirdDominio VPN
SVR03 (Kit 1)100.112.210.253critertec-svr03.vpn.critertec.cloud
SVR04 (Kit 2)100.112.129.186critertec-svr04.vpn.critertec.cloud
PC Campo 1100.112.86.15critertec-pc-campo-1.vpn.critertec.cloud
PC Campo 2100.112.32.91critertec-pc-campo-2.vpn.critertec.cloud
PC Campo 3100.112.193.49critertec-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#

EquipoDirecciónPuerto
SVR035.tcp.ngrok.io21911
SVR045.tcp.ngrok.io21918
PC Campo 15.tcp.ngrok.io26919
PC Campo 25.tcp.ngrok.io27725
PC Campo 33.tcp.ngrok.io20874

**** 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:

  1. El sistema detecta conectividad
  2. Empaqueta datos en lotes de 50 registros
  3. Los envía a la API en la nube con clientRequestId (UUID) para evitar duplicados
  4. La nube confirma recepción
  5. Si hay conflictos, gana el dato más reciente (estrategia MERGE por defecto)

Si "las notas no suben": 1) ping 8.8.8.8 2) netbird status 3) pm2 logs


Clase 5.4: Certificados SSL#

DatoValor
TipoLet's Encrypt (gratuito, 90 días)
Vencimiento28 de mayo de 2026
RenovaciónManual (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#

  1. Router → fuente de poder. Starlink a WAN2. LTE a WAN/LAN3 (si hay)
  2. Servidor → fuente de poder + Ethernet a cualquier puerto LAN del Router
  3. Access Point → Ethernet al Router (PoE: cable = datos + energía)
  4. Esperar 3-5 minutos

Fase 3: Verificación Wi-Fi#

  1. Buscar SoyDigital-2.4 o SoyDigital-5 en tu teléfono
  2. Conectar → abrir navegador → debe cargar la plataforma

Fase 4: Verificación Técnica#

bash
ssh 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#

  1. Informar a facilitadores que la plataforma está lista
  2. Estudiantes se conectan a Wi-Fi → abren navegador
  3. Monitorear periódicamente

Fase 6: Cierre#

  1. NO apagar nada (sincronización nocturna)
  2. Verificar NetBird Connected
  3. Reportar al coordinador: cantidad de estudiantes, incidentes, estado del internet

Guía Rápida de Troubleshooting#

ProblemaCausa ProbableSolución
No sale el Wi-FiAP sin energía/cableVerificar cable Ethernet y LEDs del AP
Wi-Fi pero no carga webdnsmasq o Nginx caídosSSH → systemctl restart dnsmasq y systemctl restart nginx
Web carga pero sin videosGCS Proxy caídocurl http://localhost:9000, revisar logs Nginx
Se cayó de repenteRAM o disco llenosfree -h, df -h. Si disco >90%: sudo rm -rf /var/cache/nginx/gcs-proxy/*
No se puede registrarError en app/DBpm2 logs --err
Notas no sincronizanSin internet o error de syncping 8.8.8.8, pm2 logs
Portal no aparece en iPhoneComportamiento de AppleAbrir Safari manualmente y escribir cualquier URL
NetBird DisconnectedFalla de red/llavessudo systemctl restart netbird (esperar 30s)
PM2 dice "errored"Error en la apppm2 logs --err, luego pm2 restart all
Disco lleno al 100%Logs o caché acumuladossudo journalctl --vacuum-time=3d y limpiar caché

Glosario del Técnico de Campo#

TérminoSignificado
APIApplication 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
CLICommand Line Interface — terminal de comandos
DHCPServicio que asigna IPs automáticamente
DNSServicio que traduce nombres web a IPs
DockerSoftware que empaqueta aplicaciones en contenedores aislados
FailoverCambio automático de internet principal a respaldo
FirewallBarrera de seguridad que controla tráfico de red
GatewayPuerta de salida de la red local a internet
HTTP/HTTPSProtocolo web (HTTPS = con cifrado/candado)
IPDirección numérica de un dispositivo en la red
KitConjunto completo de equipos para una sede
LANLocal Area Network — red local
Mini-PCComputadora compacta que funciona como servidor
NginxSoftware proxy que recibe tráfico web y lo redirige
Offline-FirstDiseño donde la app funciona sin internet primero
PM2Administrador de procesos Node.js
PoEPower over Ethernet — energía por cable de red
PostgreSQLBase de datos relacional
S2SServer-to-Server — comunicación entre servidores
SSHProtocolo de control remoto seguro
SSL/TLSProtocolo de cifrado para HTTPS
VPNRed privada virtual que conecta equipos remotos
WANWide 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:#

  1. 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í".
  2. BalenaEtcher: Más sencillo, sin opciones técnicas. Seleccionar ISO -> Seleccionar USB -> Flash.

B. Si usas macOS para prepararlo:#

  1. BalenaEtcher: Es el recomendado y ofrece interfaz gráfica directa.
  2. Vía Terminal (Usuarios Avanzados):
    • Ejecuta diskutil list para encontrar tu USB (por ejemplo, /dev/disk2).
    • Desmonta el disco: diskutil unmountDisk /dev/disk2
    • Quema la imagen con permisos root (usa rdisk para velocidad cruda): sudo dd if=/Ruta/a/ubuntu.iso of=/dev/rdisk2 bs=1m
    • Espera a que termine (no arrojará output hasta finalizar).

C. Si usas Linux para prepararlo:#

  1. Herramientas Gráficas: "Startup Disk Creator" (Ubuntu) o Popsicle (Pop!_OS).
  2. 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/sda o nvme0n1).

Paso 2: Parametrizaciones de BIOS/UEFI en el Mini-PC#

  1. Conecta monitor, teclado y el USB al Mini-PC apagado.
  2. Al encender presiona rápidamente la tecla de la BIOS (Supr, DEL, F2, F10 según el fabricante).
  3. Deshabilitar Secure Boot: Ve a la viñeta "Security" -> "Secure Boot" -> Cámbialo a Disabled. Evitará bloqueos de certificados para Linux.
  4. Deshabilitar Fast Boot: Ve a "Boot" -> quita "Fast Boot". Ayuda a que lea correctamente el USB.
  5. Orden de Arranque: Fuerza como Opción "Boot #1" tu USB. Presiona F10 para guardar y salir.

Paso 3: Instalación de Linux paso a paso#

  1. 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 palabra nomodeset tras la palabra quiet splash en la línea linux. Presiona F10. Sirve para saltarse problemas de drivers gráficos.
  2. Avanza con el idioma y disposición de teclado.
  3. Red: De ser posible, conecta cable Ethernet para bajar módulos extra al instalar.
  4. Particionado: Escoge "Usar disco completo" (Erase disk / LVM). Apto para sistemas dedicados.
  5. Detalles de Usuario: Usa el estándar Indotel (ej. Host: indotel-sv04, Usuario: admin_indotel).
  6. 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).
  7. Espera, retira el USB cuando lo pida y reinicia. Ejecuta de inmediato sudo apt update && sudo apt upgrade -y e instala docker.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)#

  1. 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.
  2. Sistema Operativo Básico: Entendimiento firme del tutorial de flasheo visto anteriormente (Rufus/BalenaEtcher). Sabe instalar Ubuntu con OpenSSH o restaurarlo desde 0.
  3. 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)#

  1. 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.
  2. 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 logs dmesg | tail.
  3. 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)#

  1. 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 chroot para regenerar módulos quemados o un GRUB dañado.
  2. 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.
  3. 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 a no muestra eth0 o la marca muerta (NO-CARRIER), el LED interno RJ45 parpadea en naranja y rojo intermitente.
  • Protocolo de Acción del Brigadista:
    1. Utilizar un Dongle Convertidor USB a Gigabit Ethernet de respaldo (llevar siempre 1 en mochila).
    2. Al conectarlo, lanzar en la terminal dmesg | grep -i usb o lsusb para verificar que el bridge RTL8153 fue reconocido.
    3. Ejecutar ip a para obtener el nombre alfanumérico largo (ej. enx001e...).
    4. Entrar al archivo de red usando editor de terminal: sudo nano /etc/netplan/00-installer-config.yaml y sustituir la tarjeta quemada por la nueva. Guardar, presionar Ctrl + O, Enter, Ctrl + X y 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 / ESC en arranque -> Entrar a Advanced Options de Ubuntu -> Modo Recovery -> Seleccionar fsck y 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 router 192.168.1.1 u App oficial y configurar "Estación Satelital" de nuevo para pasarlo a modo Bypass (Bridge). Reiniciar y conectar el router/firewall a continuación.