Cómo instalar YAL en Docker - Hub de enlaces minimalista autohospedado en Docker

YAL | Link Hub | Docker

YAL: Hub de enlaces minimalista, searchable y altamente personalizable en Docker

Directorio de enlaces simple. Búsqueda integrada. Branding personalizado. Go binario compilado. Non-root por defecto. Sitio estático. Accesible. Sin dependencias pesadas. Perfecto para homelabs.

¿Qué es YAL?


YAL es un hub de enlaces simple, minimalista y totalmente personalizable para mostrar y organizar enlaces con búsqueda integrada. A diferencia de Shlink (acortador de URLs), Linktree (SaaS pago), o Bookmark managers complejos, YAL es un binario Go ultra-ligero que genera un sitio estático para alojar tu colección de enlaces con branding personalizado, perfecta para startups, equipos, proyectos, o simplemente tu propia colección.

Características técnicas: Binario Go compilado estáticamente. Generación de sitio estático en memoria. Corre sin root por defecto. Búsqueda full-text integrada. Totalmente accesible (WCAG, screen readers). Soporte para iconos locales o remotos. Imágenes de fondo customizables. Interfaz responsive (desktop, tablet, móvil). Sin dependencias externas. Rápido: <100mb b="" correr="" en="" nas="" p="" para="" perfecto="" pi="" ram.="" raspberry="" sicos.="" vps="">

Filosofía simplista: Un link hub es exactamente eso: una página para mostrar/buscar enlaces. No necesita complejidad. YAL lo hace bien, rápido, y sin overhead.

Características principales

Búsqueda integrada

Busca enlaces en tiempo real. Full-text. Instantáneo.

Branding personalizado

Logo, colores, título, mascota, favicon. Tu marca.

Iconos customizables

Locales o remotos. PNG, JPG, SVG. Auto-inlining.

Imágenes de fondo

Fondo custom con CSS filters. Branding visual.

Responsive design

Desktop, tablet, móvil. Funciona en cualquier pantalla.

Accesible al 100%

WCAG. Screen readers. Navegación teclado.

Ultra ligero

Binario Go compilado. <100mb cero="" dependencias.="" p="" ram.="">

Sitio estático

Genera HTML en startup. Sirve vía web server.

Requisitos del sistema

  • Docker instalado
  • 50-100 MB RAM (muy ligero)
  • 50 MB - 1 GB espacio disco
  • Puerto 2024 (configurable)
  • Alpine Linux base (imagen mínima)
  • Binario Go compilado (sin runtime Python/Node)
Ideal para: Raspberry Pi, NAS, VPS $3, cualquier servidor. Extremadamente ligero.

Instalación con Docker Compose

Opción 1: Setup simple (demo)

cat > docker-compose.yml << 'EOF' version: '3.5' services: yal: image: timoreymann/yal:latest container_name: yal restart: unless-stopped ports: - "2024:2024" environment: - YAL_PORT=2024 - YAL_PAGE_TITLE=Mi Hub de Enlaces EOF docker compose up -d

Opción 2: Personalizado con volúmenes

version: '3.5' services: yal: image: timoreymann/yal:latest container_name: yal restart: unless-stopped ports: - "2024:2024" volumes: - ./config:/app/config - ./icons:/app/icons - ./images:/app/images environment: - YAL_PORT=2024 - YAL_PAGE_TITLE=Mi Hub de Enlaces - YAL_CONFIG_FOLDER=/app/config - YAL_IMAGES_FOLDER=/app/images - YAL_LOGO=logo - YAL_MASCOT=mascot

Iniciar

docker compose up -d

Acceder

http://localhost:2024

Configuración de enlaces

Estructura de archivos

# Crea carpetas: mkdir -p config icons images # config/links.yaml → tus enlaces # icons/ → iconos PNG/SVG locales # images/ → favicon, logo, mascota, fondo

Ejemplo: config/links.yaml

categories: - name: Trabajo links: - name: GitHub url: https://github.com icon: github - name: GitLab url: https://gitlab.com icon: gitlab - name: Desarrollo links: - name: Stack Overflow url: https://stackoverflow.com icon: stack-overflow

Variables de entorno clave

YAL_PAGE_TITLE=Título de tu página YAL_DESCRIPTION=Descripción breve YAL_LOGO=logo # Archivo en images/ YAL_MASCOT=mascot # Archivo en images/ YAL_BACKGROUND=background # Fondo (optional) YAL_BACKGROUND_FILTER=brightness(0.5) # CSS filter

Primeros pasos

1. Setup inicial

  1. Copia docker-compose.yml y crea estructura
  2. Genera carpetas: config, icons, images
  3. docker compose up -d

2. Crear archivo de configuración

  1. Crea config/links.yaml
  2. Estructura: categories con links dentro
  3. Cada link: name, url, icon

3. Agregar iconos (opcional)

  1. Coloca PNG/SVG en carpeta icons/
  2. Referencia en config como nombre sin extensión
  3. YAL auto-inlining en startup

4. Personalizar branding

  1. Coloca logo.png, mascot.png en images/
  2. Actualiza env vars YAL_LOGO, YAL_MASCOT
  3. Fondo: background.png + YAL_BACKGROUND_FILTER
  4. Reinicia: docker compose restart

5. Acceder y buscar

  1. Abre http://localhost:2024
  2. Ves tu hub con categorías y enlaces
  3. Búsqueda superior funciona en tiempo real

Casos de uso

  • Startups: Landing page con recursos útiles para equipo
  • Agencias: Hub interno con links a clientes, herramientas, docs
  • Comunidades: Página centralizada con enlaces a Discord, GitHub, Wiki
  • Personal branding: Tu hub de enlaces en tu dominio (como Linktree pero self-hosted)
  • Documentación: Portal centralizado con links a guías, APIs, resources
  • Homelabs: Dashboard de services: Plex, Jellyfin, Nextcloud, etc
  • Teams remotos: Hub interno compartido en red

HTTPS con Caddy

Caddyfile

links.tudominio.com { reverse_proxy localhost:2024 }

Acceso remoto

https://links.tudominio.com con HTTPS automático

SEO y sharing

Tu hub es una página estática con meta tags. Comparte en redes, funciona perfectamente.

Gestión y mantenimiento

Ver logs

docker logs -f yal

Editar configuración (sin reiniciar)

# Edita config/links.yaml docker compose restart yal # Regenera HTML en startup

Reiniciar

docker compose restart yal

Actualizar imagen

docker compose pull docker compose up -d

Generar página estática (CI/CD)

docker run --rm \ -v ./config:/app/config \ timoreymann/yal:ci yal > templated.html

Ver estadísticas

docker stats yal

Limpiar todo

docker compose down rm -rf config icons images

Comparativa con alternativas

vs Linktree

YAL gana: Self-hosted, gratuito, sin suscripción, branding total. Linktree gana: UI pulida, analytics, integraciones SaaS.

vs Shlink

YAL gana: Hub de enlaces, sitio bonito, búsqueda. Shlink gana: Acortador de URLs, analytics profundo, links tracking.

vs Bookmark managers

YAL gana: Simple, compartible, pública. Browsers ganan: Privados, sync automático.

vs Notion/Wiki

YAL gana: Ultra ligero, rápido, simple. Notion/Wiki ganan: Más potentes, colaboración.

Mejor para: Quien quiera un hub de enlaces simple, bonito, personalizable, y sin pagar suscripción. Perfect para homelabs, startups, equipos.

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.