Self-hosting (I): el arte de alojarse a uno mismo.

El self-hosting consiste en tener una serie de servicios en servidores propios y mantenidos por uno mismo. Esto es extrapolable a las empresas, homelabs o gente que quiere cacharrear con aplicaciones y servicios web.

Esta web, de hecho, no se encuentra en los servidores oficiales de WordPress y en ninguna empresa de hosting convencional, sino que se encuentra en un servidor en mi homelab. Esto lo hace especialmente útil, ya que no dependo de ningún servicio externo para poder mantener mi página web, ni tengo que pagar suscripciones para tener mis servicios (más allá del gasto eléctrico que conlleva tener un servidor y de los servicios internos que quiera tener que sí puedan requerir una suscripción).

Pero claro, esto (si no estás metido en el mundillo) genera una serie de preguntas:

  • ¿Necesito un dispositivo por cada servicio que quiera instalar?
  • ¿Cómo puedo montar un servidor?
  • ¿Tengo que abrir puertos en mi router para tener acceso a mis servicios desde fuera de mi red LAN?
  • ¿Qué riesgos de seguridad conlleva?

Bien, pues en esta serie de artículos vamos a hablar un poco sobre el tema y responder a estas preguntas, así como a otras que puedan surgir. Este texto está destinado a nóveles en el tema, así que si ya conoces el asunto y quieres aportar, toda corrección e información adicional se agradece y es muy bien recibida.

El índice que vamos a seguir es:

  1. ¿Qué necesito a nivel de hardware para poder comenzar en el self-hosting?
  2. ¿Qué posibilidades a nivel de software existen para ello?
  3. Servicios disponibles de interés.
  4. Tengo mis servicios listos: ¿cómo accedo a ellos (LAN e Internet)?

Aunque en el artículo de hoy solamente nos centraremos en los puntos uno, dos y tres. El último queda para un segundo artículo donde, ya que el contenido en sí de dicho apartado da para un texto propio, y no quiero extender este innecesariamente.

1. ¿Qué necesito a nivel de hardware para poder comenzar en el self-hosting?

Cuando comencé en este tema, pensaba que para poder tener mi propia página web iba a necesitar un gran servidor con características técnicas gigantes, un consumo eléctrico desproporcionado y un servicio de red que pudiese aguantar incluso bombardeos. Sin embargo, cuando me puse a investigar (y a hablar con amigos que ya tenían experiencia en el tema, cosa que recomiendo encarecidamente), me di cuenta de que no se requiere de grandes dispositivos para llevarlo a cabo, basta con saber buscar correctamente.

Cabe mencionar, si no conoces esto, que un servidor web no es más que un ordenador (vamos a simplificar muchísimo), pero que en lugar de estar centrado para un uso personal con su interfaz de escritorio bonita y accesible para todo hijo de vecino, está pensado para otro tipo de aplicaciones y servicios (y en el 95 % de las ocasiones el acceso es través de una consola que da miedo y da sensación de estar haciendo algo ilegal).

Esto quiere decir que un portátil viejo que tengamos por casa y que ya no nos sirva para jugar al CSGO puede valernos perfectamente para este propósito. Es importante siempre tener en cuenta qué servicios vamos a querer desplegar para poder buscar equipamientos que se ajusten a nuestras necesidades. En mi caso, utilizo un Intel Nuc, un ordenador muy pequeñito y cuadrado (como el que tienen los médicos detrás de la pantalla en la consulta), pero que tiene la suficiente potencia como para mantener mis servicios online. Tienes un ejemplo en la Figura 1, y puedes leer más sobre ellos en este artículo de Profesional review.

Figura 1. Intel Nuc (imagen tomada de Profesional review).

Estos equipos pueden adquirirse de primera mano, aunque su precio es bastante alto; o bien (como hice yo) de segunda mano en tu plataforma de confianza (Wallapop, Leboncoin, Milanuncios…). Suelen rondar los 150 – 200 euros (dependiendo de modelos, características y año de fabricación), pero son una buena inversión para introducirse en esto. En este link puedes ver una búsqueda en Wallapop de estos dispositivos.

A la hora de comprarlo, es importante tener claras nuestras necesidades para no excedernos comprando un equipo que no vamos a exprimir (al menos por ahora) u otro que se nos quede corto. No hay ni que mencionar que puedes utilizar lo que quieras, pero sé consciente de lo que tienes entre manos.

2. ¿Qué posibilidades a nivel de software existen para ello?

¡Perfecto! Ya tienes tu nuevo servidor entre manos, ¿y ahora qué? Ay amigo, si yo te contara… Nos acabamos de meter en uno de los mayores berenjenales que hay, el Sistema Operativo (SO u OS) que vamos a utilizar (pista: olvídate de Windows, es hora de aprender Linux 😉).

A continuación, vamos a explicar un poco cómo se organizan estos servicios y qué posibilidades tenemos para desplegarlos.

2.1 – Enfoque tradicional.

El enfoque clásico: una máquina física (o varias). Todos lo que quieras montar requiere de una configuración excesiva y debes tener más cuidado que en un campo de minas: un paso en falso y todo saldrá por los aires, tú incluido. No lo recomiendo en absoluto si eres novato salvo si te gusta el riesgo o quieres acabar desquiciado en 15 minutos a la hora de la primera dependencia incumplida en tu sistema Debian.

Este planteamiento es tedioso porque requiere muchos conocimientos sobre el funcionamiento de un ordenador/servidor, qué necesitas para cada servicio que quieras desplegar y demás historias que te traerán más dolores de cabeza que otra cosa, aparte de que gastarás la mayor parte de tu tiempo buscando en foros que llevan sin respuestas más de 10 años. Por ello, no lo vamos a tener en cuenta como una opción de despliegue, aunque sí es importante saber que existe, ya que en esto se basan otras tecnologías y métodos.


2.2 – Virtualización.

¿Qué es esto? La virtualización se puede entender como una forma de dividir un mismo ordenador en muchos «espacios separados» que funcionan como si fueran máquinas independientes. Aquí es donde entra lo interesante, podemos tener más de una máquina (con sus respectivas aplicaciones) en un único dispositivo físico. Tenemos dos conceptos que hay que entender:

  • Contenedor: es un «recipiente» que contiene las aplicaciones y procesos que nosotros queremos, pero comparte la infraestructura (hardware y SO) con el sistema host. Podríamos hacer una analogía con un apartamento en un bloque de los mismos: cada apartamento tiene su proprio espacio privado, aunque se comparten los servicios e infraestructura comunes.
  • Máquina virtual (VM): un ordenador virtual dentro de otro. El hardware se simula y se puede instalar un sistema operativo propio. Una vez que estás dentro de la máquina, no sabes si es virtual o física (funciona como un ordenador más, aunque sus componentes no son tangibles, físicos). Para mantener la analogía podríamos equipararla a una nave industrial gigante donde se construyen varias casas: cada usuario tiene su propria casa (VM) con sus servicios e infraestructura propia, y piensan que su casa es única y tienen todo para ellos solos, cuando en realidad están compartiendo la infraestructura general (espacio, agua, electricidad).

Las máquinas virtuales proporcionan un espacio más privado y aislado que los contenedores, con la contraparte de un mayor gasto de recursos. Para la mayoría de los casos se van a utilizar contenedores, como iremos viendo a lo largo de este artículo.

Pero ¿qué opciones tenemos para virtualizar? Vamos a ello, coge papel y boli, que la cosa se pone curiosa.

2.2.1 – Docker

Docker es una plataforma que permite desarrollar, empaquetar y ejecutar aplicaciones dentro de contenedores, de forma que se comporten igual sin importar en qué máquina o sistema operativo se ejecuten.

En lugar de instalar manualmente todas las dependencias en cada entorno, Docker permite “empaquetar” la aplicación junto con todo lo que necesita —bibliotecas, configuraciones, herramientas del sistema, etc.— en un único bloque llamado imagen.
A partir de esa imagen se pueden crear múltiples contenedores, que son instancias ligeras y aisladas de la aplicación, listas para ejecutarse en segundos en cualquier equipo.

A diferencia de las máquinas virtuales, los contenedores no necesitan su propio sistema operativo, sino que comparten el del host. Esto hace que sean mucho más ligeros, arranquen más rápido y consuman menos recursos, lo que simplifica su gestión y permite ejecutar decenas de contenedores en la misma máquina sin problemas.

Docker está disponible para Windows, macOS y Linux. Su funcionamiento se apoya en el Docker Engine, el componente encargado de crear y administrar las imágenes y contenedores.
Además, Docker Desktop ofrece una interfaz gráfica que facilita su uso, especialmente para quienes prefieren evitar la línea de comandos (CLI).

Gracias a su sencillez, portabilidad y consistencia, Docker se ha convertido en una herramienta esencial en el desarrollo y despliegue de aplicaciones modernas, especialmente en entornos web y arquitecturas basadas en microservicios. Permite reproducir entornos con precisión, escalar recursos según la demanda y acelerar el ciclo de vida del software de desarrollo a producción.

Si quieres descubrir cómo instalar Docker en tu ordenador o empezar con ello, visita la página oficial.

2.2.2 – Proxmox

Proxmox VE (Virtual Environment) es un sistema operativo orientado a la virtualización completa de un equipo físico. Permite crear tanto máquinas virtuales (VMs) como contenedores (LXC), aprovechando al máximo los recursos del hardware y centralizando la gestión de todo el entorno.

Proxmox se basa en tecnologías de virtualización consolidadas:

  • KVM (Kernel-based Virtual Machine) para máquinas virtuales completas, que ofrecen un entorno totalmente aislado.
  • LXC (Linux Containers) para contenedores ligeros, que comparten el kernel del host, pero mantienen su propio espacio de ejecución.

Esta combinación permite crear entornos mixtos, por ejemplo, tener servicios ligeros en contenedores y otros más complejos o con distintos sistemas operativos en máquinas virtuales.

Figura 2. WebUI de un servidor Proxmox.

Proxmox ofrece una enorme flexibilidad, pero también exige cierta gestión manual.
Cada vez que creas una VM o contenedor debes asignarle recursos concretos (CPU, memoria, disco, red). Esto te da control total, aunque puede complicarse cuando gestionas muchos entornos:
si tienes 10 o 20 instancias, necesitas dedicar tiempo a su mantenimiento, actualizaciones y monitorización.

Además, Proxmox no permite reducir los recursos asignados a una máquina una vez creada —si te pasas con la configuración, normalmente tendrás que recrearla—.
Esto puede ser una molestia al ajustar cargas o redistribuir hardware.

Aun así, Proxmox es una herramienta excelente para aprender administración de sistemas y redes. Permite experimentar con conceptos avanzados como redes virtuales, almacenamiento compartido, snapshots y backups de VMs o incluso alta disponibilidad.

Una de las funciones más potentes de Proxmox es la posibilidad de crear un clúster, es decir, un grupo de servidores que trabajan como una sola unidad.
De esta forma puedes distribuir tus máquinas virtuales entre varios equipos físicos, moverlas de uno a otro sin apagarlas (migración en caliente) y equilibrar la carga de tus servicios.

Esta capacidad lo convierte en una solución semiprofesional muy interesante para laboratorios domésticos, entornos educativos o pequeñas infraestructuras de servidores.

Proxmox no está pensado para ser “tu sistema operativo del día a día”, sino el sistema operativo de tus sistemas operativos.
Es ideal si quieres aprender cómo funciona la virtualización de verdad o si te interesa montar un laboratorio casero para desplegar distintos servicios y probar configuraciones.

Yo lo utilicé durante más de dos años y lo recomiendo sin dudarlo: te obliga a entender cómo se gestiona el hardware, la red y los recursos a bajo nivel, y eso te da una base muy sólida para dar el salto a otras tecnologías de virtualización o incluso a entornos de orquestación en la nube.

Para más información, puedes visitar la página oficial de Proxmox.

2.2.3 – CasaOS

CasaOS es una plataforma diseñada para quienes quieren tener su propio servidor o nube personal en casa sin complicarse con configuraciones complejas ni comandos interminables. A diferencia de otras soluciones de virtualización o administración más técnicas, CasaOS busca que todo sea sencillo desde el primer momento. Se instala sobre un sistema Linux —ya sea en un mini PC, una Raspberry Pi o un servidor doméstico— y, una vez en marcha, se controla completamente desde el navegador, sin necesidad de utilizar la consola.

Lo interesante de CasaOS es que funciona sobre contenedores Docker, pero oculta toda la parte difícil tras una interfaz visual muy cuidada. Desde su panel web puedes instalar aplicaciones con apenas unos clics gracias a su “App Store” integrada: Nextcloud para tener tu propio almacenamiento en la nube, Jellyfin o Plex para multimedia, Pi-Hole para filtrar publicidad, y muchas más. En lugar de tener que crear manualmente cada contenedor o configurar ficheros docker-compose, CasaOS se encarga de hacerlo todo por ti, y lo presenta de forma ordenada y amigable.

Figura 3. Ejemplo de la WebUI de CasaOS.

Esa simplicidad tiene un precio: aunque CasaOS está pensado para hacerte la vida más fácil, sacrifica parte de la flexibilidad que tendrías si gestionaras los contenedores directamente. No es una herramienta pensada para montar infraestructuras complejas ni servidores empresariales, sino para usuarios domésticos o entusiastas que quieren aprender o centralizar servicios en casa sin profundizar demasiado en la administración del sistema. A medida que instalas más aplicaciones o gestionas grandes volúmenes de datos, es posible que empieces a notar sus límites: no ofrece el mismo control granular sobre redes, almacenamiento o seguridad que un entorno más técnico como Proxmox.

Sin embargo, esa es precisamente su virtud. CasaOS democratiza el self-hosting y permite a cualquiera montar su propia nube o servidor multimedia en pocos minutos. Es ideal para tener en casa un espacio donde guardar archivos, compartir documentos, hacer copias de seguridad o incluso experimentar con automatización doméstica. No necesitas conocimientos avanzados ni experiencia previa con Linux: todo lo esencial está a un clic de distancia.

En resumen, CasaOS es una puerta de entrada perfecta al mundo de los servidores personales. No pretende competir con plataformas profesionales, sino ofrecer una alternativa accesible y práctica para quienes quieren autonomía y privacidad sin renunciar a la comodidad. Si Proxmox es para los que disfrutan ajustando cada parámetro de su infraestructura y Docker es para quienes construyen desde cero, CasaOS es para quienes solo quieren que las cosas funcionen bien desde el principio, y que su servidor sea tan sencillo de usar como abrir una nueva pestaña del navegador.

Puedes obtener más información de CasaOS así como probar su Live Demo en su página oficial.

2.3 – Entonces, ¿qué uso?

Como para casi todo en la vida, no hay una respuesta 100% verdadera y que funcione igual para todo el mundo. Por lo tanto, debes elegir aquello que más te encaje y te llame la atención. Si te ves con ganas de aprender cómo es la administración de sistemas y redes, dale una oportunidad a Proxmox. Aprenderás mucho y en poco tiempo.

Por otro lado, si quieres algo más sencillo, prueba Docker o CasaOS. Una buena recomendación es empezar primero con Docker en tu ordenador, para entender su funcionamiento (tienen tutoriales incluidos que te ayudan a esto). Una vez que ya lo manejes, te aconsejo pasar a CasaOS, ya que la gestión desde una interfaz web es más cómoda y sencilla que tener que acceder siempre a una máquina a través de VPN o escritorio remoto.

Por lo tanto, elige lo que más te guste y lánzate al teclado. Cualquier opción es buena, y si te equivocas, lo máximo que habrás perdido es tiempo (y esperemos que no ningún dato importante). El saber no ocupa espacio, y probar diferentes tecnologías es un buen método de adquirir conocimientos y elegir mejor en futuras ocasiones. ¡A picar!

3 – ¿Qué puedo hacer una vez que mi servidor funciona?

Si ya has tomado la decisión sobre qué hardware y software usar para tu servidor, ahora estarás frente a la pantalla pensando qué puedes hacer. Bien, pues hay una gran cantidad de aplicaciones y servicios web que puedes implementar y que te harán la vida más fácil. A continuación te listo unos cuantos:

  • Bitwarden: un servidor del famoso gestor de contraseñas de código abierto. Es verdad que para poder utilizar algunas de sus funciones avanzadas necesitarás estar suscrito, pero su precio es de 10$ al año, lo que lo hace extremadamente accesible a todo el mundo.
    Alojar tus contraseñas en tu propio servidor es mucho más seguro que tenerlas en los de la empresa. Aunque el contenido de tu caja fuerte siempre está encriptado (incluyendo dentro del servidor), siempre es mejor tenerlas a mano que en otro sitio.
  • Nextcloud: una nube personal. A parte de ficheros, puedes tener centralizados tus calendarios, contactos, notas y mucho más completamente gratis. Su gran compatibilidad con sistemas operativos como Linux, Android o iOS hacen que puedas tener todo sincronizado y con el espacio de almacenamiento que quieras meterle al servidor. Muy útil y recomendado.
  • PiHole: un sumidero DNS para tu red local. Puedes hacer que aplicaciones como YouTube o de tu móvil no muestren anuncios, ya que los dominios a los que se conectan para obtener la publicidad son bloqueados por PiHole, así como otros que puedan ser inseguros. Muy personalizable y ajustable, pudiendo tener la configuración que más te interese.
  • WordPress: la famosa aplicación para gestión de páginas web. En efecto, esta misma página que estás leyendo está alojada en un contenedor dentro de mi CasaOS. Aunque es cierto que los plug-in y contenido dentro siguen funcionando igual (algunos son de pago), la instancia de WordPress es completamente gratuita y de código abierto. Esto hace que puedas tener una página web disponible en muy pocos pasos, y tan personalizable como horas quieras invertir en ella.

Estos han sido algunos ejemplos de servicios y aplicaciones autoalojados, aunque hay una infinidad. A lo mejor esta página puede serte interesante.

Conclusión

Después de haber visto toda esta información, tendrás que darle muchas vueltas a todo: qué dispositivo usar, cómo virtualizar tus aplicaciones y qué quieres desplegar. Pues bien, tienes todo el tiempo del mundo para pensar —busca lo que más se adapte a tus necesidades y explora qué opciones te proporciona—, que mientras tanto iré preparando un artículo sobre cómo exponer tus servicios en Internet sin poner en riesgo tu red local y todos tus datos. Pero eso se queda para el próximo capítulo, ¡73s!

Como siempre, todo comentario corrigiendo posibles errores o añadiendo información valiosa es más que bienvenido. Para cualquier duda o problema, puedes contactarme a través del formulario en Contacto o en la caja de comentarios que encontrarás más abajo.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.