Gabriel Cachadiña

Dashboard personalizado usando Dashy

· Gabriel Cachadiña

Actualmente corro muchas aplicaciones en mi homelab. Estas aplicaciones se encuentran distintos dispositivos y cada una se encuentra en un puerto o URL distinta.

Una vez visitada en el navegador tiendo a guardarla como favoritos y accedo a ella de esa forma, pero, esto supone los siguientes problemas:

Solución

En mi caso he decidido hacer la instalación de Dashy directamente en mi configuración de NixOS de mi ordenador. El lector se podría preguntar si no sería mejor hacerla sobre alguno de mis servidores y es cierto, pero, eso supondría que para acceder al dashboard necesitaría una conexión a internet y más importante que eso, que el servidor que corre la instancia de Dashy no haya dejado de funcionar. En el momento de escribir este artículo estoy migrando todos mis servidores a NixOS, así que, en un futuro, uno de mis servidores también correrá su propia instancia de Dashy, para que equipos que no pueden correr Dashy , principalmente mi teléfono; o equipos no propios puedan acceder a dashy, como el ordenador de mi empresa; puedan acceder a mi dashboard. De todas formas la configuración de Dashy que aquí se muestra es completamente extrapolable a cualquier sistema UNIX sobre el que se quiera correr una instancia de Dashy, siempre que sea capaz de usar Docker.

Instalación

Para realizar la instalación recomendada desde docker se usará el docker compose que se muestra en el siguiente link, pero en mi caso adaptado para correr dentro de NixOS resultando en:

 1{
 2  virtualisation.docker.enable = true;
 3  virtualisation.oci-containers = {
 4    backend = "docker";
 5    containers.dashy = {
 6      image = "lissy93/dashy";
 7      environment = {
 8        NODE_ENV = "production";
 9        UID = "1000";
10        GID = "1000";
11      };
12      volumes = [
13        "${dashyConfig}:/app/user-data/conf.yml"
14      ];
15      ports = [
16        "127.0.0.1:9000:8080"
17      ];
18      autoStart = true;
19    };
20  };
21}

Configuración

Para personalizar la instancia se deberá configurar el archivo conf.yml. En mi caso paso la información de este archivo como una variable de mi archivo de configuración de NixOS. A continuación se presenta un pequeño extracto de esta configuración (completa en mi repositorio):

 1  dashyConfig = pkgs.writeText "dashy-config.yml" ''
 2appConfig:
 3  theme: one-dark
 4  layout: horizontal
 5  iconSize: medium
 6  language: en
 7
 8  hideHeading: true
 9  hideNav: true
10  hideSearch: true
11  hideSettings: true
12  hideFooter: true
13  disableConfiguration: true
14  
15pageInfo:
16  title: Dashboard 
17  description: Blessed is the mind too small for doubt.
18
19sections:
20  - name: Search
21    widgets:
22      - type: custom-search
23        options:
24          placeholder: Search for something using the buttons below
25          openingMethod: newtab
26          engines:
27            - title: SearXNG
28              url: https://searxng.gabrielcachadina.com/search?q=
29            - title: Youtube
30              url: https://www.youtube.com/results?search_query=
31
32  - name: Linode
33    items:
34      - title: Website
35        icon: si-hugo
36        url: https://gabrielcachadina.com
37        statusCheck: true
38      - title: Calendar
39        icon: si-protoncalendar
40        url: https://calendario.gabrielcachadina.com
41        statusCheck: true
42  - name: Server-Main
43    items:
44      - title: Gitea
45        icon: si-gitea
46        url: https://gitea.gabrielcachadina.com
47  - name: Useful Websites 
48    items:
49      - title: Subdomain Finder
50        url: https://subdomainfinder.c99.nl/
51
52  '';
53in

Conclusión

Desde que utilizo Dashy como punto de entrada a mis servicios, el acceso a mi homelab se ha vuelto mucho más rápido y predecible. Ya no dependo de recordar IPs, puertos o URLs concretas, ni de tener los favoritos sincronizados entre navegadores o dispositivos. Todo está centralizado en un único lugar, versionado y reproducible gracias a NixOS.

Este tipo de herramientas no elimina la complejidad de un homelab, pero sí reduce la fricción diaria al interactuar con él. En un entorno con múltiples servicios e instancias, contar con un dashboard simple, declarativo y bajo control propio acaba siendo más una necesidad que un extra.

Dashy_Dashboard

#self-hosted

Reply to this post by email ↪