- El VPS de DigitalOcean basado en Ubuntu 16.04 LTS tenía el problema de haber quedado sin soporte y la carga de seguridad que eso implica, pero mantuvo un uptime de 1491 días hasta el momento del retiro
- El nuevo servidor se movió a un VPS de Hetzner en Alemania con FreeBSD 14.3, usando una configuración más potente que el servidor anterior de $13 al mes por menos de 6 euros mensuales
- Con Jails y Bastille se creó un entorno aislado por sitio, donde el Jail de Caddy se encarga del SSL y del reverse proxy hacia cada Jail con nginx
- En las pruebas de carga, el nuevo servidor con FreeBSD mostró entre 3 y 11 veces más throughput de solicitudes tras ajustar
kern.ipc.somaxconn para soportar 10,000 conexiones concurrentes
- La migración requirió aprender sobre redes y configuración de FreeBSD, pero fue más fácil de lo esperado gracias a la configuración centralizada y a la calidad de la documentación
Contexto de la migración
- El blog anterior estuvo funcionando más de 10 años en un VPS de DigitalOcean, usando Ubuntu 16.04 LTS en el datacenter de Nueva York
- Ubuntu 16.04 LTS llevaba al menos 5 años fuera de soporte y ya no podía recibir actualizaciones de los repositorios de paquetes de
apt
- Un sistema viejo está en desventaja en términos de seguridad, y en el pasado un blog separado de WordPress sufrió un ataque en un VPS antiguo donde insertaron enlaces de casino y apuestas
- Además del blog, el servidor anterior alojaba algunos sitios más, pero la mayoría eran sitios estáticos
- Incluso el blog más popular normalmente tenía apenas unos miles de pageviews al mes, salvo algunos posts que se volvieron virales en Hacker News
- El servidor entregaba archivos estáticos con
nginx/1.10.3, y la configuración por sitio estaba en /etc/nginx/sites-available
- El blog se generaba con Hugo, y el flujo de despliegue anterior era: escribir localmente → commit y push al repositorio → entrar por SSH al servidor → hacer pull del repositorio → ejecutar
hugo
- El VPS anterior también se había usado al principio para pruebas y programación, así que todavía conservaba bastante software viejo
- Aun así seguía funcionando correctamente, y al momento del retiro tenía un uptime de 1491 días, es decir, casi 4 años sin reiniciar
- El nuevo servidor se movió a un VPS de Hetzner en Alemania, con mejores especificaciones y a menos de la mitad del costo mensual
- El servidor anterior de DigitalOcean tenía 2 GB de RAM, 1 vCPU, 50 GB de disco, 2 TB de tráfico mensual y costaba $13 al mes
- Incluso el servidor más barato de Hetzner tenía el doble de memoria y CPU que el anterior, un poco menos de almacenamiento, pero 10 veces más tráfico
- La configuración final elegida en Hetzner era aún más potente por menos de 6 euros al mes
Por qué elegir FreeBSD
- Se eligió FreeBSD para probar un sistema nuevo en un entorno real de producción
- Entre sus ventajas estaban el diseño integrado, la estabilidad, la seguridad y Jails
- Jails es una función de virtualización y contenedorización incluida en FreeBSD desde hace más de 25 años
- Permite ejecutar “mini sistemas” en una especie de sandbox sin acceso al sistema host
- Mientras que soluciones de contenedores como Docker encajan mejor para empaquetar programas y suelen ser más efímeras e inmutables, Jails se parecen más a subsistemas o mini VM que comparten el mismo kernel
- ZFS también era una opción atractiva como sistema de archivos para servidor
- Ofrece integridad de datos y snapshots, con ciertas similitudes con Btrfs en Linux
- ZFS se consideró mucho más maduro que Btrfs, y con snapshots frecuentes se puede depender menos del sistema pagado de snapshots o backups del proveedor del VPS
- La arquitectura objetivo era tener un Jail por sitio, con las herramientas de build y nginx necesarias dentro de cada uno
- El Jail del servidor web principal se encargaría del reverse proxy conectado al exterior
- La idea era que, si un Jail específico era comprometido, se pudiera borrar y recrear
Instalación de FreeBSD e incorporación de Bastille
- La pantalla de creación de VM en Hetzner tenía imágenes de sistema operativo limitadas, así que BSD no aparecía directamente
- Se eligió Bastille para facilitar la administración de Jails
- Varias etapas necesarias para crear un Jail manualmente se pueden hacer con el comando
bastille
- Algunos comandos de ejemplo son
bastille list, bastille create y bastille console
- La instalación y activación se hizo siguiendo la documentación de inicio de Bastille
pkg install bastille
sysrc bastille_enable="YES"
Red y estructura de reverse proxy
- Toda la pila usa un único Jail de Caddy para manejar todos los dominios y certificados SSL, y hacer reverse proxy del tráfico hacia los Jails de cada sitio
- Cada Jail de sitio solo incluye las herramientas necesarias para construir y servir ese sitio
- Se puede ver como una estructura parecida a varias máquinas virtuales dentro de la misma red
- La interfaz de red virtual interna se creó como
bastille0
sudo sysrc cloned_interfaces+="lo1"
sudo sysrc ifconfig_lo1_name="bastille0"
sudo service netif cloneup
sudo sysrc ifconfig_bastille0="inet 10.0.0.1 netmask 255.255.255.0"
- Se clonó una interfaz loopback, se le dio el nombre
bastille0 y se le asignó la red 10.0.0.1/24
- Los Jails funcionan sobre esta interfaz de red
- Las solicitudes HTTP y HTTPS externas se envían al Jail de Caddy usando reglas de PF (Packet Filter)
- En
/etc/pf.conf se configuraron la interfaz externa vtnet0, la interfaz interna bastille0 y tailscale1
- El tráfico de los puertos
80 y 443 se redirige a 10.0.0.5, que será el servidor Caddy
ext_if = "vtnet0"
int_if = "bastille0"
vpn_if = "tailscale1"
set skip on $int_if
set skip on $vpn_if
nat on $ext_if from 10.0.0.0/24 to any -> ($ext_if)
rdr pass on $ext_if proto tcp from any to any port {80, 443} -> 10.0.0.5
block all
pass out quick on $ext_if keep state
- PF y la puerta de enlace se activaron con los siguientes comandos
sysrc pf_enable="YES"
service pf start
sysrc gateway_enable="YES"
Configuración de Caddy y de los Jails por sitio
- Aunque el servidor anterior llevaba mucho tiempo usando nginx, en la nueva configuración se eligió Caddy para automatizar la gestión de certificados SSL
- En el entorno anterior con nginx, los certificados se renovaban periódicamente con
certbot, y eso se había olvidado varias veces
- Antes de crear el Jail de Caddy, se hizo el bootstrap del release de FreeBSD en Bastille
bastille bootstrap 14.3-RELEASE
- El Jail de Caddy se creó con la IP
10.0.0.5
bastille create caddy 14.3-RELEASE 10.0.0.5 bastille0
bastille start caddy
- El nombre del Jail es
caddy, el release es 14.3-RELEASE y la interfaz es bastille0
- Se puede verificar su estado con
bastille list y entrar al shell del Jail con bastille console caddy
- La instalación de Caddy y la activación del servicio se hicieron dentro del Jail
pkg install caddy
sysrc caddy_enable="YES"
service caddy start
- El archivo de configuración de Caddy está en
/usr/local/etc/caddy/Caddyfile dentro del Jail
- Si se quiere administrar el archivo desde el host, se puede montar un directorio del host dentro del Jail
- En el ejemplo se usa
nullfs con la opción de solo lectura ro para impedir que Caddy modifique la configuración
bastille mount caddy /usr/local/etc/my-caddy-config /usr/local/etc/caddy nullfs ro 0 0
Despliegue del sitio y del blog
- El primer objetivo de despliegue fue
es.cro.to, y el sitio se administra en este repositorio de GitHub
- El repositorio se guarda en
/usr/local/www/escroto en el host, y ese directorio se monta en modo solo lectura dentro del Jail del sitio
- Todos los sitios se organizaron bajo
/usr/local/www en el host
- El Jail
escroto se creó usando la plantilla nginx de Bastille
bastille bootstrap https://github.com/bastillebsd/templates
bastille create escroto 14.3-RELEASE 10.0.0.11 bastille0
bastille template escroto www/nginx
- La IP asignada es
10.0.0.11
- La página por defecto de nginx se sirve desde
/usr/local/www/nginx, como es habitual en FreeBSD
- El directorio del sitio en el host se montó en el Jail en modo solo lectura
bastille mount escroto /usr/local/www/escroto /usr/local/www/escroto nullfs ro 0 0
- Se usa un script de despliegue para evitar que el directorio
.git del repositorio quede expuesto por la web
rm -fr /usr/local/www/nginx/*
cp -R /usr/local/www/escroto/* /usr/local/www/nginx/
rm -fr /usr/local/www/nginx/.git
- El despliegue de una nueva versión consiste en actualizar el repositorio en el host y luego ejecutar el script de despliegue dentro del Jail
cd /usr/local/www/escroto
git pull
bastille cmd escroto /root/deploy.sh
- La configuración de Caddy redirige permanentemente
cro.to a es.cro.to y hace proxy de es.cro.to hacia 10.0.0.11
cro.to {
redir https://es.cro.to{uri} permanent
}
es.cro.to {
reverse_proxy 10.0.0.11
}
- El blog usa Hugo y se administra en este repositorio de GitHub
- El repositorio se clona en
/usr/local/www/blog en el host
- El Jail
blog se creó de forma similar a escroto, con la IP 10.0.0.12
bastille create blog 14.3-RELEASE 10.0.0.12 bastille0
bastille template blog www/nginx
bastille mount blog /usr/local/www/blog /usr/local/www/blog nullfs ro 0 0
- Hugo se instaló dentro del Jail
blog
bastille pkg blog update
bastille pkg blog install gohugo
- El script de despliegue del blog vacía el web root de nginx y genera la salida de Hugo en
/usr/local/www/nginx
rm -fr /usr/local/www/nginx/*
cd /usr/local/www/blog
hugo -d /usr/local/www/nginx
- Antes de mover el DNS, se hizo una prueba conectando
crocidb.cro.to al nuevo servidor del blog en lugar del dominio anterior
crocidb.cro.to {
reverse_proxy 10.0.0.12
}
Benchmarks y pruebas de carga
- Antes de cambiar los registros DNS, se comparó la capacidad de carga del servidor anterior
crocidb.com y del nuevo crocidb.cro.to
- Como los visitantes del blog llegan sobre todo desde Norteamérica, y luego desde Europa y Sudamérica, el nuevo servidor en Alemania podría aumentar un poco la latencia para algunos usuarios
- El interés principal era la velocidad al servir un sitio estático y la capacidad para soportar mucha carga
- También se usaron herramientas gratuitas en línea como GTMetrix, Pingdom y WebPageTest, pero la diferencia entre ambos servidores fue mayormente de latencia
- Como herramientas de benchmark HTTP se usaron wrk y hey
- Ambas generan grandes volúmenes de solicitudes concurrentes y recopilan latencia, respuestas con error, throughput por segundo y otros datos
- Al ejecutar
wrk desde otro VPS dentro de Hetzner, el nuevo servidor mostró una ventaja clara
wrk -t4 -c100 -d30s --latency https://crocidb.com/
- La configuración fue 4 hilos, 100 conexiones concurrentes y 30 segundos de ejecución
- El servidor anterior tuvo una latencia promedio de
89.63ms, 833.41 solicitudes por segundo y 8.29MB/s de throughput
- El nuevo servidor tuvo una latencia promedio de
6.75ms, 12260.10 solicitudes por segundo y 130.80MB/s de throughput
- La máquina de prueba estaba en el mismo datacenter que el nuevo servidor, así que no era una comparación totalmente justa
- También se intentó ejecutar
wrk desde varias regiones usando Proton VPN, pero los resultados fueron peores de lo esperado
- El promedio del servidor anterior fue de unas
300 solicitudes por segundo, y el del nuevo de unas 800
- Al final se cambió el enfoque: en lugar de una VPN para consumidores, se levantaron VPS reales en varias regiones
Pruebas regionales con VPS de Vultr
- Se eligió Vultr para usar una infraestructura distinta de la de DigitalOcean y Hetzner, donde estaban los servidores
- Para reducir el trabajo manual, las regiones se limitaron a London, São Paulo, Silicon Valley y Tokyo
- En cada región se creó la VM Fedora más barata y se ejecutaron las pruebas
- Se concluyó que
hey era la herramienta más adecuada para la prueba final
./hey_linux_amd64 -n 1000000 -c 10000 -t 10 -z 5m -h2 https://crocidb.com/ > crocidb.com.log
./hey_linux_amd64 -n 1000000 -c 10000 -t 10 -z 5m -h2 https://crocidb.cro.to/ > crocidb.cro.to.log
- La configuración fue de
1,000,000 solicitudes totales, 10,000 solicitudes concurrentes, timeout de 10 segundos, duración total de 5 minutos y uso de HTTP/2
- La carga fue muy superior al tráfico real de un blog
- En la primera ejecución, el nuevo servidor con FreeBSD no pudo manejar 10,000 conexiones concurrentes y falló al inicio
- Al revisar el tamaño de la cola de sockets con
netstat -Lan, todo aparecía en 128
- Como el valor por defecto de
kern.ipc.somaxconn era 128, se aumentó así
sysctl kern.ipc.somaxconn=16384
- En la prueba desde São Paulo, ambos servidores devolvieron bastantes errores, pero el servidor con FreeBSD sí respondió a las
1,000,000 solicitudes esperadas, mientras que el de Ubuntu no logró responder ni 20,000
- El servidor anterior con Ubuntu completó alrededor del
7% del total
- El nuevo servidor con FreeBSD completó cerca del
94%
- En Tokyo la tasa de éxito del nuevo servidor fue un poco menor, pero no se consideró algo especialmente preocupante
- En solicitudes por segundo, el nuevo servidor fue entre 3 y 11 veces mejor que el anterior
- En los percentiles de latencia, el nuevo servidor aumentó de manera más lineal hasta alrededor del
90%, lo que lo hacía más predecible
- Incluso bajo alta carga, la mayoría de las regiones del mundo pudieron recibir el contenido de la página principal del blog en menos de 3.5 segundos
- Los resultados de Tokyo no se analizaron a fondo
- El análisis por fases de solicitud en
hey sugería que el tráfico hacia Japón podía ser más lento
- Los valores de DNS dial-up y lookup del segundo dominio parecían anormalmente bajos, con la posibilidad de que un registro CNAME influyera
- Los valores de
resp wait y resp read también parecían extrañamente altos, pero como solo se contaban las solicitudes exitosas, era posible que el servidor anterior respondiera rápido al principio y luego prácticamente dejara de aceptar nuevas solicitudes
Cambio final y lecciones clave
- Aunque los benchmarks no respondieron todo, el resultado fue lo suficientemente satisfactorio como para mover los registros DNS al nuevo servidor
- Desde entonces, este blog opera oficialmente sobre el servidor de Hetzner con FreeBSD
- Configurar una máquina para hosting de sitios con FreeBSD implicó varias horas de experimentos, cambios, builds y errores, pero fue menos complejo de lo esperado
- También se pudo haber usado un servicio de hosting web que cumpliera los requisitos; un ejemplo mencionado es OpenBSD Amsterdam
- Otra opción habría sido usar Proxmox para tener contenedores y un dashboard de administración
- Como alternativa dentro del mundo FreeBSD, también se mencionó Sylve
- Aun así, hacerlo manualmente fue una decisión satisfactoria porque dejó mucho aprendizaje
- El servidor Ubuntu anterior también fue muy sólido
- Durante 10 años manejó bien la carga de los sitios, y sus últimos 4 años transcurrieron sin reinicios
- Funcionó de forma estable sin requerir demasiado esfuerzo de configuración
- La configuración de FreeBSD resultó más sencilla de lo esperado, y gustaron mucho tanto su enfoque de centralizar la configuración del sistema como la calidad de la documentación en línea
- Para montar una máquina propia de hosting para el blog hizo falta conocimiento de redes más allá de lo que normalmente conoce un desarrollador de videojuegos
- Aprender otro sistema fue entretenido, y la próxima vez quizá se pruebe con OpenBSD o NetBSD
- La conclusión final es que, dado que la mayor parte del tráfico del blog viene del crawling de sistemas de IA, la utilidad práctica de todo este trabajo es limitada
1 comentarios
Comentarios en Hacker News
Mi mayor error fue el alto uptime
arjie.com estuvo funcionando más de 10 años en un VPS de Hetzner, así que cuando Hetzner quiso apagar la máquina subyacente, no tenía ni idea de qué había configurado mi yo adolescente
Tengo respaldos, pero el sitio lleva 10 años caído
Ahora hago las cosas de forma que se puedan mover, y de hecho las he movido varias veces para comprobar que funcionen
También recuerdo la época en que el uptime de una máquina se veía como una medalla de honor
No es que con la edad me haya vuelto mucho más sabio, pero ahora me fijo en el uptime del servicio
Antes, registros DNS como MX ya iban en esa dirección, y los clústeres viejos eran bastante crípticos, pero dejaron lecciones como split brain, así que todavía me toca explicar por qué los clústeres de 2 nodos en Proxmox se rompen y por qué recomiendan un witness adicional
VMware también estaba equivocado cuando hace años tapó el problema de los clústeres HA de 2 nodos con una gran solución temporal, y si ese método sigue por ahí, probablemente sigue estando mal
Un alto uptime significa que no aplicaste parches, y a todos nos encanta parchear
Cada 20 años lo desmantelan por completo y lo reconstruyen, y en Breakneck de Dan Wang, que leí hace poco, explican que esa práctica de reconstrucción preserva conocimientos que de otro modo se perderían con el tiempo
Wang contrasta el Santuario de Ise con Notre Dame, y cree que una de las razones por las que reconstruir el techo de Notre Dame fue tan difícil puede haber sido la pérdida de conocimiento
No conozco lo suficiente de ambas construcciones como para saber si es una comparación justa, pero el principio en sí me gusta
En el libro es solo una pequeña analogía, pero en general lo recomiendo muchísimo
Reiniciar toma solo unos segundos, y las actualizaciones se pueden hacer sin downtime cambiando el DNS a una nueva instancia
Con máquinas físicas que no se pueden replicar fácilmente, la historia es distinta
No hace falta administrar todo completamente con Ansible; más bien dejo ahí la configuración inicial y todavía manejo bastante a mano
Se siente un poco ridículo, pero ayuda más seguido de lo que uno esperaría
Para uso personal o de hobby, casi siempre manejo todo con Caddy al frente + Docker Compose
Si es un sitio simple, Caddy sirve el contenido directamente; si es una “web app”, casi siempre la contenedorizo y dejo que Caddy haga la terminación TLS y el proxy inverso hacia la app bajo Docker
Normalmente uso una estructura
~/apps/appname, con el archivo de Docker Compose y el directorio de datos montado dentro de cada directorio de appDespués de
compose down, puedo sacar los datos por (s)ftp para archivarlos a largo plazo o mover el sitio/servicioEn algún momento tuve varias VM en un servidor dedicado, pero luego me pasé a VPS separados de OVH, y si quieres correr correo en OVH tienes que evitar las VM de zona local, porque no permiten hosting de mail
Supongo que depende del entorno
NPM también es excelente y su GUI web está bien, pero con Traefik basta con poner en el archivo de Docker Compose el comportamiento que quieres y listo
Solo que Unraid corre los contenedores, y uno de ellos es una herramienta de la familia nginx diseñada para actuar como proxy inverso de los demás servicios
Solo estoy pensando si pasarme de Debian a algo más tipo Flatcar, orientado a contenedores e inmutable como sistema/OS
FreeBSD tiene ventajas técnicas interesantes, pero para bien o para mal, el valor por defecto de mucho software open source es Docker, y no tengo ni el tiempo ni las ganas de mover todo a jails de FreeBSD
Hace unas semanas hice exactamente lo mismo
El servidor no se había actualizado desde más o menos 2015, y todavía tenía instalado un blog de Ghost y
node 0.10de esa épocaYo fui más brusco: solo hice un respaldo y luego solté al agente Hermes (Gemini 3.1 Pro)
Hizo todas las actualizaciones y parches necesarios, y hasta migró a equivalentes actuales
Después también avancé bastante en endurecer el servidor y quitar servicios que ya no usaba, y sin asistencia de IA probablemente lo habría seguido posponiendo
El problema real es el riesgo de que algo se rompa, y ahí es donde los respaldos ayudan a mitigar
Me divertí usando FreeBSD en servidores personales
Tenía algo cool, limpio, simple y como de “punk rock”
Pero terminé dejándolo por un punto de dolor importante: PM2 tenía bugs en FreeBSD y era la herramienta que usaba para gestionar procesos; traté de reemplazarlo corriendo daemons con
rc.d, pero configurar logs era demasiado difícil; y el firewall exigía demasiada configuración manual para ajustarlo incluso a buenas prácticas de seguridad como qué hacer con ICMP, así que extrañé plantillas tipo los valores por defecto de UFWEstán implementadas con IPFW, no con PF
Mira la clave
firewall_typeenrc.conf: https://cgit.freebsd.org/src/tree/libexec/rc/rc.conf?id=8e08...Si quieres configurar fácilmente un firewall para una sola máquina, puedes usar
firewall_type=client, o si vas a hospedar algo,firewall_type=workstationEn este último caso,
firewall_myservicesyfirewall_allowservicescontrolan qué puertos se abren y qué redes/IP pueden accederPara un gateway NAT muy simple, basta con
firewall_type=simpleyfirewall_simple_(iif|inet|oif|onet)(_ipv6)?para definir los nombres de interfaz hacia el ISP y hacia la red interna, además de los rangos IPv4/IPv6Qué hace exactamente cada opción está implementado en
/etc/rc.firewall: https://cgit.freebsd.org/src/tree/libexec/rc/rc.firewall?id=...Para los logs de daemons
rc.d, a la manera Unix, si son mensajes simples puedes usarlogger(1), o redirigir a un archivo y manejar el tamaño connewsyslog(8)Para el firewall, recomiendo The Book of PF[0]
El PF de FreeBSD tiene diferencias de sintaxis respecto al pf de OpenBSD, pero alcanza perfectamente para entender cómo funciona un firewall y qué reglas te conviene usar
[0]: https://nostarch.com/book-of-pf-4e
Al principio es comodísimo, pero al mismo tiempo siempre fue software desagradable de usar, y jamás logré que la actualización de variables de entorno en despliegues funcionara como se suponía
Si se iba la luz, después del reinicio exigía correr manualmente
fscken el sistema de archivosCambiando un poco de tema, me pregunto cuál es hoy la distro Linux gratuita con el ciclo de soporte más largo
Durante un tiempo usé CentOS 7 para VM pequeñas, porque tenía actualizaciones de seguridad durante muchísimo tiempo y además minimizaba el riesgo de que una actualización rompiera algo
Por lo que vi buscando un poco, ahora Alma/Rocky parecen ser la mejor opción y ofrecen 10 años de soporte
Aunque me pregunto si realmente están bien mantenidas
Pero cuando pasa tanto tiempo, el ecosistema se desalinea muchísimo y mantener actualizadas las aplicaciones sobre ese OS se vuelve cada vez más difícil
Paquetes de infraestructura como
glibc, la combinación Python/Apache o GCC se van volviendo incompatibles poco a poco con stacks de aplicaciones modernosDespués, incluso subir de versión del sistema fue doloroso, no solo porque me había acorralado con una mezcla rara de paquetes, sino porque la ruta de actualización en sí misma siempre fue más bien de “mejor esfuerzo”
Creo que me rendí pasando de 6 a 7, y al final entendí que lo que yo necesitaba era Fedora
Con actualizaciones cada año o cada seis meses no tienes que pelear con los paquetes de la distro, la configuración se mantiene al día y funcionando, las actualizaciones mayores de la distro son fluidas y el downtime es mínimo
No pienso volver nunca más a una “distro de servidor”
Por ejemplo, puede sacar más rápido actualizaciones de kernel para corregir vulnerabilidades de escalación de privilegios
Rocky respondió mientras esperaba a que bajara el cambio desde RHEL ofreciendo un repositorio de seguridad opcional con mitigaciones para exploits
Viendo los incidentes recientes, ambas parecen estar bastante bien mantenidas
Todos los servicios van en contenedores, y al OS base lo dejas autoactualizarse tan seguido como haga falta
Yo elegí openSUSE MicroOS, y como actualiza y reinicia casi a diario, tengo bastante confianza en que el servidor está sano
Como las actualizaciones son atómicas, si algo se rompe y no quieres atenderlo en ese momento, solo aprietas el botón de rollback en Cockpit y lo ves después cuando tengas tiempo
Cuando finalmente llegue el upgrade, hay muchas probabilidades de que sea bastante doloroso
Creo que es mejor dar saltos de versión más pequeños y más frecuentes, en vez de un salto enorme cuando ya todo cambió tras muchos años
Si no te molesta registrarte con Red Hat, también está RHEL, que da acceso gratis a actualizaciones para hasta 10 máquinas por cuenta registrada
RHEL es sin duda la más estable entre las distros principales, y Alma y Rocky son esencialmente clones downstream de RHEL
Yo también estoy en ese mismo barco
Tengo dos servidores viejos que dejé abandonados “demasiado” tiempo, y ahora me da miedo tocarlos para actualizarlos
Pero viendo el show que están armando las distros Linux con lo de verificación/comprobación de edad, hasta estoy pensando en irme por completo
También probé Artix, pero se rompió tras reiniciar la semana pasada, y parece que algo había salido mal en una actualización anterior del kernel, así que hasta tuve que sacar un ISO de rescate
Por eso a ese equipo lo cambié a Devuan, aunque todavía no tengo un veredicto
No tengo grandes quejas, pero sigue en fase de burn-in
En la laptop corro Arch, pero la comunidad me parece un poco hostil por el tema de la censura, así que cuando tenga un fin de semana libre pienso formatearla e instalar otra cosa
No quiero drama político en mi software
Curiosamente, esta fue la primera vez que compré una laptop nueva y jamás arranqué Windows; instalé Linux directamente y todo “simplemente funcionó”
Justo ahora que estaba emocionado por usar Linux a fondo, me da tristeza ver que los grandes jugadores acepten etapas de erosión de privacidad como IA por todos lados, verificación/comprobación de edad y telemetría activada por defecto
Con todo eso, mi respuesta es simplemente “nope”
Ese servidor sigue corriendo hoy en el LTS más reciente
Ni siquiera sé si empezó en Ubuntu 4 o 6, pero todo fue bastante bien
Tal vez actualizar lentamente ayudó a evitar el sufrimiento de los early adopters
Hoy uso mucho más Debian
Con tantos ataques a la cadena de suministro, Debian Stable es una verdadera joya, y aunque haya algunos paquetes que necesites manejar aparte por requerir versiones más nuevas, me gusta ese espíritu de ingeniería sobria y anticuada
Ambas van muy rápido detrás de lo más nuevo, y la estabilidad no siempre es la prioridad máxima
Pero eso no significa que una rolling release siempre tenga que entregar la versión más nueva de todo
Llevo unos meses usando Void Linux: es rolling release, pero usa kernel LTS y permite elegir mainline también, y sus mantenedores se enfocan más en versiones estables de apps que en actualizaciones rápidas
También tengo algo de Debian donde hace falta, por ejemplo en Proxmox, VPS que no soportan Alpine o equipos del trabajo
También tengo algunos sistemas de prueba corriendo Chimera, pero no pienso depender mucho de eso hasta que salga una versión estable
Y también ando experimentando un poco con AerynOS
La vida útil de soporte por release es de menos de un año, así que si se te pasa la ventana de actualización, después actualizar se vuelve más difícil que en otras distros como Debian Stable
Me pasé a Debian y Ubuntu para servidores, pero cuando era más joven, a mediados de los 2000, estaba obsesionado con FreeBSD
En realidad pasaba más tiempo configurando y ajustando cosas que haciendo trabajo útil
En esa época era difícil encontrar servidores dedicados o VPS que ofrecieran la familia BSD, y creo que terminé instalándome en lugares como Panix.com
Antes de eso, también recuerdo que una empresa llamada 15MinuteServers, que creo que estaba en el antiguo NAC de Nueva Jersey, ofrecía BSD
Ya solo estoy divagando por nostalgia
Uso FreeBSD en Hetzner y OVH, y antes también probé Vultr
Y la mayoría de los proveedores de VM/VPS KVM permiten acceso a consola y montar ISOs propias, así que puedes instalar lo que quieras
Que fastfetch reporte más memoria usada de la real probablemente se deba a ZFS ARC
Igual que la page cache en Linux, se puede recuperar en cualquier momento, y distintas herramientas la etiquetan de forma diferente: https://www.linuxatemyram.com/
Recuerdo que cuando alguien me explicó Docker por primera vez, respondí: “ah, ¿te refieres a jails?”
Como explica el artículo, no son exactamente lo mismo
kqueuetambién fue una gran victoriaDe verdad, gracias a los desarrolladores de FreeBSD
Operé mi primera empresa durante 15 años sobre FreeBSD, y el uptime y la resiliencia fueron increíbles
Yo también tengo un servidor Ubuntu 16.04 que me da miedo actualizar
Ahora mismo lleva 1281 días de uptime, y a estas alturas hasta me da pena reiniciarlo
ddy luego arrancarlo en un emulador comoqemupara hacer un ensayo generalSolo ten cuidado si hay algo configurado para arrancar automáticamente y conectarse hacia afuera
¿No tienes respaldos?
En sistemas Debian/Ubuntu puedes configurar con bastante facilidad actualizaciones automáticas y reinicios regulares, y el mantenimiento manual queda reducido a upgrades de versión grandes