674 - Como organizar tus contenedores Docker

674 - Como organizar tus contenedores Docker

#homepage es una eficiente y sencilla manera de tener organizados todos tus contenedores #docker en #linux y además mostrar información util

1:25
-3:15

Como ya te he comentado en alguna ocasión, esto de los Docker supuso una verdadera revolución para mi, y cada vez mas. Esto me ha permitido probar cientos de servicios, y no te exagero para nada. Pero no solo probar, sino también crearlos y ponerlos en funcionamiento. Algo, que en los últimos tiempos me está dando muchísima satisfacción y mas de una alegría personal, y espero que en breve también para todos. La cuestión es que como te digo son cientos de servicios. Y si bien algunos se van, hay muchos que se quedan y llega un momento, que esto se convierte en algo totalmente incontrolable. En este episodio te cuento como he conseguido organizar algunos de los contenedores Docker que actualmente tengo funcionando.

Como organizar tus contenedores Docker

Sobre las páginas de inicio

Cuando escuché por primera vez a Ángel de Ugeek hablar de las páginas de inicio, y en concreto de Home, pensé que era un exagerado, que para unos pocos servicios tampoco era necesario tener una página de inicio. Sin embargo, como de costumbre, Ángel iba muy por delante, y el ya se había enfrentado a algo a lo que yo tarde o temprano tendría que enfrentarme. Me refiero a tener que lidiar con decenas de servicios.

Uno de los servicios que ha propiciado el crecimiento del número de contenedores, es el proxy inverso. En mi caso, el proxy inverso que estoy utilizando es Traefik. Esto te permite tener decenas de servicios organizados y accesibles de una forma sencilla. Pero no solo eso, sino que también te permite tener un stack de servicios indispensables, que te facilitan la vida en el día a día.

Así, que poco a poco, esos pocos contenedores que daban vida a distintos servicios, fue creciendo hasta convertirse en decenas y llegar a ser algo mas de un centenar. Y como te puedes imaginar, un centenar ya es algo completamente ingobernable. Es necesario buscar una solución para llegar de forma sencilla y efectiva a cada uno de esos servicios.

En este sentido en el episodio 464 titulado una página de inicio para tus Docker, te hablé sobre distintas páginas de servicios creadas por distintos desarrolladores, que resolvían el problema de la organización de los contenedores Docker. Sin embargo, ninguna de ellas cubría todas mis necesidades, y por eso, decidí empezar a desarrollar la mía propia.

Sin embargo, como te vengo contando en los últimos episodios, estoy embarcado en un par de proyectos, que necesitan que esté enfocado, y no puedo dedicarle todo el tiempo que me gustaría a mi página de inicio. Y sobre todo después de lo que te conté en el episodio 673 sobre ocho servicios imprescindibles para desarrolladores, era necesario resolver, al menos temporalmente, lo de la página de inicio.

Mi propia página de inicio

No creas de ninguna de las maneras que voy a abandonar la idea de mi propia página de inicio, es algo que cuando esté mas liberado tengo que retomar, porque lo cierto es que ninguna de las páginas de inicio cubre todas mis necesidades.

Actualmente tengo implementada una en Rust y Vanilla JavaScript, que resuelve alguno de los problemas de los que adolecen otras, pero que realmente es bastante fea, hay que trabajarla mas. Sin embargo, con esas herramientas era hasta donde podía llegar.

Estoy convencido, que ahora con la llegada de React a mi stack tecnológico puedo resolver de forma brillante esto, y conseguir tener una página de inicio como a mi me gustaría. Sin embargo, como te decía, esto es algo que por el momento tengo que posponer.

Homepage

Después de auto convencerme de la necesidad de una página de inicio, y de la imposibilidad de hacerla en estos momentos, decidí buscar una solución que me permitiera tener una página de inicio, aunque no fuera la que yo quería. Y así, repasando el episodio 464 que te comentaba anteriormente llegué a Homepage

Homepage es una página de inicio que te permite tener acceso a tus servicios de una forma sencilla y efectiva. Pero además limpia y elegante, permitiéndote organizar todos esos servicios de acuerdo a tus necesidades. Es un dashboard de inicio autoalojado que permite organizar y visualizar información sobre tus servicios y aplicaciones autoalojadas en un solo lugar. Algunas de sus características clave incluyen:

  • Estático y rápido: No requiere backend dinámico, lo que mejora el rendimiento.
  • Altamente configurable: Se configura con archivos YAML o mediante etiquetas de Docker.
  • Integraciones con más de 100 servicios: Compatible con herramientas como Home Assistant, Plex, Sonarr, Radarr, y muchas más.
  • Modo proxy: Puede actuar como un proxy inverso para acceder a otras aplicaciones.
  • Multilenguaje: Soporte para varios idiomas.
  • Autenticación opcional: Se puede integrar con OAuth2 y otros métodos de autenticación.

Una de las características que mas me han interesando de Homepage es la integración con Docker.

Integración con Docker

Homepage tiene una excelente integración con Docker, lo que facilita la detección automática y administración de los contenedores en tu sistema. Aquí te explico cómo funciona y cómo puedes aprovecharlo.

Homepage puede descubrir automáticamente los contenedores en tu sistema y extraer información útil, como,

  • Nombre del contenedor
  • Estado (activo, detenido, reiniciando, etc.)
  • Uso de CPU y memoria
  • Etiquetas (labels) de Docker

La forma de integrar Homepage con Docker es muy sencilla y se puede hacer de varias maneras,

  • Descubrimiento automático a través de etiquetas (Docker Labels)
  • Monitorización del estado de los contenedores

Un ejemplo de configuración con las etiquetas sería el siguiente,

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # Permite la detección automática
      - ./config:/app/config  # Configuración de Homepage
    ports:
      - "3000:3000"
    restart: unless-stopped
    environment:
      - DOCKER_SOCKET=/var/run/docker.sock  # Permite la monitorización de contenedores

  app:
    image: nginx
    container_name: app-example
    labels:
      homepage.group: "Aplicaciones Web"
      homepage.name: "Servidor Nginx"
      homepage.icon: "nginx"
      homepage.href: "http://localhost:8080"
      homepage.widget.type: "ping"
      homepage.widget.url: "http://localhost:8080"

En este caso, Homepage detectará automáticamente app, lo categorizará en «Aplicaciones Web» y mostrará un widget de estado con un icono de Nginx.

Sin embargo, no es necesario el uso de etiquetas. En la declaración de tus servicios, dentro de tu configuración, puedes indicar el contenedor, y el te mostrará en tu página de inicio el estado de ese contenedor. Por ejemplo,

- Opengist:
    href: https://gist.tuservidor.es
    description: Opengist
    icon: opengist
    container: opengist
- Docmost:
    href: https://docmost.tuservidor.es
    description: Docmost
    icon: readthedocs
    container: docmost

Los widgets

La otra característica interesante son los widgets. En este caso Homepage, te ofrece dos tipos de widgets, los de información y los de servicio.

Los widgets de servicios, se utilizan para mostrar el estado de un servicio. Algunos de estos servicios son los siguientes,

Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli, Plex, Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent, Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentik, Proxmox y más

Mientras que los widgets de información, te permiten mostrar información útil, como,

  • Estadísticas del sistema (disco, CPU, memoria)
  • Clima a través de OpenWeatherMap o Open-Meteo
  • Barra de búsqueda web
  • Consola UniFi, Miradas y más
  • Búsqueda instantánea de «inicio rápido»

Conclusión

Como ves, esto de Homepage es otra auténtica madriguera de conejo de las que te vengo trayendo últimamente, y que pueden dar al traste con todo un fin de semana, con poco que te descuides.

Deja una respuesta

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