Featured image of post Installation Homer avec Docker

Installation Homer avec Docker

Installation du tableau de bord Homer avec Docker

Introduction

Homer est un concentrateur de liens statique auto hébergé très simple à configurer avec un simple fichier en ‘yaml’. Il vous permettra d’accéder rapidement à tous vos services ou sites internet préférés. Je l’utilise pour accéder de façon conviviable à tous les containeurs de mon NAS. Il n’est pas le seule outil ans cette catégorie (Heimdall ou Dashy) mais il a l’avantage d’être très léger et très rapide.

Voici ce que vous pourrez obtenir après quelques minutes de configuration :

Mon tableau de bord ‘Homer’ pour accéder à tous mes containeurs

Pour cette installation j’utilise l’image officielle qui est présente ici : github.com/bastienwirtz/homer.

Nous utiliserons ‘swag’ (voir article installation de swag) pour accéder à notre serveur depuis l’extérieur. L’installation a été effectuée sur le Nas ‘OMV’, mais la procédure sera la même dans un container LXC ou LXD.

Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d’un utilisateur). J’ai créé aussi un répertoire qui contiendra toutes mes installations docker. Dans ce blog, j’utiliserais pour exemple le chemin /volume/docker.

Nous allons créer aussi le répertoire ‘homer’ en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui-ci n’existe pas.

cd /volume/docker
mkdir homer

Le fichier de configuration

Si vous souhaitez sécuriser le lancement de ‘homer‘, je vous engage à parcourir l’article sécuriser Docker.

Il est important de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.

Le fichier yml en détails. Il faut remplacer pour votre configuration :

  • port 8080 : numéro de port par défaut pour accéder à l’interface avec votre navigateur,
  • PUID et PGID : celui de votre utilisateur Docker (omdocker chez moi),
  • TZ : Votre zone de temps,
  • /volume/docker : Le chemin vers le répertoire de votre application.

Remarque : l est important que le GID et l’UID de l’utilisateur soit bien le même que celui du répertoire de configuration de ‘homer’, sinon il ne démarrera pas correctement; même si vous avez préciser lancer le containeur en root. Il ne faut pas non plus que les variables PGID et PUID ne soient présentent dans les variables d’environnements. Il faut seulement la ligne ‘user’ dans votre fichier de configuration.


    version: "2"
    services:
    homer:
        image: b4bz/homer:latest
        container_name: homer
        restart: on-failure:5
        volumes:
        - /volume/docker/homer/:/www/assets:rw
        ports:
        - 8080:8080
        user: 1003:100
        environment:
        - INIT_ASSETS=1
        - TZ=Europe/Paris 

Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

La pile ‘homer’

Donnez un nom à votre pile, par exemple ‘homer‘, puis déployer cotre containeur en cliquant en bas sur ‘Deploy the stack’.

Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Le container ‘homer’ est installé et est en fonctionnement.

Nous pouvons maintenant nous connectez à ‘homer’ localement avec l’URL http://IP_SERVER:8080 (l’adresse et le port est a adapté suivant votre fichier de configuration).

Configuration de Homer

La configuration du tableau de bord s’effectue via un simple fichier ‘yaml’. La syntaxe est assez simple à comprendre. Voici le fichier de configuration de mon tableau de bord. Je limite les deux premières entrées de chaque catégories. Le prinipe est le même pour chaque nouvelle entrée. Vous pouvez personnaliser le thème du tableau de bord en changeant le code ‘css’.

La variable ‘columns’ indique le nombre de colonnes de votre tableau de bord. J’ai uploader tous les logos dans le répertoire /volume/docker/homer/tools/.

Pour personnaliser les icones des catégories, il faut utiliser le code fontawesome au niveau de chaque ligne ‘icon’.

    # Homepage configuration
    # See https://fontawesome.com/v5/search for icons options
    title: "OMV Doker"
    subtitle: "Tableau de bord"
    logo: "logo.png"
    # icon: "fas fa-skull-crossbones" # Optional icon
    header: true
    footer: false
    columns: "4"
    connectivityCheck: true
    # Optional theme customization
    theme: default
    colors:
    light:
        highlight-primary: "#3367d6"
        highlight-secondary: "#4285f4"
        highlight-hover: "#5a95f5"
        background: "#f5f5f5"
        card-background: "#ffffff"
        text: "#363636"
        text-header: "#ffffff"
        text-title: "#303030"
        text-subtitle: "#424242"
        card-shadow: rgba(0, 0, 0, 0.1)
        link: "#3273dc"
        link-hover: "#363636"
    dark:
        highlight-primary: "#3367d6"
        highlight-secondary: "#4285f4"
        highlight-hover: "#5a95f5"
        background: "#131313"
        card-background: "#2b2b2b"
        text: "#eaeaea"
        text-header: "#ffffff"
        text-title: "#fafafa"
        text-subtitle: "#f5f5f5"
        card-shadow: rgba(0, 0, 0, 0.4)
        link: "#3273dc"
        link-hover: "#ffdd57"

    # Services
    # First level array represent a group.
    # Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).

    services:
    - name: "Media"
        icon: "fas fa-photo-film"
        items:
        - name: "Jellyfin"
            logo: "assets/tools/jellyfin-logo.png"
            subtitle: "Films & Series & Musics"
            tag: "app"
            url: "http://ipnas:8207"
            target: "_blank" # optional html a tag target attribute
        - name: "Calibre-Web"
            logo: "assets/tools/calibreweb-logo.png"
            subtitle: "Bandes dessinées"
            tag: "app"
            url: "http://ipnas:8202"
            target: "_blank"
    - name: "Internet"
        icon: "fas fa-network-wired"
        items:
        - name: "NextCloud"
            logo: "assets/tools/nextcloud-logo.png"
            subtitle: "Cloud personnel"
            tag: "app"
            url: "https://xxx.duckdns.org"
            target: "_blank" # optional html a tag target attribute
        - name: "Bitwarden"
            logo: "assets/tools/bitwarden-logo.png"
            subtitle: "Coffre fort numérique"
            tag: "app"
            url: "https://xxx.duckdns.org"
            target: "_blank"
    - name: "Monitoring"
        icon: "fas fa-heart-pulse"
        items:
        - name: "Open Media Vault"
        logo: "assets/tools/omv-logo.png"
        subtitle: "Tableau de bord du NAS"
        tag: "app"
        url: "http://ipnas:80"
        target: "_blank"   
        - name: "Portainer"
        logo: "assets/tools/portainer-logo.png"
        subtitle: "Gestion des containeurs"
        tag: "app"
        url: "http://ipnas:9000"
        target: "_blank"
    - name: "Stockage"
        icon: "fas fa-database"
        items:
        - name: "Duplicati"
        logo: "assets/tools/duplicati-logo.png"
        subtitle: "Sauvegarde distante"
        tag: "app"
        url: "http://ipnas:8200"
        target: "_blank"           
        - name: "phpMyAdmin"
        logo: "assets/tools/phpmyadmin-logo.png"
        subtitle: "Gestionnaire SGBD"
        tag: "app"
        url: "http://ipnas:8208"
        target: "_blank"
Généré avec Hugo
Thème Stack conçu par Jimmy