Homelab — Índice¶
La fuente de verdad del estado del servidor es
/home/notebook/AGENTS.md. Este archivo es solo un índice para humanos. No duplicar contenido de AGENTS.md acá.
Documentación por tema¶
- Servicios Docker:
Selfhosted/Docker/<servicio>.md - Composes de referencia:
Selfhosted/Compose/ - Game servers (Pelican):
Selfhosted/Pelican/ - Cloud:
Cloud/ - Backups y restore:
Selfhosted/Docker/Backup del Homelab.md
Historial de cambios grandes¶
- 01 sep 2026 — almacenamiento: el HDD Toshiba HDWG21C de 12 TB (
/dev/sdb) fue reprovisionado con GPT y una única partición EXT4 (/dev/sdb1, etiquetahdd_12tb). Está montado por UUID en/mnt/hdd_12tby su entrada persistente en/etc/fstabusadefaults,nofail,x-systemd.device-timeout=5s, después de/mnt/backup_512y/mnt/ssd_512. - 24 ago 2026 — Immich: migrada únicamente la biblioteca activa (4,8 GiB) desde
/opt/docker/immich/librarya/mnt/ssd_512/immich/library; PostgreSQL permanece en/opt/docker/immich/postgres. Verificados los tres contenedores saludables y respuestas HTTP 200 local/pública. - 17 ago 2026 — hardening y limpieza: activado UFW (deny incoming/routed), SSH key-only efectivo en
58450sin forwarding/X11, retirado Cloudflare Tunnel, backends Docker sensibles ligados a loopback y permisos de secretos restringidos. Se retiraron servicios host residuales (Cockpit/PCP, nginx/PHP 8.4, MariaDB, Redis, PM2, libvirt/QEMU y open-vm-tools), se actualizaron todos los paquetes y quedó pendiente reiniciar para cargar el kernel6.8.0-137. Navidrome permanece retirado y su vhost devuelve 410. El backup ahora incluye named volumes, checksum, locking y preflight; conserva 7 copias cifradas en B2 y elimina el staging local tras verificar la subida. Los servicios multimedia dependientes de/mnt/hdd_2tbquedan detenidos mediantehomelab-mount-guardmientras el disco esté ausente. - 17 ago 2026 — recuperación Docker: al purgar configuración residual del paquete Ubuntu
docker.io, supostrmintentó borrar/var/lib/dockerusado por Docker CE. Se detuvo el proceso, se preservaron los 25 volúmenes y se reconstruyó el catálogo limpio desde Compose. Tras verificar 36 contenedores, datos persistentes y un backup local/B2 posterior, se eliminó/var/lib/docker.salvage-20260817; junto con caché APT y journals antiguos se recuperaron ~24 GiB (87% → 76%). - jul 2026: migración completa a WireGuard; eliminados Headscale/Headplane/Tailscale
- ⚠️
tailscaledSTILL activo y manejando/etc/resolv.conf(migración DNS incompleta). Pendiente desinstalar (no en sesión remota). LibreChat y Lidarr NO fueron eliminados (siguen corriendo). - jul 2026: HDD 2TB roto y desconectado; mountpoints inmutables con chattr +i
- jul 2026: hardening de seguridad/redes — ver
Selfhosted/Docker/Caddyfile.mdySelfhosted/Docker/ntfy.md - 27 jul 2026 — incidente "no anda nada desde afuera": NO era el firewall (ufw inactivo, INPUT/FORWARD ACCEPT, 80/443 abiertos). La IP pública cambió ~13:52 y deSEC devolvió HTTP 502 en tres intentos seguidos; el DNS recién se corrigió 14:10. Como deSEC fuerza
minimum_ttl: 3600(poner 300 devuelve HTTP 400), los resolvers de afuera siguieron con la IP vieja hasta ~1h. Diagnóstico rápido: compararcurl -s https://api.ipify.orgcontradig +short A matias7235.com.ar @ns1.desec.io, y probarcurl --resolve <host>:443:<IP_actual>. Si por IP anda y por nombre no → es cache de DNS, no el server. - 27 jul 2026: bajado
collabora(imagen sin/bin/bash, no arrancaba desde hacía semanas) +opencloud-collaboration-1. Vhostsoffice.ywopi.fuera del Caddyfile. Reemplazo previsto: CryptPad. - 27 jul 2026:
backup.shmandaba las notificaciones ntfy sin token → 403 silencioso, el log mentía con "✅ Notificación enviada". Corregido conAuthorization: Bearer+curl -sf. - Quitado
/var/run/docker.sockde sonarr/radarr/lidarr (root-equivalent en servicios públicos). - ntfy con auth (default deny-all), token en
/opt/scripts/ntfy.env. - Caddy: snippet
(access_log)+ headers HSTSincludeSubDomains+X-Frame-Options SAMEORIGINen(proxy). - fail2ban: jail
caddy-auth(401/403/404 en sitios con login) +fail2ban-sync-public-ip.timer(evita auto-ban por hairpin). - ufw-docker: expuestos vía
ufw route allowsolo los puertos docker necesarios (forgejo SSH, qBittorrent, Ark/Minecraft). El resto bloqueado del WAN por defecto. - postfix
loopback-only(ya no escucha en 0.0.0.0:25). unattended-upgrades notifica vía ntfy. - jun 2026: eliminados scrutiny, dozzle, glances, termix, code-executor, gptr-mcp, filebrowser, stirling
- 15 ago 2026: desplegado RustDesk Server self-hosted (hbbs/hbbr,
network_mode: host, puertos 21115-21117, imagenrustdesk/rustdesk-server:1.1.16) — verSelfhosted/Docker/RustDesk.md. Solo LAN/WG (el router no forwardea los puertos). UFW sigue INACTIVO en el host (protección por router). Detenidonavidrome(compose borrado el 14 ago sin parar el servicio);shared_redisse mantiene para Firecrawl y LibreChat usashared_netpara alcanzar Firecrawl. - 17 ago 2026: restaurado
/opt/docker/shared/compose.yamlpara gestionarshared_redissin reiniciarlo. Immich vuelve a usarimmich_netyshared_netexternas; no usarexternal: falseparashared_net, porque crea una red prefijada aislada. La biblioteca activa de Immich quedó en/opt/docker/immich/library(SSD), con marcadores.immich; la media histórica sigue en el backup frío.