Installer Yacht avec Docker

Guide d'installation de Yacht, une interface web pour déployer vos conteneurs.

Installer Yacht avec Docker
yacht docker selfhosted

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.

Virtualiser Ubuntu Server 22.04 LTS sur Proxmox VE
Guide d’installation de Ubuntu Server 22.04 LTS sur Proxmox VE avec mes meilleurs réglages.

Si vous voulez gagner du temps, utilisez un template cloud-init.

Initialiser vos machines virtuelles avec Cloud-init sur Proxmox VE
Guide d’installation de Cloud-Init qui va vous permettre d’automatiser vos déploiements

Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.

Installer Docker
Guide d’installation de Docker.

Avoir suivi le guide d'installation de Synapse et Element.

Installer Synapse et Element avec Docker
Guide d’installation de Synapse et Element sous Docker.

Enfin, pour exposer et sécuriser l'application sur internet, il vous faudra déployer Traefik.

Installer Traefik avec Docker
Guide d’installation de 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 :

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.

Guide de déploiement de Traefik
Au sommaire : * Qu’est-ce que Traefik ? * Qu’est-ce qu’un reverse proxy ? * Prérequis * Acheter un nom de domaine * Configuration initiale de Traefik * Ouvrir les ports du routeur * Les adresse IP publiques partagés et dynamique * Déploiement de Traefik * Exposer une application 1-Qu’est…

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 :

How To Install and Use Docker Compose on Ubuntu 22.04 | DigitalOcean
Docker Compose is a tool that allows you to run multi-container application environments based on definitions set in a YAML file. It uses service definitions…