Installer Yacht avec Docker
Guide d'installation de Yacht, une interface web pour déployer vos conteneurs.
![Installer Yacht avec Docker](/content/images/size/w2000/2022/12/yacht.jpg)
Au sommaire :
- 1-Qu'est-ce que Yacht ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik
1-Qu'est-ce que Yacht ?
Yacht est un tableau de bord (dashboard) vous permettant de déployer des conteneurs OCI à partir d'une interface web au lieu du terminal.
Il est certes moins complet que Portainer mais il est simple et efficace.
Je le conseille aux débutants qui souhaitent se faire la main avec les conteneurs et qui sont allergiques au CLI.
Pour ma part, je suis 100% CLI mais j'utilise Yacht (et Portainer) pour pouvoir tester des conteneurs temporaires (grâce aux templates).
Pour ces personnes là, faites vous la main sur Yacht mais n'oubliez pas que le CLI, ce n'est pas une montagne mais une simple bosse.
2-Prérequis
Pour déployer Yacht, 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.
![](https://technonagib.fr/content/images/thumbnail/proxmox-7-4.png)
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.
![](https://technonagib.fr/content/images/2023/07/proxmox-1.png)
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.
![](https://technonagib.fr/content/images/2024/02/wp7718117.jpg)
Sécurisation et 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.
![](https://technonagib.fr/content/images/2023/06/traefik_letsencrypt-1.png)
Gestion des accès avec Authelia : Pour renforcer la sécurité, implémentez une solution de gestion des accès telle qu'Authelia. Ce guide vous fournira les étapes nécessaires :
![](https://technonagib.fr/content/images/2023/06/68747470733a2f2f7777772e61757468656c69612e636f6d2f696d616765732f61726368692e706e67.png)
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:
default:
driver: bridge
services:
yacht:
image: selfhostedpro/yacht
container_name: yacht
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8000:8000
restart: unless-stopped
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
- network : en bridge (l'adresse IP sera celle de la machine virtuelle ou du conteeur LXC)
- services : c'est là qu'il faudra ajouter les configurations de vos conteneurs
- image : nom du registry suivi du nom de l'application (selhostedpro/yacht)
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire (mieux vaut le nommer vous même)
- volumes : on donne accès au sock de Docker pour que yacht puisse intéragir avec les conteneurs
- ports : pour l'exemple, j'indique 9000 comme port d'écoute à l'extérieur du conteneur (8000 est celui du conteneur en interne)
- 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
- environment : correspond aux variables que j'ai indiqué plus haut
À l'intérieur du dossier "docker', déployez le conteneur yacht avec la commande suivante.
docker compose up -d
4-Configuration
Indiquez l'adresse IP de votre serveur hôte suivi de :9000 (ex : http://ip_adress:9000).
Voici les identifiants par défaut :
- user : admin@yacht.local
- password : pass
![](https://technonagib.fr/content/images/2022/12/image-58.png)
Sur la gauche, cliquez sur "Templates".
![](https://technonagib.fr/content/images/2022/12/image-59.png)
Et copiez-collez le template suivant et validez en cliquant sur "Submit" : https://raw.githubusercontent.com/SelfhostedPro/selfhosted_templates/master/Template/yacht.json
![](https://technonagib.fr/content/images/2022/12/image-61.png)
Cliquez sur le template.
![](https://technonagib.fr/content/images/2022/12/image-62.png)
Félicitation!!!! Vous allez pouvoir déployer des conteneurs OKLM parmi les 107 disponibles grâce à ce template!!!!
![](https://technonagib.fr/content/images/2022/12/image-63.png)
![](https://technonagib.fr/content/images/2022/12/oklm.gif)
On va effectuer un test avec l'application librespeed. tapez "librespeed dans la barre de recherche et cliquez sur "Deploy".
![](https://technonagib.fr/content/images/2022/12/image-65.png)
Cliquez sur "Continue".
![](https://technonagib.fr/content/images/2022/12/image-66.png)
Choisissez "bridge" comme réseau et le numéro de port que vous souhaitez pour "Host" (9002 dans l'exemple, 80 est celui du conteneur). Cliquez sur "Continue".
![](https://technonagib.fr/content/images/2022/12/image-70.png)
Indiquez le nom du dossier qui contiendra la configuration du conteneur en indiquant votre nom d'utilisateur (/home/user_name/librespeed).
![](https://technonagib.fr/content/images/2022/12/image-68.png)
Cliquez sur "Deploy".
![](https://technonagib.fr/content/images/2022/12/image-69.png)
Félicitation!!! Le conteneur est déployé. Cliquez sur "WebUI" pour accéder à l'interface web.
![](https://technonagib.fr/content/images/2022/12/image-72.png)
![](https://technonagib.fr/content/images/2022/12/image-71.png)
Ne vous extasiez pas, c'est un déploiement "finger in the noise" mais c'est un bon début pour ceux qui découvrent les conteneurs.
5-Exposer son instance avec Traefik et Authelia
Voici la configuration avec Traefik et Authelia.
Cochez la section ports si vous ne souhaitez pas accéder à l'application en local.
Ensuite, si vous avez suivi les guides de Traefik et Authelia, il vous faudra ajouter les labels adéquat pour pouvoir exposer l'application sur internet et activer l'authentification SFA ou MFA.
Comme d'habitude, suivez les parties 6 et 7 du guide de Traefik pour ouvrir les ports de votre box internet et ajouter les entrées DNS pour pouvoir accéder à l'application.
Et n'oubliez JAMAIS :
- D'éditer le fichier "configuration.yml" de Authelia.
- D'ajouter le nom de domaine de l'application
- De redémarrer l'application avec "docker compose restart authelia" pour que la modification soit prise en compte.
![](https://technonagib.fr/content/images/2023/06/image-97.png)
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
network:
web:
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/logs:/logs
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
labels:
- traefik.enable=true
- traefik.http.routers.traefik-dash.entrypoints=websecure
- traefik.http.routers.traefik-dash.rule=Host(`traefik.<domain_name>.ovh`)
- traefik.http.routers.traefik-dash.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
authelia:
image: authelia/authelia
container_name: authelia
volumes:
- ${APPDATA}/authelia:/config
networks:
- web
labels:
- traefik.enable=true
- traefik.http.routers.authelia.entrypoints=websecure
- traefik.http.routers.authelia.rule=Host(`authelia.<domain_name>`)
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
ports:
- 9091:9091
restart: unless-stopped
healthcheck:
disable: true
environment:
- TZ=${TZ}
yacht:
image: selfhostedpro/yacht
container_name: yacht
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8000:8000
restart: unless-stopped
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
labels:
- traefik.enable=true
- traefik.http.routers.yacht.entrypoints=websecure
- traefik.http.routers.yacht.rule=Host(`yacht.<votredomaine>.ovh`)
- traefik.http.routers.yacht.service=yacht-svc
- traefik.http.services.yacht-svc.loadbalancer.server.port=8000
- traefik.http.routers.yacht.tls.certresolver=letsencrypt
- 'traefik.http.routers.metube.middlewares=chain-authelia@file'
Sources :
![](https://www.digitalocean.com/_next/static/media/intro-to-cloud.d49bc5f7.jpeg)