Installer Homarr avec Docker
Au sommaire :
- 1-Qu'est-ce que Homarr ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik
1-Qu'est-ce que Homarr ?
Homarr est un frontend qui va réunir toutes vos applications en une seule page et les rendre accessible de manière simple et efficace.
2-Prérequis
Pour déployer Homarr, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.
Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.
Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.
Exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.
3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
# Docker Bridge Network
default:
driver: bridge
services:
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
volumes:
- ${APPDATA}/homarr/configs:/app/data/configs
- ${APPDATA}/homarr/icons:/app/public/icons
# ports:
# - 7575:7575
restart: unless-stopped
Pour les options communes :
- network : en bridge (l'adresse IP sera celle de la machine virtuelle ou du conteneur LXC)
- services : c'est là qu'il faudra ajouter les configurations de vos conteneurs
- image : nom du registry suivi du nom de l'application (ghcr.io/ajnart/app_name)
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire (mieux vaut le nommer vous même)
- environment : il y a les variables de base (PUID, PGID, TZ) qui correspondent à l'utilisateur, le groupe et le fuseau horaire.
- volumes : variable ${APPDATA) (/home/user_name/appdata) suivi du nom de l'application (/app_name)
- ports : le port d'écoute pour accéder à l'interface web (désactivé en local)
- restart : unless-stopped par défaut. Le daemon de Docker redémarrera automatiquement le conteneur sauf si vous l'arretez, il faudra le démarrer manuellement
Téléchargez l'image et déployez le conteneur.
docker compose pull && docker compose create
Puis démarrez le conteneur.
docker start homarr
4-Configuration
Une fois l'application démarrée, tapez l'adresse IP de votre machine virtuelle suivi du numéro de port (7575).
Créez un identifiant et un mot de passe puis cliquez sur "Continue".
Cliquez sur "Go to your board".
Ensuite, entrez en mode "édition" en cliquant sur "Enter Edit Mode".
Cliquez sur "Add a tile".
Tapez le nom de l'application dans "App name" et il y a de grandes chances qu'il trouve le logo. Ensuite, indiquez l'adresse interne et externe de l'application puis cliquez sur "Save".
L'application apparaît bien. Vous allez pouvoir ajouter/supprimer ce que bon vous semble.
Mais Homarr ne se limite pas seulement à ajouter vos applications. Vous allez pouvoir ajouter des catégories mais aussi des widgets.
Voici un exemple de mon instance (il va falloir que je fasse le ménage, ça date de 2023 au moins).
5-Exposer son instance avec Traefik
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
volumes:
- ${APPDATA}/homarr/configs:/app/data/configs
- ${APPDATA}/homarr/icons:/app/public/icons
networks:
- web
ports:
- 7575:7575
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.homarr.entrypoints=websecure
- traefik.http.routers.homarr.tls.certresolver=letsencrypt
- traefik.http.routers.homarr.rule=Host(`homarr.<domain_name>`)
- traefik.http.routers.homarr.service=homarr-svc
- traefik.http.services.homarr-svc.loadbalancer.server.port=7575