
🌐 También en: English · Deutsch · Français
«Operating Community Nextcloud Instances with Ansible, AlmaLinux, SELinux and a Podman-based Collabora Stack»
(en inglés),
ya sabes que todo empezó como una idea de lo más razonable.(Voz del narrador: no era una idea de lo más razonable.)
El Plan Original™: adiós Debian, hola SELinux
En algún momento pensé: «Oye, ¿y por qué no pasarme de Debian a AlmaLinux?».
¿El motivo principal? SELinux.
Porque nada grita «proyecto divertido de fin de semana» como depurar contextos de seguridad a las 2 de la madrugada.
En esa fase descubrí cómo integrar Collabora mediante contenedores, y la sensación era
muchísimo más estable y predecible.
Fase 2: «Ya puestos, metamos Kubernetes» 🤦♂️
Como era de esperar, la cosa se desmadró.
«Creo que debería instalar Kubernetes».
Y entra en escena K3s: ligero, sencillo y lo justo de peligroso como para desplegarlo en un VPS.
La idea actual:
- Ejecutar los servicios base (MariaDB, Redis) de forma nativa
- Ejecutar las aplicaciones dentro de K3s
- Convencerme de que esto es «arquitectura» y no curiosidad
Ansible: de herramienta a obsesión
Lo que antes era «solo un playbook» ahora es prácticamente un pequeño framework.
Dos playbooks principales:
- Nextcloud
- WordPress
Componentes compartidos por todas partes:
- Repositorios
- fail2ban
- MariaDB
- K3s
- Reglas del cortafuegos
Estado actual: ~16 roles.
Estado emocional: también 16 roles.
La programación en pareja con IA es real 🤖
Usar Claude AI dentro de VS Code es como si:
«Un ingeniero DevSecOps sénior se ha unido a tu sesión».
- Pide salidas de comandos
- Depura errores
- Refactoriza playbooks
- De verdad explica los problemas
Un poco aterrador. Tremendamente útil.
Ahora con monitorización 📊
- Prometheus
- Grafana
Ahora puedo ver cómo falla mi sistema en tiempo real, pero con mucho estilo.
🔧 A fondo: de un «blog sencillo» a una infraestructura completa
Tener un blog de WordPress en un VPS parece trivial… hasta que empiezas a pensar en:
- Certificados TLS
- Cortafuegos
- Actualizaciones
- Monitorización de seguridad
Así que, como es natural, lo automaticé todo.
Infrastructure as Code (o sea, YAML por todas partes)
Toda la configuración está definida en Ansible:
ansible-playbook blog.yml --limit meinserverReproducible. Idempotente. Ligeramente adictivo.
Arquitectura: K3s frente al host
Dentro de K3s:
- WordPress (PHP-FPM)
- Nginx (sidecar)
- MariaDB
- ingress-nginx
- cert-manager (Let’s Encrypt)
- CronJob de WordPress
En el host:
- Prometheus
- Grafana
- Node Exporter
- fail2ban
- rkhunter
- auditd
- msmtp
El flujo del playbook
- Sistema base
- SELinux
- K3s
- Despliegue
- Monitorización
Seguridad: defensa en profundidad
- Cortafuegos iptables
- fail2ban
- Limitación de peticiones
- HTTPS con Let’s Encrypt
- SELinux en modo enforcing
- auditd
- Actualizaciones de seguridad automáticas
- Escaneos con rkhunter
Reflexiones finales: en obras 🔧
Lo que empezó como:
«Vamos a probar AlmaLinux»
Acabó siendo:
- Kubernetes
- Contenedores
- Un framework de Ansible
- Un stack de monitorización
- Operaciones asistidas por IA
A estas alturas, básicamente tengo una nube en miniatura en un VPS.
Pero: sigo puliendo, probando y rompiendo cosas otra vez.
El código de Ansible todavía no está publicado, sobre todo porque sigo retocando roles, haciendo limpieza
y asegurándome de que no explote por completo en un sistema recién instalado.
(o sea, «un último cambio rápido»: famosas últimas palabras)
Tengo previsto publicar el playbook completo en GitHub en los próximos días, en cuanto esté seguro de que es
mínimamente reutilizable y no solo caos hecho a medida.
La idea de fondo detrás de todo esto: estoy pensando en migrar a esta arquitectura las instancias de Nextcloud
que ya tienen dos asociaciones locales.
Pero ahora mismo sigue siendo un poco arriesgado: mover datos de producción e introducir K3s al mismo tiempo
suena a la manera perfecta de arruinarse un fin de semana (o varios).
Esta tecnología todavía es un terreno relativamente nuevo para mí, y me gustaría ganar más experiencia real
antes de confiarle datos de usuarios de verdad.
Quizá sea un proyecto para el otoño 🍂
No te lo pierdas 😄





