Installer Yacht avec Docker
Au sommaire :
- 1-Qu'est-ce que Yacht ?
- 2-Prérequis
- 3-Déploiement
- 4-Ajouter un template
- 5-Déployer un conteneur
- 6-Configuration 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
Il vous faudra une machine virtuelle sous Ubuntu Server 22.04 LTS.
Voici le guide pour ceux qui veulent repartir de zéro.
Si vous voulez gagner du temps, utilisez un template cloud-init.
Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.
Avoir suivi le guide d'installation de Synapse et Element.
Enfin, pour exposer et sécuriser l'application sur internet, il vous faudra déployer Traefik.
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.
version: "3.7"
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}
- version : 3.7 (il y a plus récent mais c'est pour l'exemple)
- 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
Tapez l'adresse IP de la machine virtuelle ou du conteneur LXC accompagné de son numéro de port (9000 pour l'exemple).
Vous devriez vous retrouver devant la page d'accueil.
Voici les identifiants par défaut :
- user : admin@yacht.local
- password : pass
4-Ajouter un template
Sur la gauche, cliquez sur "Templates".
Et copiez-collez le template suivant et validez en cliquant sur "Submit" : https://raw.githubusercontent.com/SelfhostedPro/selfhosted_templates/master/Template/yacht.json
Cliquez sur le template.
Félicitation!!!! Vous allez pouvoir déployer des conteneurs OKLM parmi les 107 disponibles grâce à ce template!!!!
5-Déploiement d'un conteneur via Yacht
On va effectuer un test avec l'application librespeed. tapez "librespeed dans la barre de recherche et cliquez sur "Deploy".
Cliquez sur "Continue".
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".
Indiquez le nom du dossier qui contiendra la configuration du conteneur en indiquant votre nom d'utilisateur (/home/user_name/librespeed).
Cliquez sur "Deploy".
Félicitation!!! Le conteneur est déployé. Cliquez sur "WebUI" pour accéder à l'interface web.
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.
6-Configuration Traefik
Si vous souhaitez exposer votre application sur l'internet public, suivez mon guide sur le reverse proxy Traefik.
On va ajouter les labels habituels ainsi que le middleware "basic-auth" pour protéger un minimum l’accès à l'application.
version: "3.9"
networks:
web:
services:
traefik:
container_name: traefik
image: traefik:latest
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.<votredomaine>.ovh`)
- traefik.http.routers.traefik-dash.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
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.yacht.middlewares=middlewares-basic-auth@file"
Enregistrez le fichier "compose.yml" et déployez les conteneurs.
docker compose create && docker start traefik yacht
Sources :