Devlog

Erik's Devlog

Lo que construyo, lo que rompo y lo que aprendo. Día a día, sin filtro.

11 entradas
09/09/2026 miércoles
  • Status Observer: panel de atacantes con GeoIP (país, ciudad, ISP) sobre SQLite, timeline por hora y top de paths atacados.
  • Bans permanentes (bantime -1) y autoban horario: si una IP de fuera supera el umbral, queda afuera para siempre. Solo unban manual.
  • Hoy además nace este devlog: una página SSR cacheable, cero JS, cero endpoints de escritura. El contenido entra por SQL y así va a seguir.
  • Blogged about it: este sitio es Go + SQLite, SSR con ETag y 304, cero JavaScript. El cert salió por TLS-ALPN porque el puerto 80 ni abre (nada de HTTP plano en esta casa).
08/09/2026 martes
  • Noche de providers: migré el modelo a un provider con lista de modelos real en vez del custom_provider legacy que mostraba (0).
  • Backup + rollback de la config antes de tocar, como corresponde.
07/09/2026 lunes
  • Anti-DDoS ligero: fail2ban vigila access.log + los 11 logs de subdominios y actúa cuando un host pasa de 100 req/min.
  • Pitfall del día: fail2ban no acepta logpath con comas (va multilínea) y no re-escanea los globs al vuelo: hay que pre-crear los logs antes de reiniciar.
05/09/2026 sábado
  • Unificando el admin: nginx-manager con jails dinámicos de fail2ban, desban por jail y visor de logs por subdominio.
31/08/2026 lunes
  • Semana Kafka: peleas con las ACLs del cluster, cambio de consumer group y entender el lag a fondo.
  • Descubrí que el rebalanceo me freía el pipeline por un offset ignorado, no por la red.
  • Mañana quiero probar striped reads en los logs.
23/08/2026 domingo
  • Subí el service-hub: middleware unificado con microservicios (enchufe Tuya, PalWorld por SSH, auto-shutdown, modo mantenimiento). Cada servicio es un paquete con service.go + handler.go + descriptor OpenAPI.
  • El modo mantenimiento responde 503 en lo que no debe activarse mientras hay gente jugando.
18/08/2026 martes
  • Migré la voz del asistente de Whisper local a Groq (whisper-large-v3-turbo): en la Pi de 1GB el STT local no daba, en la nube va en menos de un segundo.
09/08/2026 domingo
  • Kanban tipo Trello con login por usuario: sesiones con Argon2id, cookies httpOnly, rate limit en el login y aislamiento anti-IDOR.
  • Tiempo real con SSE por usuario y broadcast en cada mutación.
26/07/2026 domingo
  • Wifi monitor con systemd en la Raspberry Pi: el chip BCM4345 se cuelga en silencio (interface UP, red muerta). El watcher hace rmmod/modprobe solo.
  • Backoff progresivo en los reintentos para no martillar el driver.
15/07/2026 miércoles
  • Semana de la seguridad: dejé nginx con rate limiting + connection limits por subdominio.
  • Los que escanean /.env, /.git/config y /admin/config.php ahora van a un honeypot que responde lento y tira un 408 fingido, como si el server estuviera medio muerto.
07/07/2026 martes
  • Arranqué a reorganizar la infra del server de PalWorld: backups automáticos cada 12h con rsync + zip y aviso por Discord.
  • El embed de estado del server que actualiza el bot cada 15s empezó a mentir: decía ON con el contenedor crasheando. Ahora el estado sale del query A2S, no del Docker.